Example #1
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
Example #2
0
def update_scores(resp, exercise_id):
    """Update scores"""
    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) as e:
        db.session.rollback()
        return jsonify(response_object), 400
Example #3
0
 def post(self, resp):
     """Add score"""
     response_object = {'status': 'fail', 'message': 'Invalid payload.'}
     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:
         return response_object, 400
     exercise_id = post_data.get('exercise_id')
     correct = False
     if post_data.get('correct'):
         correct = post_data.get('correct')
     try:
         db.session.add(
             Score(user_id=resp['data']['id'],
                   exercise_id=exercise_id,
                   correct=correct))
         db.session.commit()
         response_object['status'] = 'success'
         response_object['message'] = 'New score was added!'
         return response_object, 201
     except exc.IntegrityError:
         db.session.rollback()
         return response_object, 400
     except (exc.IntegrityError, ValueError):
         db.session.rollback()
         return response_object, 400
Example #4
0
def add_score(user_id, exercise_id, correct):
    score = Score(
        user_id=user_id,
        exercise_id=exercise_id,
        correct=correct
    )
    db.session.add(score)
    db.session.commit()
    return score
Example #5
0
def bowl(self):
    player = self.getPlayer()
    turn = int(Score.getLastTurn(player)) + 1
    previous_turn_pins = Score.getLastScore(turn, player)

    # Odd turns are the first of the frame
    if turn % 2 !== 0 && turn !== 23:
        pins = random.randint(1, 10)

        if previous_turn_pins === 10:
            bonus_score = self.checkForStrikeSpare(turn, player)

    # Even turns are the second of the frame, along with the bonus 3rd turn on the 10th frame
    if turn % 2 === 0 || turn === 23:
        # if turn === 23:
            #confirm the previous two throws add up to 10
            # then continue, if not, throw a message
        if previous_turn_pins === 10:
            score = 0

        remaining_pins = random.randint(1, (10-previous_turn_pins))

        # We have a spare, this is not handled yet
        if previous_turn_pins + remaining_pins === 10:
            score = previous_turn_pins + remaining_pins

    if turn > 23:
        # message about how they played a good game

    # need to update the view with the number of pins
    current_cummulative = Score.getCummulative(turn, player)
    cummulative_score = current_cummulative + score

    Score.updateScore(turn, player, score, cummulative_score)

response_object = {
    'status': 'success',
    'data': {
        'scores': {score}
    }
}
    return jsonify(response_object), 200
Example #6
0
def seed_db():
    """Seeds the database."""
    # get exercises
    url = '{0}/exercises'.format(os.environ.get('EXERCISES_SERVICE_URL'))
    response = requests.get(url)
    exercises = response.json()['data']['exercises']
    # get users
    url = '{0}/users'.format(os.environ.get('USERS_SERVICE_URL'))
    response = requests.get(url)
    users = response.json()['data']['users']
    # seed
    for user in users:
        for exercise in exercises:
            db.session.add(
                Score(user_id=user['id'], exercise_id=exercise['id']))
    db.session.commit()
Example #7
0
def add_scores(resp):
    post_data = request.get_json()
    response_object = {'status': 'fail', 'message': 'Invalid payload.'}
    if not post_data:
        return jsonify(response_object), 400
    exercise_id = post_data.get('exercise_id')
    correct = post_data.get('correct')
    try:
        db.session.add(
            Score(user_id=resp['data']['id'],
                  exercise_id=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 as e:
        db.session.rollback()
        return jsonify(response_object), 400
    except (exc.IntegrityError, ValueError) as e:
        db.session.rollback()
        return jsonify(response_object), 400
Example #8
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
Example #9
0
def add_turn(turn, pins):
    # Add a bowling turn to our test player.
    score = Score(turn=turn, pins=pins, player='test')
    db.session.add(score)
    db.session.commit()
    return score
Example #10
0
 def test_add_score(self):
     score = Score(user_id=1, exercise_id=1, correct=True)
     db.session.add(score)
     db.session.commit()