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})
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)
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()})
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')
def login(): params = assert_data_has_keys(request, {'email', 'password'}) user = User.authenticate(params['email'], params['password']) return jsonify(user.to_dict())
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'})
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})