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)
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 ))
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)
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)