Ejemplo n.º 1
0
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")
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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")