Exemplo n.º 1
0
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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
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
Exemplo n.º 9
0
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
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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
Exemplo n.º 13
0
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
Exemplo n.º 14
0
	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"
Exemplo n.º 15
0
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
Exemplo n.º 17
0
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
Exemplo n.º 18
0
    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
Exemplo n.º 20
0
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