def update_score(resp, exercise_id): """Update score""" post_data = request.get_json() response_object = {'status': 'fail', 'message': 'Invalid payload.'} if not post_data: return jsonify(response_object), 400 correct = post_data.get('correct') try: score = Score.query.filter_by(exercise_id=int(exercise_id), user_id=int(resp['data']['id'])).first() if score: score.correct = correct db.session.commit() response_object['status'] = 'success' response_object['message'] = 'Score was updated!' return jsonify(response_object), 200 else: db.session.add( Score(user_id=resp['data']['id'], exercise_id=int(exercise_id), correct=correct)) db.session.commit() response_object['status'] = 'success' response_object['message'] = 'New score was added!' return jsonify(response_object), 201 except (exc.IntegrityError, ValueError, TypeError): db.session().rollback() return jsonify(response_object), 400
def post(self, resp): post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return response_object, 400 user_id = int(resp['data']['id']) exercise_id = post_data.get('exercise_id') correct = post_data.get('correct') try: db.session.add( Score(user_id=user_id, exercise_id=exercise_id, correct=correct)) db.session.commit() response_object = { 'status': 'success', 'message': 'New score was added!' } return response_object, 201 except (exc.IntegrityError, ValueError): db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return response_object, 400
def post(self, resp): """Add exercise""" if not resp["admin"]: response_object = { "status": "error", "message": "You do not have permission to do that.", } return response_object, 401 post_data = request.get_json() if not post_data: response_object = {"status": "fail", "message": "Invalid payload."} return response_object, 400 body = post_data.get("body") test_code = post_data.get("test_code") test_code_solution = post_data.get("test_code_solution") try: db.session.add( Exercise( body=body, test_code=test_code, test_code_solution=test_code_solution, )) db.session.commit() response_object = { "status": "success", "message": "New exercise was added!", } return response_object, 201 except (exc.IntegrityError, ValueError): db.session().rollback() response_object = {"status": "fail", "message": "Invalid payload."} return response_object, 400
def update_score(resp, score_id): """Update score""" post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 exercise_id = post_data.get('exercise_id') correct = post_data.get('correct') try: score = Score.query.filter_by(id=int(score_id), exercise_id=int(exercise_id), user_id=int(resp['data']['id'])).first() if score: score.correct = correct db.session.commit() response_object = { 'status': 'success', 'message': 'Score was updated!' } return jsonify(response_object), 200 else: response_object = { 'status': 'fail', 'message': 'Sorry. That score does not exist.' } return jsonify(response_object), 400 except (exc.IntegrityError, ValueError, TypeError) as e: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400
def post(self, resp): """Add exercise""" if not resp['admin']: response_object = { 'status': 'error', 'message': 'You do not have permission to do that.' } return response_object, 401 post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return response_object, 400 body = post_data.get('body') test_code = post_data.get('test_code') test_code_solution = post_data.get('test_code_solution') try: db.session.add( Exercise(body=body, test_code=test_code, test_code_solution=test_code_solution)) db.session.commit() response_object = { 'status': 'success', 'message': 'New exercise was added!' } return response_object, 201 except (exc.IntegrityError, ValueError): db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return response_object, 400
def add_event(): post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return make_response(jsonify(response_object)), 400 type_id = post_data.get('type_id') caregiver_id = post_data.get('caregiver_id') start_time = post_data.get('start_time') try: event = Event(type_id=type_id, caregiver_id=caregiver_id, start_time=start_time) db.session.add(event) db.session.commit() response_object = { 'status': 'success', 'message': 'Event created.', 'id': event.id } return make_response(jsonify(response_object)), 201 except exc.IntegrityError: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return make_response(jsonify(response_object)), 400 except Exception: # other error e.g. invalid start_time response_object = {'status': 'fail', 'message': 'Invalid payload.'} return make_response(jsonify(response_object)), 400
def add_score(resp): """Add score""" auth_user_id = int(resp['data']['id']) post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 exercise_id = post_data.get('exercise_id') correct = post_data.get('correct') try: score = Score.query.filter_by(user_id=int(auth_user_id)).first() if not score: db.session.add( Score(user_id=auth_user_id, exercise_id=exercise_id, correct=correct)) db.session.commit() response_object = { 'status': 'success', 'message': 'New score was added!' } return jsonify(response_object), 201 else: response_object = { 'status': 'fail', 'message': 'Sorry. That score already exists. Please update with a PUT request.' } return jsonify(response_object), 400 except (exc.IntegrityError, ValueError) as e: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400
def add_user(): post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 username = post_data.get('username') email = post_data.get('email') password = post_data.get('password') try: user = User.query.filter_by(email=email).first() if not user: db.session.add( User(username=username, email=email, password=password)) db.session.commit() response_object = { 'status': 'success', 'message': email + ' was added!' } return jsonify(response_object), 201 else: response_object = { 'status': 'fail', 'message': 'Sorry. That email already exists.' } return jsonify(response_object), 400 except exc.IntegrityError as e: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 except (exc.IntegrityError, ValueError) as e: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400
def add_event_type(): post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return make_response(jsonify(response_object)), 400 name = post_data.get('name') amount_in_cents = post_data.get('amount_in_cents') currency = post_data.get('currency', 'SEK') if currency != "SEK": response_object = {'status': 'fail', 'message': 'Invalid currency.'} return make_response(jsonify(response_object)), 400 try: etype = Type(name=name, amount_in_cents=amount_in_cents, currency=currency) db.session.add(etype) db.session.commit() response_object = { 'status': 'success', 'message': 'Event type created.', 'id': etype.id } return make_response(jsonify(response_object)), 201 except exc.IntegrityError: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return make_response(jsonify(response_object)), 400
def add_user(): post_data = request.get_json() if not post_data: response_object = { 'status': 'fail', 'message': 'Invalid payload.' } return jsonify(response_object), 400 username = post_data.get('username') email = post_data.get('email') try: user = User.query.filter_by(email=email).first() if not user: db.session.add(User(username=username, email=email)) db.session.commit() response_object = { 'status': 'success', 'message': f'{email} was added!' } return jsonify(response_object), 201 else: response_object = { 'status': 'fail', 'message': 'Sorry. That email already exists.' } return jsonify(response_object), 400 except exc.IntegrityError as e: db.session().rollback() response_object = { 'status': 'fail', 'message': 'Invalid payload.' } return jsonify(response_object), 400
def add_user(): post_data = request.get_json() if not post_data: response_object = dict(status='fail', message='Invalid payload.') return make_response(jsonify(response_object)), 400 username = post_data.get('username') email = post_data.get('email') try: user = User.query.filter_by(email=email).first() if not user: db.session.add(User(username=username, email=email)) db.session.commit() response_object = dict(status='success', message=f"{email} was added!") return make_response(jsonify(response_object)), 201 else: response_object = dict(status='fail', message='Sorry, that email already exists.') return make_response(jsonify(response_object)), 400 except exc.IntegrityError as e: db.session().rollback() response_object = dict(status='fail', message='Invalid payload.') return make_response(jsonify(response_object)), 400
def register_user(): print('here') # get post data post_data = request.get_json() if not post_data: response_object = { 'status': 'error', 'message': 'Invalid payload.' } return jsonify(response_object), 400 username = post_data.get('username') email = post_data.get('email') password = post_data.get('password') try: # check for existing user user = User.query.filter( or_(User.username == username, User.email==email)).first() if not user: # add new user to db new_user = User( username=username, email=email, password=password ) db.session.add(new_user) db.session.commit() # generate auth token auth_token = new_user.encode_auth_token(new_user.id) response_object = { 'status': 'success', 'message': 'Successfully registered.', 'auth_token': auth_token.decode() } return jsonify(response_object), 201 else: response_object = { 'status': 'error', 'message': 'Sorry. That user already exists.' } return jsonify(response_object), 400 # handler errors except (exc.IntegrityError, ValueError) as e: db.session().rollback() response_object = { 'status': 'error', 'message': 'Invalid payload.' } return jsonify(response_object), 400
def add_album(): credentials = storage.get() if credentials and len(credentials.id_token['email']) > 0: post_data = request.form if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 title = request.form['title'] try: album = Album.query.filter_by(title=title).first() if not album: description = request.form['description'] new_album = Album(title=title, description=description, user_email=credentials.id_token['email']) new_album.images = [] for i in request.files.getlist('photos'): filename = photos.save( i) # saving images via Flask-Uploads img_url = photos.url( filename) # extracting image url with Flask-Uploads new_image = Image(name=filename, url=img_url) new_album.images.append( new_image) # One-to-many relationship instantiation db.session.add(new_album) db.session.commit() response_object = { 'status': 'success', 'message': f'{title} was added!' } return jsonify(response_object), 200 else: response_object = { 'status': 'fail', 'message': 'Sorry. That title already exists.' } return jsonify(response_object), 400 except (exc.IntegrityError, ValueError) as e: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 else: response_object = { 'status': 'fail', 'message': 'Unauthorized access. Please log in.' } return jsonify(response_object), 403
def test_users_can_register(self): new_user = User("michael", "*****@*****.**", bcrypt.generate_password_hash('michaelherman')) db.session.add(new_user) db.session.commit() test = db.session().query(User).all() for t in test: t.name assert t.name=="michael"
def post_stocks(resp): if not resp['data']: response_object = { 'status': 'error', 'message': 'You do not have permission to do that.' } return jsonify(response_object), 401 # get post data post_data = request.get_json() response_object = { 'status': 'fail', 'message': 'Invalid payload.' } if not post_data: return jsonify(response_object), 400 stock_name = post_data.get('stock_name') opening_price = post_data.get('opening_price') highest_price = post_data.get('highest_price') lowest_price = post_data.get('lowest_price') closing_price = post_data.get('closing_price') date = post_data.get('date') try: stocks = Stocks( stock_name=stock_name, opening_price=opening_price, highest_price= highest_price, lowest_price=lowest_price, closing_price=closing_price, date=date ) db.session.add(stocks) db.session.commit() response_object = { 'status': 'success', 'message': 'New stocks was recorded', 'stocks': stocks.to_json() } return jsonify(response_object), 201 except (exc.IntegrityError, exc.DataError, ValueError) as e: db.session().rollback() response_object = { 'status': 'fail', 'message': 'Invalid data type in the payload' } return jsonify(response_object), 400
def search_item(name, location): response_object = {'status': 'fail', 'message': 'Invalid payload'} try: item = Items.query.filter(Items.name == name and Items.location == location).all() if item: response_object = { 'status': 'success', 'data': { 'items': [i.item_to_json() for i in item] } } return jsonify(response_object), 200 else: response_object[ 'message'] = 'No item found for this name and location' return jsonify(response_object), 401 except (exc.IntegrityError, ValueError, TypeError) as e: db.session().rollback() return jsonify(response_object), 400
def upsert_score(resp, score_id=None): """Upsert score""" auth_user_id = int(resp['data']['id']) post_data = request.get_json() if not post_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400 exercise_id = post_data.get('exercise_id') correct = post_data.get('correct') try: filter_args = { 'exercise_id': int(exercise_id), 'user_id': int(resp['data']['id']) } if score_id: filter_args['id'] = int(score_id) score = Score.query.filter_by(**filter_args).first() if score: score.correct = correct db.session.commit() response_object = { 'status': 'success', 'message': 'Score was updated!' } return jsonify(response_object), 200 else: db.session.add( Score(user_id=auth_user_id, exercise_id=exercise_id, correct=correct)) db.session.commit() response_object = { 'status': 'success', 'message': 'New score was added!' } return jsonify(response_object), 201 except (exc.IntegrityError, ValueError, TypeError) as e: db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return jsonify(response_object), 400
def put(self, resp, exercise_id): put_data = request.get_json() if not put_data: response_object = {'status': 'fail', 'message': 'Invalid payload.'} return response_object, 400 user_id = int(resp['data']['id']) correct = put_data.get('correct') try: score = Score.query.filter( Score.user_id == user_id, Score.exercise_id == exercise_id).first() if score: score.correct = correct db.session.commit() response_object = { 'status': 'success', 'message': 'Score updated' } return response_object, 200 else: db.session.add( Score(user_id=user_id, exercise_id=exercise_id, correct=correct)) db.session.commit() response_object = { 'status': 'success', 'message': 'New score was added!' } return response_object, 201 except (exc.IntegrityError, ValueError): db.session().rollback() response_object = {'status': 'fail', 'message': 'Invalid payload.'} return response_object, 400
def update_item(item_id): response_object = {'status': 'fail', 'message': 'Invalid payload'} post_data = request.get_json() if not post_data: return jsonify(response_object), 400 try: item = Items.query.filter_by(id=item_id).first() if not item: response_object['message'] = 'item does not exist' return jsonify(response_object), 401 else: item.name = post_data.get('name') item.category = post_data.get('category') item.location = post_data.get('location') item.description = post_data.get('description') item.item_pic = post_data.get('item_pic') db.session.commit() response_object['status'] = 'success' response_object['message'] = 'Item was updated!' return jsonify(response_object), 200 except (exc.IntegrityError, ValueError, TypeError) as e: db.session().rollback() return jsonify(response_object), 400
def delete_event_type(etype_id): response_object = { 'status': 'fail', 'message': 'Event type does not exist.' } etype = Type.query.filter_by(id=int(etype_id)).first() if not etype: return make_response(jsonify(response_object)), 404 try: db.session.delete(etype) db.session.commit() response_object = { 'status': 'success', 'message': 'Event type deleted.' } return make_response(jsonify(response_object)), 200 except exc.IntegrityError: db.session().rollback() response_object = { 'status': 'fail', 'message': 'Event type is used in existing events.' } return make_response(jsonify(response_object)), 400