from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class FinalPaymentWaitPage(WaitPage): def after_all_players_arrive(self): apps_to_pay = [0] rounds_to_pay = [random.randint(1,4)] print(rounds_to_pay) print(apps_to_pay) for p in self.group.get_players(): payoff_list = p.participant.vars.get('payoffs', []) p.participant.vars['app_display_list'] = apps_to_pay round_list = p.participant.vars.get('rounds_display_list', []) round_list.append(rounds_to_pay) p.participant.vars['rounds_display_list'] = round_list print(round_list) p.payoff += payoff_list[apps_to_pay[0]][rounds_to_pay[0]] # # # def after_all_players_arrive(self): # # random.seed(random.randint(1, 999)) # uncomment if you want all subjects to have the same random apps and rounds paid out # for p in self.group.get_players(): # payoff_list = p.participant.vars.get('payoffs', []) # apps_to_pay = random.sample([i for i in range(len(payoff_list))], Constants.num_apps_to_pay) # print(apps_to_pay) # p.participant.vars['app_display_list'] = apps_to_pay # for a in apps_to_pay: # for each app, getting the rounds to pay for that app # round_list = p.participant.vars.get('rounds_display_list', []) # print(round_list) # rounds_to_pay = random.sample([i for i in range(len(payoff_list[a]))], Constants.num_rounds_to_pay) # print(rounds_to_pay) # round_list.append(rounds_to_pay) # # print(rounds_to_pay) # p.participant.vars['rounds_display_list'] = round_list # # now saving to otree's payoff variable for currency calculations # for r in rounds_to_pay: # p.payoff += payoff_list[a][r] """ round_list = self.session.vars.get('rounds_display_list',[]) rounds_to_pay = random.sample(range(Constants.num_app_rounds), Constants.num_rounds_to_pay) round_list.append(rounds_to_pay) self.session.vars['rounds_display_list'] = round_list for p in self.group.get_players(): payoff_list = p.participant.vars.get('app1_payoffs',[]) rounds_to_pay = p.session.vars.get('rounds_display_list',[]) r_list = rounds_to_pay[0] for r in r_list: p.payoff += payoff_list[r] """ class FinalPayment(Page): def vars_for_template(self): apps_list = self.player.participant.vars.get('app_display_list', []) print(apps_list) rounds_list = self.player.participant.vars.get('rounds_display_list', []) print(rounds_list) payoff_list = self.player.participant.vars.get('payoffs', []) print(payoff_list) django_display_list = [] for i in range(len(apps_list)): a_list = [apps_list[i]+1] # we need to add 1 so that apps and rounds line up with a 1 instead of 0 index a_list.append([r+1 for r in rounds_list[i]]) temp_list = [] for r in rounds_list[i]: temp_list.append(payoff_list[apps_list[i]][r]) # a_list.append(payoff_list[apps_list[i]][rounds_list[i]]) a_list.append(temp_list) django_display_list.append(a_list) dollars = self.participant.payoff_plus_participation_fee() self.player.dollars = dollars return dict(display_list=django_display_list, dollars=dollars) """ def vars_for_template(self): rounds_list = self.session.vars.get('rounds_display_list',[]) r_list = rounds_list[0] payoff_list = self.player.participant.vars.get('app1_payoffs', []) dollars = self.participant.payoff_plus_participation_fee() self.player.dollars = dollars print(rounds_list) temp_list = [] for r in r_list: temp_list.append(payoff_list[r]) a_list = [] for r in r_list: a_list.append(r+21) return {'a_list':a_list, 'temp_list':temp_list } """ page_sequence = [FinalPaymentWaitPage, FinalPayment]