def submit_edit_sighting(sighting_id): if not g.user: flash("Access unauthorized.", "danger") return redirect("/user/<int:user_id>") sighting = Sighting.query.get_or_404(sighting_id) form = EditSightingForm(obj=sighting) user = User.query.get_or_404(g.user.id) if form.validate_on_submit(): sighting.sighting_num = form.sighting_num.data sighting.date = form.date.data sighting.time = form.time.data sighting.latitude = form.latitude.data sighting.longitude = form.longitude.data sighting.species = form.species.data sighting.individuals = form.individuals.data user_id = f"{user.id}" sighting = Sighting(sighting_num=sighting.sighting_num, date=sighting.date, time=sighting.time, latitude=sighting.latitude, longitude=sighting.longitude, species=sighting.species, individuals=sighting.individuals, user_id=user_id) db.session.commit() return redirect(f"/user/{user.id}/all")
def submit_sighting(user_id): if not g.user: flash("Access unauthorized.", "danger") return redirect("/user/<int:user_id>") TO_EMAILS = [('*****@*****.**', 'Megan McManus'), ('*****@*****.**', 'Megan McManus2'), ('*****@*****.**', 'Neil Roper'), ('*****@*****.**', 'Katie Douglas')] user = User.query.get_or_404(user_id) form = AddSightingForm() if form.validate_on_submit(): sighting_num = form.sighting_num.data date = form.date.data time = form.time.data latitude = form.latitude.data longitude = form.longitude.data species = form.species.data individuals = form.individuals.data user_id = f"{user.id}" sighting = Sighting(sighting_num=sighting_num, date=date, time=time, latitude=latitude, longitude=longitude, species=species, individuals=individuals, user_id=user_id) db.session.add(sighting) db.session.commit() message = Mail( from_email='*****@*****.**', to_emails=TO_EMAILS, is_multiple=True, subject=f"New Sighting Submitted by {sighting.user.user_name}", html_content= f"At {sighting.time}, {sighting.user.user_name} observed a {sighting.species} at {sighting.latitude}N, {sighting.longitude}W - Date {sighting.date}" ) try: sg = SendGridAPIClient(os.environ.get('SENDGRID_API_KEY')) response = sg.send(message) print(response.status_code) print(response.body) print(response.headers) except Exception as e: print(e.message) return redirect(f"/user/{user.id}/all") return render_template('new_sighting.html', form=form, user=user)
async def sightings_post(request: Request) -> Response: """ --- summary: Post device sighting description: This endpoint allows users to store sightings of devices on the local network tags: - Sightings produces: - application/json parameters: - in: body name: body schema: type: object properties: timestamp: type: integer format: int64 alias: type: string description: A sighting to store in the KnockKnock backend required: true responses: "200": description: Sighting has been stored successfully, return sighting as it was persisted "400": description: Invalid ``from`` parameter or unable to parse the request body """ # Try to parse the Request body. try: data = await request.json() sighting = Sighting(alias=data["alias"], last_activity_timestamp=data["timestamp"]) except BaseException as e: return Response(status=400, reason=f"Unable to parse body ({e})") session.add(sighting) session.commit() records = session.query(Sighting).filter( Sighting.id == session.query(func.max(Sighting.id))) return Response(status=200, body=encode(records[0].to_json()), content_type="application/json")