Exemple #1
0
def set_photo():
    params = assert_data_has_keys(request, {'email', 'password', 'patient_id'}, data_type='form')
    User.authenticate(params['email'], params['password'])
    if 'photo' not in request.files:
        raise WebError('photo must be provided', 400)
    base_filename = store_photo(request.files['photo'])
    set_patient_filename(params['patient_id'], base_filename)
    return jsonify({'message': 'ok'})
def search(_admin_user):
    params = assert_data_has_keys(
        request, {'given_name', 'surname', 'country', 'hometown'})
    patient = [
        Patient.from_db_row(r).to_dict()
        for r in search_patients(params['given_name'], params['surname'],
                                 params['country'], params['hometown'])
    ]
    return jsonify({'patient': patient})
Exemple #3
0
def get_photo():
    params = assert_data_has_keys(request, {'email', 'password', 'patient_id'})
    User.authenticate(params['email'], params['password'])
    base_filename = photo_filename_by_patient(params['patient_id'])
    if base_filename is None:
        raise WebError('Patient photo unavailable', 404)
    filename = retrieve_photo(base_filename)
    if filename is None:
        raise WebError('Patient photo unavailable', 404)
    return send_file(filename)
Exemple #4
0
def sync():
    params = assert_data_has_keys(request, {'email', 'password'}, data_type='form')
    User.authenticate(params['email'], params['password'])
    if 'db' not in request.files:
        raise WebError('db must be provided', 400)

    synchronizer = DbSynchronizer(request.files['db'])
    if not synchronizer.prepare_sync():
        raise WebError("Synchronization failed", 500)

    synchronizer.execute_server_side_sql()
    return jsonify({'to_execute': synchronizer.get_client_sql()})
Exemple #5
0
def create_user(_admin_user):
    params = assert_data_has_keys(request, {'email', 'password', 'name', 'role'})
    if params['role'] not in ['admin', 'provider']:
        raise WebError('Role must be either "admin" or "provider"', 400)

    id = str(uuid.uuid4())
    language = params.get('language', 'en')
    name_str = LanguageString(id=str(uuid.uuid4()), content_by_language={language: params['name']})
    hashed_password = bcrypt.hashpw(params['password'].encode(), bcrypt.gensalt()).decode()
    user = User(id, name_str, params['role'], params['email'], hashed_password)
    try:
        add_user(user)
    except psycopg2.errors.UniqueViolation:
        raise WebError('User already exists', 409)

    all_users = [User.from_db_row(r).to_dict() for r in all_user_data()]
    return jsonify({'users': all_users})
def change_password(_admin_user):
    params = assert_data_has_keys(request, {'email', 'new_password'})
    user = User.from_db_row(user_data_by_email(params['email']))
    user.reset_password(params['new_password'])
    return jsonify({'message': 'ok'})
def delete_user(_admin_user):
    params = assert_data_has_keys(request, {'email'})
    user = User.from_db_row(user_data_by_email(params['email']))
    delete_user_by_id(user.id)
    all_users = [User.from_db_row(r).to_dict() for r in all_user_data()]
    return jsonify({'users': all_users})
def login():
    params = assert_data_has_keys(request, {'email', 'password'})
    user = User.authenticate(params['email'], params['password'])
    token = user.create_token()
    return jsonify({'token': token})
def export_patient_data(_admin_user):
    params = assert_data_has_keys(request, {'patient_id'})
    export_filename = single_patient_export(params['patient_id'])
    return send_file(export_filename,
                     attachment_filename='hikma_patient_export.xlsx')
Exemple #10
0
def login():
    params = assert_data_has_keys(request, {'email', 'password'})
    user = User.authenticate(params['email'], params['password'])
    return jsonify(user.to_dict())
Exemple #11
0
def metadata():
    params = assert_data_has_keys(request, {'email', 'password'})
    User.authenticate(params['email'], params['password'])
    response = {k.replace('-', ''): v for k, v in all_photo_filenames()}
    return jsonify(response)
def sync():
    params = assert_data_has_keys(request,
                                  {'email', 'password', 'new_password'})
    user = User.authenticate(params['email'], params['password'])
    user.reset_password(params['new_password'])
    return jsonify({'message': 'OK'})
Exemple #13
0
def get_one():
    params = assert_data_has_keys(request, {'example_param'})
    _example_param = params['example_param']
    db_result = db.get_one()

    return jsonify({'result': db_result})