예제 #1
0
def trace(id):
    request.get_data()
    identifier = request.json["identifier"]
    duration = request.json["duration"]

    user_to_trace = User.query.filter(
        or_(
            User.fiscalcode.like(identifier),
            User.email.like(identifier),
            User.phonenumber.like(identifier),
        )
    ).first()

    if user_to_trace:
        authority = HealthAuthority.query.filter_by(id=id).first()

        if user_to_trace.marked:
            contacts = trace_contacts(user_to_trace, duration, send_email=False)
            return Response(dumps(contacts), status=200, mimetype="application/json")
        else:
            mark_helper(authority, user_to_trace, duration, datetime.utcnow())
            return Response(
                [],
                status=200,
                mimetype="application/json",
            )
    else:
        return Response(status=404, mimetype="application/json")
예제 #2
0
def search():
    request.get_data()
    req_data = request.args

    query = db.session.query(HealthAuthority)
    for attr, value in req_data.items():
        query = query.filter(getattr(HealthAuthority, attr) == value)

    authorities = dumps(
        [
            authorities.serialize(
                [
                    "id",
                    "name",
                    "email",
                    "fiscalcode",
                    "phonenumber",
                    "country",
                    "state",
                    "city",
                    "lat",
                    "lon",
                    "is_registered",
                ]
            )
            for authorities in query.all()
        ]
    )

    return Response(authorities, status=200, mimetype="application/json")
예제 #3
0
def post():
    request.get_data()
    authority = request.json

    new_authority = (
        db.session.query(HealthAuthority.id).filter_by(email=authority["email"]).first()
    )
    if not new_authority:
        new_authority = HealthAuthority(
            email=authority["email"],
            name=authority["name"],
            password=authority["password"],
            phonenumber=authority["phonenumber"],
            country=authority["country"],
            state=authority["state"],
            city=authority["city"],
            lat=authority["lat"],
            lon=authority["lon"],
        )

        db.session.add(new_authority)
        db.session.commit()
        return Response(status=201)

    return Response(status=409)
예제 #4
0
def patch(id):
    operator = db.session.query(Operator).filter_by(id=id).first()

    if operator:
        request.get_data()
        new_operator = request.json

        for k, v in new_operator.items():
            setattr(operator, k, v)

        db.session.commit()
        return Response(status=204)

    return Response(status=404)
예제 #5
0
def patch(id):
    user = db.session.query(User).filter_by(id=id).first()

    if user:
        request.get_data()
        new_user = request.json

        for k, v in new_user.items():
            setattr(user, k, v)

        db.session.commit()
        return Response(status=204)

    return Response(status=404)
예제 #6
0
def put():
    request.get_data()
    user = request.json

    user_db = db.session.query(User.id).filter_by(email=user["email"]).first()
    user_db = User() if not user_db else user_db

    for k, v in user.items():
        setattr(user_db, k, v)

    user_db.update_avatar_seed()
    db.session.add(user_db)
    db.session.commit()
    return Response(status=204)
예제 #7
0
def login():
    request.get_data()
    user = request.json

    email = user["email"]
    password = user["password"]

    user = db.session.query(HealthAuthority).filter_by(email=email).first()
    if user:
        message = "Success" if user.verify_password(password) else "Wrong credentials"
        return Response(
            dumps({"message": message}), status=200, mimetype="application/json"
        )
    else:
        return Response(
            dumps({"message": "Authority not found"}),
            status=404,
            mimetype="application/json",
        )
예제 #8
0
def search():
    request.get_data()
    req_data = request.args

    query = db.session.query(Operator)
    for attr, value in req_data.items():
        query = query.filter(getattr(Operator, attr) == value)

    operators = dumps([
        operator.serialize([
            "id",
            "firstname",
            "lastname",
            "email",
            "fiscalcode",
            "phonenumber",
            "birthdate",
            "is_registered",
        ]) for operator in query.all()
    ])

    return Response(operators, status=200, mimetype="application/json")
예제 #9
0
def post():
    request.get_data()
    operator = request.json

    new_operator = (db.session.query(
        Operator.id).filter_by(email=operator["email"]).first())
    if not new_operator:
        new_operator = Operator(
            firstname=operator["firstname"],
            lastname=operator["lastname"],
            email=operator["email"],
            password=operator["password"],
            birthdate=datetime.strptime(operator["birthdate"], "%Y-%m-%d"),
            phonenumber=operator["phonenumber"],
            fiscalcode=operator["fiscalcode"],
        )

        db.session.add(new_operator)
        db.session.commit()
        return Response(status=201)

    return Response(status=409)
예제 #10
0
def post():
    request.get_data()
    user = request.json

    new_user = db.session.query(User.id).filter_by(email=user["email"]).first()
    if not new_user:
        new_user = User(
            firstname=user["firstname"],
            lastname=user["lastname"],
            email=user["email"],
            password=user["password"],
            birthdate=datetime.strptime(user["birthdate"], "%Y-%m-%d"),
            phonenumber=user["phonenumber"],
            fiscalcode=user["fiscalcode"],
        )

        new_user.update_avatar_seed()
        db.session.add(new_user)
        db.session.commit()
        return Response(status=201)

    return Response(status=409)
예제 #11
0
def mark(id):
    request.get_data()
    identifier = request.json["identifier"]
    duration = request.json["duration"]

    user_to_mark = User.query.filter(
        or_(
            User.fiscalcode.like(identifier),
            User.email.like(identifier),
            User.phonenumber.like(identifier),
        )
    ).first()

    if user_to_mark:
        authority = HealthAuthority.query.filter_by(id=id).first()
        # ok 200 Todo check if marked else "already", 200

        if user_to_mark.marked:
            pass
        else:
            mark_helper(authority, user_to_mark, duration, datetime.utcnow())
            return Response(status=204, mimetype="application/json")
    else:
        return Response(status=404, mimetype="application/json")
예제 #12
0
def search():
    request.get_data()
    req_data = request.args

    query = db.session.query(User)
    for attr, value in req_data.items():
        query = query.filter(func.lower(getattr(User, attr)) == value.lower())

    users = dumps([
        user.serialize([
            "id",
            "avatar_id",
            "firstname",
            "lastname",
            "email",
            "fiscalcode",
            "phonenumber",
            "birthdate",
            "marked",
            "is_registered",
        ]) for user in query.all()
    ])

    return Response(users, status=200, mimetype="application/json")