Example #1
0
def show_approve(username, game_id):
    user = User.get_or_none(User.username == username)
    game = Game.get_or_none(Game.id == game_id)

    habits = Habit.select().where(Habit.game_id == game_id)
    game_habits = []

    for habit in habits:
        game_habits.append(habit.id)

    to_approve = LogHabit.select().where((LogHabit.approved == False) & (LogHabit.receiver_id == user.id) & (LogHabit.habit_id << game_habits))

    to_approve_length = len(to_approve)
    sender_ids = []
    senders = []

    for log in to_approve:
        sender_ids.append(log.sender_id)
    for id in sender_ids:
        sender = User.get_or_none(User.id == id)
        senders.append(sender.username)
    
    

    return render_template('log_habits/approval.html', to_approve = to_approve,
                                                    to_approve_length = to_approve_length,
                                                    username = username,
                                                    game_id = game_id,
                                                    senders = senders)
Example #2
0
def reject(username, game_id):
    user = User.get_or_none(User.username == username)
    game = Game.get_or_none(Game.id == game_id)

    habits = Habit.select().where(Habit.game_id == game_id)
    game_habits = []

    for habit in habits:
        game_habits.append(habit.id)

    to_approve = LogHabit.select().where((LogHabit.approved == False) & (LogHabit.receiver_id == user.id) & (LogHabit.habit_id in game_habits))


    loghabit_id = request.form.get('loghabit-ids')
    print(loghabit_id)
    loghabit = LogHabit.get_or_none(LogHabit.id == loghabit_id)
    delete_log = LogHabit.delete().where(LogHabit.id == loghabit_id)
    delete_log.execute()

    flash('Habit rejected.', 'success')

    if len(to_approve) < 1:
        return redirect(url_for('games.show', game_id = game_id, username = username))

    return redirect(url_for('log_habits.show_approve', game_id = game_id, username = username ))
Example #3
0
def show(game_id, round_id):

    # get game model object
    game_id = game_id
    game = Game.get_by_id(game_id)

    # empty array for number of dice
    dice_array = []
    num_dice = 0

    # get round id and round instance
    round_id = round_id  # hardcode for dev purposes
    round = Round.get_by_id(round_id)

    # get round number from round index form or hidden inputs in round show
    round_num = request.args['round_num']

    # determine if current_user is p1 or p2 and get roll array
    game_player_1_id = game.player_1_id
    if current_user.id == game_player_1_id:
        # if current_player.id == game_player_1_id:
        player_variable = 1
        roll_array = round.player_1_rolls
        player_stats = round.player_1_stats
        opponent_stats = round.player_2_stats
        player_initiative = round.player_1_initiative
        opponent_initiative = round.player_2_initiative
    else:
        player_variable = 2
        roll_array = round.player_2_rolls
        player_stats = round.player_2_stats
        opponent_stats = round.player_1_stats
        player_initiative = round.player_2_initiative
        opponent_initiative = round.player_1_initiative

    round_result = round.result
    winner = User.get_or_none(User.id == round_result)

    # querydb get habits with user_id==current user AND game_id==game_id
    # current_user_habit_array = Habit.select().where((Habit.user_id == current_user.id) & (Habit.game_id == game_id))
    current_user_habit_array = Habit.select().where(
        (Habit.user_id == current_user.id) & (Habit.game_id == game_id))

    # for each habit, query log_habits table and get number of rows for that habit for current_round that r approved
    # compare to frequency number of the habit
    for habit in current_user_habit_array:

        # query loghabit table for rows belonging to habit/user which are approved
        # approved_logs = LogHabit.select().where((LogHabit.sender==current_user.id) & (LogHabit.habit_id == habit.id) & (LogHabit.approved==True) & (LogHabit.game_round_id == round_id))
        approved_logs = LogHabit.select().where(
            (LogHabit.sender == current_user.id)
            & (LogHabit.habit_id == habit.id) & (LogHabit.approved == True)
            & (LogHabit.game_round_id == round_id))

        # get length of list
        # compare length of list to frequency number
        if len(approved_logs) >= habit.frequency:
            # append to dice list
            dice_array += [1]
            num_dice += 1

    return render_template('rounds/show.html',
                           round=round,
                           round_id=round_id,
                           round_num=round_num,
                           num_dice=num_dice,
                           dice_array=dice_array,
                           player_variable=player_variable,
                           game_id=game_id,
                           roll_array=roll_array,
                           player_stats=player_stats,
                           opponent_stats=opponent_stats,
                           player_initiative=player_initiative,
                           opponent_initiative=opponent_initiative,
                           round_result=round_result,
                           winner=winner)
Example #4
0
def show(username, game_id):

    game = Game.get_or_none(Game.id == game_id)

    #int value for latest round_id for the game
    latest_round = Round.select(pw.fn.MAX(
        Round.id)).where(Round.game_id == game_id).scalar()
    current_round_object = Round.get_or_none(Round.id == latest_round)

    # get length of all rounds for game to send round number into anchor link to show latest round
    len_round = len(Round.select().where(Round.game_id == game_id))

    # Active player - could be either player 1 or 2
    user = User.get_or_none(User.username == username)

    #Set up habit info
    user_habits = Habit.select().where((Habit.game_id == game_id)
                                       & (Habit.user_id == user.id))
    length_habit_list = len(user_habits)

    #progress bars

    progress = []
    user_more_to_go = []

    for habit in user_habits:
        approved_logs = LogHabit.select().where(
            (LogHabit.sender_id == user.id) & (LogHabit.habit_id == habit.id)
            & (LogHabit.approved == True)
            & (LogHabit.game_round_id == latest_round))
        logged_habits = len(approved_logs)
        percentage = logged_habits / habit.frequency * 100
        progress.append(percentage)
        leftover = habit.frequency - logged_habits
        user_more_to_go.append(leftover)

    rounded_progress = [round(freq, 0) for freq in progress]

    # Opponent - could be either player 1 or player 2

    # check is active user is player_1 or player_2 for the game
    if user.id == game.player_1_id:
        active_user = 1
        opponent = User.get_or_none(User.id == game.player_2_id)
    else:
        active_user = 2
        opponent = User.get_or_none(User.id == game.player_1_id)

    opponent_username = opponent.username
    opponent_habits = Habit.select().where((Habit.game_id == game_id)
                                           & (Habit.user_id == opponent.id))
    opponent_habit_length = len(opponent_habits)
    print(opponent_habit_length)

    # check if game has been accepted by player_2 or not
    game_accepted = game.accepted

    #Progress bars

    opponent_progress = []

    for habit in opponent_habits:
        approved_logs = LogHabit.select().where(
            (LogHabit.sender_id == opponent.id)
            & (LogHabit.habit_id == habit.id) & (LogHabit.approved == True)
            & (LogHabit.game_round_id == latest_round))
        logged_habits = len(approved_logs)
        percentage = logged_habits / habit.frequency * 100
        opponent_progress.append(percentage)

    print(opponent_progress)
    rounded_opponent_progress = [round(freq, 0) for freq in opponent_progress]

    habits = Habit.select().where(Habit.game_id == game_id)
    game_habits = []

    for habit in habits:
        game_habits.append(habit.id)
    to_approve = LogHabit.select().where((LogHabit.approved == False)
                                         & (LogHabit.receiver_id == user.id)
                                         & (LogHabit.habit_id in game_habits))
    to_approve_length = len(to_approve)

    return render_template('games/show.html',
                           username=user.username,
                           user_habits=user_habits,
                           length_habit_list=length_habit_list,
                           rounded_progress=rounded_progress,
                           opponent_username=opponent_username,
                           opponent_habits=opponent_habits,
                           opponent_habit_length=opponent_habit_length,
                           rounded_opponent_progress=rounded_opponent_progress,
                           user_more_to_go=user_more_to_go,
                           game_id=game.id,
                           game_accepted=game_accepted,
                           active_user=active_user,
                           to_approve_length=to_approve_length,
                           current_round_object=current_round_object,
                           len_round=len_round)