Ejemplo n.º 1
0
def player_home(name):
    players = Player.objects(name=name)
    if not players:
        abort(404)
    player = players[0]

    answer_count = Answer.objects(player=player).count()
    return render_template('player_home.html', name=name
        , answer_count=answer_count)
Ejemplo n.º 2
0
def player_home(name):
    players = Player.objects(name=name)
    if not players:
        abort(404)
    player = players[0]

    answer_count = Answer.objects(player=player).count()
    return render_template('player_home.html',
                           name=name,
                           answer_count=answer_count)
Ejemplo n.º 3
0
def destroy_seed():
    objects = []
    objects.extend(Question.objects())
    objects.extend(Player.objects())
    objects.extend(Answer.objects())
    objects.extend(BodyMediaData.objects())

    for o in objects:
        o.delete()

    return 'ouch'
Ejemplo n.º 4
0
def destroy_seed():
    objects = []
    objects.extend(Question.objects())
    objects.extend(Player.objects())
    objects.extend(Answer.objects())
    objects.extend(BodyMediaData.objects())

    for o in objects:
        o.delete()

    return 'ouch'
Ejemplo n.º 5
0
def player_answers(name):
    players = Player.objects(name=name)
    if not players:
        abort(404)
    player = players[0]

    question_id = request.form.get('question_id', '')
    response = request.form.get('response', '')
    question = Question.objects(id=question_id)[0]

    new_answer = Answer(question=question,
                        player=player,
                        data=int(response),
                        timestamp=datetime.datetime.utcnow())
    new_answer.save()

    player.update(set__last_answer_time=datetime.datetime.utcnow())
    answer_count = Answer.objects(player=player).count()

    return jsonify({'status': 'ok', 'answer_count': answer_count})
Ejemplo n.º 6
0
def player_answers(name):
    players = Player.objects(name=name)
    if not players:
        abort(404)
    player = players[0]

    question_id = request.form.get('question_id', '')
    response = request.form.get('response', '') 
    question = Question.objects(id=question_id)[0]

    new_answer = Answer(
        question = question
        , player = player
        , data = int(response)
        , timestamp = datetime.datetime.utcnow()
    )
    new_answer.save()

    player.update(set__last_answer_time=datetime.datetime.utcnow())
    answer_count = Answer.objects(player=player).count()

    return jsonify({'status': 'ok', 'answer_count': answer_count})
Ejemplo n.º 7
0
def compute(player, requested_date, data):
    ''' compute all parameters..
    '''

    # calculatron
    ''' net caloric intake
    '''
    net = data.caloric_intake - data.caloric_output
    if net >= 100:
        net_calories = 3
    elif net >= -100 and net < 100:
        net_calories = 2
    else:
        net_calories = 1


    ''' activity calculator
    '''
    caloric_target = 2475  # parameterize later
    age = 39

    if player.gender == 'male':
        BMR = 66 + (6.23 * player.weight) + (12.7 * player.height) - (6.8 * age)
    else:
        BMR = 655 + (4.35 * player.weight) + (4.7 * player.height) - (4.7 * age)

    baseline = BMR * 1.2

    if data.caloric_output >= caloric_target + 200:
        physical_activity = 3
    elif data.caloric_output >= baseline + 350 and data.caloric_output < caloric_target + 200:
        physical_activity = 2
    else:
        physical_activity = 1


    ''' sleep calculator
    '''
    sleep_goal = 60*8   # parameterize one day, lalala

    # try to get the previous day
    previous_day = requested_date - datetime.timedelta(days=1)
    previous_day_data = BodyMediaData.objects(player=player
        , timestamp=previous_day)
    if not previous_day_data:
        # 100% weighted to current day
        percent_of_goal = data.lying_down / sleep_goal
        sleep_efficiency = data.sleep_duration / data.lying_down

        if percent_of_goal > 1:
            percent_score = 3
        elif percent_of_goal > 0.9:
            percent_score = 2
        else:
            percent_score = 1

        if sleep_efficiency >= 0.8:
            efficiency_score = 3
        elif sleep_efficiency > 0.6:
            efficiency_score = 2
        else:
            efficiency_score = 1

        if efficiency_score == 3 and percent_score == 3:
            time_slept = 3
        elif efficiency_score == 2 or percent_score == 2:
            time_slept = 2
        elif efficiency_score == 1 or percent_score == 1:
            time_slept = 1


    else:
        previous_day_data = previous_day_data[0]
        # 25% yesterday, 75% today
        percent_of_goal = data.lying_down / sleep_goal
        percent_of_goal_yesterday = previous_day_data.lying_down / sleep_goal
        sleep_efficiency = data.sleep_duration / data.lying_down
        sleep_efficiency_yesterday = previous_day_data.sleep_duration / data.lying_down

        if percent_of_goal*0.75 + percent_of_goal_yesterday*0.25 > 1:
            percent_score = 3
        if percent_of_goal*0.75 + percent_of_goal_yesterday*0.25 > 0.9:
            percent_score = 2
        else:
            percent_score = 1

        if sleep_efficiency*0.75 + sleep_efficiency_yesterday*0.25 >= 0.8:
            efficiency_score = 3
        if sleep_efficiency*0.75 + sleep_efficiency_yesterday*0.25 >= 0.6:
            efficiency_score = 2
        else:
            efficiency_score = 1

        if efficiency_score == 3 and percent_score == 3:
            time_slept = 3
        elif efficiency_score == 2 or percent_score == 2:
            time_slept = 2
        elif efficiency_score == 1 or percent_score == 1:
            time_slept = 1
    

    ''' question score
    '''
    yesterday = requested_date - datetime.timedelta(days=1)
    question_responses = Answer.objects(player=player
            , timestamp__gte=yesterday, timestamp__lte=requested_date).count()

    if question_responses > 10:
        question_responses = 10

    return {
        'time_slept': time_slept
        , 'net_calories': net_calories
        , 'physical_activity': physical_activity
        , 'question_responses': question_responses
        , 'requested_date': requested_date.strftime('%d/%m/%Y')
    }
Ejemplo n.º 8
0
def compute(player, requested_date, data):
    ''' compute all parameters..
    '''

    # calculatron
    ''' net caloric intake
    '''
    net = data.caloric_intake - data.caloric_output
    if net >= 100:
        net_calories = 3
    elif net >= -100 and net < 100:
        net_calories = 2
    else:
        net_calories = 1
    ''' activity calculator
    '''
    caloric_target = 2475  # parameterize later
    age = 39

    if player.gender == 'male':
        BMR = 66 + (6.23 * player.weight) + (12.7 * player.height) - (6.8 *
                                                                      age)
    else:
        BMR = 655 + (4.35 * player.weight) + (4.7 * player.height) - (4.7 *
                                                                      age)

    baseline = BMR * 1.2

    if data.caloric_output >= caloric_target + 200:
        physical_activity = 3
    elif data.caloric_output >= baseline + 350 and data.caloric_output < caloric_target + 200:
        physical_activity = 2
    else:
        physical_activity = 1
    ''' sleep calculator
    '''
    sleep_goal = 60 * 8  # parameterize one day, lalala

    # try to get the previous day
    previous_day = requested_date - datetime.timedelta(days=1)
    previous_day_data = BodyMediaData.objects(player=player,
                                              timestamp=previous_day)
    if not previous_day_data:
        # 100% weighted to current day
        percent_of_goal = data.lying_down / sleep_goal
        sleep_efficiency = data.sleep_duration / data.lying_down

        if percent_of_goal > 1:
            percent_score = 3
        elif percent_of_goal > 0.9:
            percent_score = 2
        else:
            percent_score = 1

        if sleep_efficiency >= 0.8:
            efficiency_score = 3
        elif sleep_efficiency > 0.6:
            efficiency_score = 2
        else:
            efficiency_score = 1

        if efficiency_score == 3 and percent_score == 3:
            time_slept = 3
        elif efficiency_score == 2 or percent_score == 2:
            time_slept = 2
        elif efficiency_score == 1 or percent_score == 1:
            time_slept = 1

    else:
        previous_day_data = previous_day_data[0]
        # 25% yesterday, 75% today
        percent_of_goal = data.lying_down / sleep_goal
        percent_of_goal_yesterday = previous_day_data.lying_down / sleep_goal
        sleep_efficiency = data.sleep_duration / data.lying_down
        sleep_efficiency_yesterday = previous_day_data.sleep_duration / data.lying_down

        if percent_of_goal * 0.75 + percent_of_goal_yesterday * 0.25 > 1:
            percent_score = 3
        if percent_of_goal * 0.75 + percent_of_goal_yesterday * 0.25 > 0.9:
            percent_score = 2
        else:
            percent_score = 1

        if sleep_efficiency * 0.75 + sleep_efficiency_yesterday * 0.25 >= 0.8:
            efficiency_score = 3
        if sleep_efficiency * 0.75 + sleep_efficiency_yesterday * 0.25 >= 0.6:
            efficiency_score = 2
        else:
            efficiency_score = 1

        if efficiency_score == 3 and percent_score == 3:
            time_slept = 3
        elif efficiency_score == 2 or percent_score == 2:
            time_slept = 2
        elif efficiency_score == 1 or percent_score == 1:
            time_slept = 1
    ''' question score
    '''
    yesterday = requested_date - datetime.timedelta(days=1)
    question_responses = Answer.objects(player=player,
                                        timestamp__gte=yesterday,
                                        timestamp__lte=requested_date).count()

    if question_responses > 10:
        question_responses = 10

    return {
        'time_slept': time_slept,
        'net_calories': net_calories,
        'physical_activity': physical_activity,
        'question_responses': question_responses,
        'requested_date': requested_date.strftime('%d/%m/%Y')
    }