from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'Exp_D_P' PLAYERS_PER_GROUP = 3 NUM_ROUNDS = 1 TEMP_TEMPLATE = 'Exp_D_P/temp.html' PAIRING_DONE_TEMPLATE = 'Exp_D_P/pairing_done.html' ROLE_ASSIGNMENT_TEMPLATE = 'Exp_D_P/role_assignment.html' ROUND_DECISION_TEMPLATE = 'Exp_D_P/round_decision.html' ROUND_RESULTS_O1_TEMPLATE = 'Exp_D_P/round_results_o1.html' ROUND_RESULTS_O2_TEMPLATE = 'Exp_D_P/round_results_o2.html' ROUND_RESULTS_O3_TEMPLATE = 'Exp_D_P/round_results_o3.html' ROUND2_RESULTS_O1_TEMPLATE = 'Exp_D_P/round2_results_o1.html' ROUND3_RESULTS_O1_TEMPLATE = 'Exp_D_P/round3_results_o1.html' ROUND4_RESULTS_O1_TEMPLATE = 'Exp_D_P/round4_results_o1.html' ROUND5_RESULTS_O1_TEMPLATE = 'Exp_D_P/round5_results_o1.html' ROUND6_RESULTS_O1_TEMPLATE = 'Exp_D_P/round6_results_o1.html' ROUND7_RESULTS_O1_TEMPLATE = 'Exp_D_P/round7_results_o1.html' ROUND2_RESULTS_O2_TEMPLATE = 'Exp_D_P/round2_results_o2.html' ROUND3_RESULTS_O2_TEMPLATE = 'Exp_D_P/round3_results_o2.html' ROUND4_RESULTS_O2_TEMPLATE = 'Exp_D_P/round4_results_o2.html' ROUND5_RESULTS_O2_TEMPLATE = 'Exp_D_P/round5_results_o2.html' ROUND6_RESULTS_O2_TEMPLATE = 'Exp_D_P/round6_results_o2.html' ROUND7_RESULTS_O2_TEMPLATE = 'Exp_D_P/round7_results_o2.html' ROUND2_RESULTS_O3_TEMPLATE = 'Exp_D_P/round2_results_o3.html' ROUND3_RESULTS_O3_TEMPLATE = 'Exp_D_P/round3_results_o3.html' ROUND4_RESULTS_O3_TEMPLATE = 'Exp_D_P/round4_results_o3.html' ROUND5_RESULTS_O3_TEMPLATE = 'Exp_D_P/round5_results_o3.html' ROUND6_RESULTS_O3_TEMPLATE = 'Exp_D_P/round6_results_o3.html' ROUND7_RESULTS_O3_TEMPLATE = 'Exp_D_P/round7_results_o3.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): O1_R1_L = models.IntegerField() O1_R2_L = models.IntegerField() O1_R3_L = models.IntegerField() O1_R4_L = models.IntegerField() O1_R5_L = models.IntegerField() O1_R6_L = models.IntegerField() O1_R7_L = models.IntegerField() O1_R1_P = models.IntegerField() O1_R2_P = models.IntegerField() O1_R3_P = models.IntegerField() O1_R4_P = models.IntegerField() O1_R5_P = models.IntegerField() O1_R6_P = models.IntegerField() O1_R7_P = models.IntegerField() O2_R1_L = models.IntegerField() O2_R2_L = models.IntegerField() O2_R3_L = models.IntegerField() O2_R4_L = models.IntegerField() O2_R5_L = models.IntegerField() O2_R6_L = models.IntegerField() O2_R7_L = models.IntegerField() O2_R1_P = models.IntegerField() O2_R2_P = models.IntegerField() O2_R3_P = models.IntegerField() O2_R4_P = models.IntegerField() O2_R5_P = models.IntegerField() O2_R6_P = models.IntegerField() O2_R7_P = models.IntegerField() O3_R1_L = models.IntegerField() O3_R2_L = models.IntegerField() O3_R3_L = models.IntegerField() O3_R4_L = models.IntegerField() O3_R5_L = models.IntegerField() O3_R6_L = models.IntegerField() O3_R7_L = models.IntegerField() O3_R1_P = models.IntegerField() O3_R2_P = models.IntegerField() O3_R3_P = models.IntegerField() O3_R4_P = models.IntegerField() O3_R5_P = models.IntegerField() O3_R6_P = models.IntegerField() O3_R7_P = models.IntegerField() O1_R1_AV = models.IntegerField() O1_R2_AV = models.IntegerField() O1_R3_AV = models.IntegerField() O1_R4_AV = models.IntegerField() O1_R5_AV = models.IntegerField() O1_R6_AV = models.IntegerField() O1_R7_AV = models.IntegerField() O2_R1_AV = models.IntegerField() O2_R2_AV = models.IntegerField() O2_R3_AV = models.IntegerField() O2_R4_AV = models.IntegerField() O2_R5_AV = models.IntegerField() O2_R6_AV = models.IntegerField() O2_R7_AV = models.IntegerField() O3_R1_AV = models.IntegerField() O3_R2_AV = models.IntegerField() O3_R3_AV = models.IntegerField() O3_R4_AV = models.IntegerField() O3_R5_AV = models.IntegerField() O3_R6_AV = models.IntegerField() O3_R7_AV = models.IntegerField() O1_Over = models.FloatField() O1_Accurate = models.FloatField() O1_Under = models.FloatField() O2_Over = models.FloatField() O2_Accurate = models.FloatField() O2_Under = models.FloatField() O3_Over = models.FloatField() O3_Accurate = models.FloatField() O3_Under = models.FloatField() Selected_Round = models.IntegerField() O1_F_L = models.IntegerField() O2_F_L = models.IntegerField() O3_F_L = models.IntegerField() O1_F_C = models.IntegerField() O2_F_C = models.IntegerField() O3_F_C = models.IntegerField() O1_F_P = models.IntegerField() O2_F_P = models.IntegerField() O3_F_P = models.IntegerField() O1_F_AV = models.IntegerField() O2_F_AV = models.IntegerField() O3_F_AV = models.IntegerField() def R1_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R1_L = o1.R1_L group.O2_R1_L = o2.R1_L group.O3_R1_L = o3.R1_L group.O1_R1_P = o1.R1_P group.O2_R1_P = o2.R1_P group.O3_R1_P = o3.R1_P group.O1_R1_AV = o1.R1_AV group.O2_R1_AV = o2.R1_AV group.O3_R1_AV = o3.R1_AV def R2_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R2_L = o1.R2_L group.O2_R2_L = o2.R2_L group.O3_R2_L = o3.R2_L group.O1_R2_P = o1.R2_P group.O2_R2_P = o2.R2_P group.O3_R2_P = o3.R2_P group.O1_R2_AV = o1.R2_AV group.O2_R2_AV = o2.R2_AV group.O3_R2_AV = o3.R2_AV def R3_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R3_L = o1.R3_L group.O2_R3_L = o2.R3_L group.O3_R3_L = o3.R3_L group.O1_R3_P = o1.R3_P group.O2_R3_P = o2.R3_P group.O3_R3_P = o3.R3_P group.O1_R3_AV = o1.R3_AV group.O2_R3_AV = o2.R3_AV group.O3_R3_AV = o3.R3_AV def R4_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R4_L = o1.R4_L group.O2_R4_L = o2.R4_L group.O3_R4_L = o3.R4_L group.O1_R4_P = o1.R4_P group.O2_R4_P = o2.R4_P group.O3_R4_P = o3.R4_P group.O1_R4_AV = o1.R4_AV group.O2_R4_AV = o2.R4_AV group.O3_R4_AV = o3.R4_AV def R5_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R5_L = o1.R5_L group.O2_R5_L = o2.R5_L group.O3_R5_L = o3.R5_L group.O1_R5_P = o1.R5_P group.O2_R5_P = o2.R5_P group.O3_R5_P = o3.R5_P group.O1_R5_AV = o1.R5_AV group.O2_R5_AV = o2.R5_AV group.O3_R5_AV = o3.R5_AV def R6_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R6_L = o1.R6_L group.O2_R6_L = o2.R6_L group.O3_R6_L = o3.R6_L group.O1_R6_P = o1.R6_P group.O2_R6_P = o2.R6_P group.O3_R6_P = o3.R6_P group.O1_R6_AV = o1.R6_AV group.O2_R6_AV = o2.R6_AV group.O3_R6_AV = o3.R6_AV def R7_G(group: Group): players = group.get_players() owner1 = [p for p in players if p.id_in_group == 1] owner2 = [p for p in players if p.id_in_group == 2] owner3 = [p for p in players if p.id_in_group == 3] o1 = owner1[0] o2 = owner2[0] o3 = owner3[0] group.O1_R7_L = o1.R7_L group.O2_R7_L = o2.R7_L group.O3_R7_L = o3.R7_L group.O1_R7_P = o1.R7_P group.O2_R7_P = o2.R7_P group.O3_R7_P = o3.R7_P group.O1_R7_AV = o1.R7_AV group.O2_R7_AV = o2.R7_AV group.O3_R7_AV = o3.R7_AV group.O1_Over = o1.Over_Per group.O2_Over = o2.Over_Per group.O3_Over = o3.Over_Per group.O1_Accurate = o1.Accurate_Per group.O2_Accurate = o2.Accurate_Per group.O3_Accurate = o3.Accurate_Per group.O1_Under = o1.Under_Per group.O2_Under = o2.Under_Per group.O3_Under = o3.Under_Per import random randomround = random.randint(1,7) group.Selected_Round = randomround if randomround == 1: group.O1_F_L = group.O1_R1_L group.O2_F_L = group.O2_R1_L group.O3_F_L = group.O3_R1_L group.O1_F_P = group.O1_R1_P group.O2_F_P = group.O2_R1_P group.O3_F_P = group.O3_R1_P group.O1_F_AV = group.O1_R1_AV group.O2_F_AV = group.O2_R1_AV group.O3_F_AV = group.O3_R1_AV if randomround == 2: group.O1_F_L = group.O1_R2_L group.O2_F_L = group.O2_R2_L group.O3_F_L = group.O3_R2_L group.O1_F_P = group.O1_R2_P group.O2_F_P = group.O2_R2_P group.O3_F_P = group.O3_R2_P group.O1_F_AV = group.O1_R2_AV group.O2_F_AV = group.O2_R2_AV group.O3_F_AV = group.O3_R2_AV if randomround == 3: group.O1_F_L = group.O1_R3_L group.O2_F_L = group.O2_R3_L group.O3_F_L = group.O3_R3_L group.O1_F_P = group.O1_R3_P group.O2_F_P = group.O2_R3_P group.O3_F_P = group.O3_R3_P group.O1_F_AV = group.O1_R3_AV group.O2_F_AV = group.O2_R3_AV group.O3_F_AV = group.O3_R3_AV if randomround == 4: group.O1_F_L = group.O1_R4_L group.O2_F_L = group.O2_R4_L group.O3_F_L = group.O3_R4_L group.O1_F_P = group.O1_R4_P group.O2_F_P = group.O2_R4_P group.O3_F_P = group.O3_R4_P group.O1_F_AV = group.O1_R4_AV group.O2_F_AV = group.O2_R4_AV group.O3_F_AV = group.O3_R4_AV if randomround == 5: group.O1_F_L = group.O1_R5_L group.O2_F_L = group.O2_R5_L group.O3_F_L = group.O3_R5_L group.O1_F_P = group.O1_R5_P group.O2_F_P = group.O2_R5_P group.O3_F_P = group.O3_R5_P group.O1_F_AV = group.O1_R5_AV group.O2_F_AV = group.O2_R5_AV group.O3_F_AV = group.O3_R5_AV if randomround == 6: group.O1_F_L = group.O1_R6_L group.O2_F_L = group.O2_R6_L group.O3_F_L = group.O3_R6_L group.O1_F_P = group.O1_R6_P group.O2_F_P = group.O2_R6_P group.O3_F_P = group.O3_R6_P group.O1_F_AV = group.O1_R6_AV group.O2_F_AV = group.O2_R6_AV group.O3_F_AV = group.O3_R6_AV if randomround == 7: group.O1_F_L = group.O1_R7_L group.O2_F_L = group.O2_R7_L group.O3_F_L = group.O3_R7_L group.O1_F_P = group.O1_R7_P group.O2_F_P = group.O2_R7_P group.O3_F_P = group.O3_R7_P group.O1_F_AV = group.O1_R7_AV group.O2_F_AV = group.O2_R7_AV group.O3_F_AV = group.O3_R7_AV if group.O1_F_L == 1: group.O1_F_C = 15 if group.O1_F_L == 2: group.O1_F_C = 50 if group.O1_F_L == 3: group.O1_F_C = 95 if group.O2_F_L == 1: group.O2_F_C = 15 if group.O2_F_L == 2: group.O2_F_C = 50 if group.O2_F_L == 3: group.O2_F_C = 95 if group.O3_F_L == 1: group.O3_F_C = 15 if group.O3_F_L == 2: group.O3_F_C = 50 if group.O3_F_L == 3: group.O3_F_C = 95 class Player(BasePlayer): Owner_Role = models.StringField() R1_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R2_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R3_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R4_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R5_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R6_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R7_L = models.IntegerField(choices=[[1, 'LOW (10% chance asset being 150 points; costs you 15 points)'], [2, 'MEDIUM (50% chance asset being 150 points; costs you 50 points)'], [3, 'HIGH (90% chance asset being 150 points; costs you 95 points)']], label='Please choose a likelihood that your asset is 150 points', widget=widgets.RadioSelect) R1_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R2_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R3_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R4_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R5_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R6_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R7_P = models.IntegerField(choices=[[50, '50 points'], [150, '150 points']], label='I predict that my asset will have a value of', widget=widgets.RadioSelect) R1_AV = models.IntegerField(initial=0) R2_AV = models.IntegerField(initial=0) R3_AV = models.IntegerField(initial=0) R4_AV = models.IntegerField(initial=0) R5_AV = models.IntegerField(initial=0) R6_AV = models.IntegerField(initial=0) R7_AV = models.IntegerField(initial=0) R1_Seed = models.IntegerField() R2_Seed = models.IntegerField() R3_Seed = models.IntegerField() R4_Seed = models.IntegerField() R5_Seed = models.IntegerField() R6_Seed = models.IntegerField() R7_Seed = models.IntegerField() Over = models.IntegerField(initial=0) Accurate = models.IntegerField(initial=0) Under = models.IntegerField(initial=0) Over_Per = models.FloatField() Accurate_Per = models.FloatField() Under_Per = models.FloatField() def Role_Save(player: Player): group = player.group if player.id_in_group == 1: player.Owner_Role = 'Owner 1' if player.id_in_group == 2: player.Owner_Role = 'Owner 2' if player.id_in_group == 3: player.Owner_Role = 'Owner 3' def Round1(player: Player): import random seed = random.randint(0,100) player.R1_Seed = seed if player.R1_L == 1: likelihood = 10 if player.R1_L == 2: likelihood = 50 if player.R1_L == 3: likelihood = 90 if seed <= likelihood: player.R1_AV = 150 else: player.R1_AV = 50 def Round2(player: Player): import random seed = random.randint(0,100) player.R2_Seed = seed if player.R2_L == 1: likelihood = 10 if player.R2_L == 2: likelihood = 50 if player.R2_L == 3: likelihood = 90 if seed <= likelihood: player.R2_AV = 150 else: player.R2_AV = 50 def Round3(player: Player): import random seed = random.randint(0,100) player.R3_Seed = seed if player.R3_L == 1: likelihood = 10 if player.R3_L == 2: likelihood = 50 if player.R3_L == 3: likelihood = 90 if seed <= likelihood: player.R3_AV = 150 else: player.R3_AV = 50 def Round4(player: Player): import random seed = random.randint(0,100) player.R4_Seed = seed if player.R4_L == 1: likelihood = 10 if player.R4_L == 2: likelihood = 50 if player.R4_L == 3: likelihood = 90 if seed <= likelihood: player.R4_AV = 150 else: player.R4_AV = 50 def Round5(player: Player): import random seed = random.randint(0,100) player.R5_Seed = seed if player.R5_L == 1: likelihood = 10 if player.R5_L == 2: likelihood = 50 if player.R5_L == 3: likelihood = 90 if seed <= likelihood: player.R5_AV = 150 else: player.R5_AV = 50 def Round6(player: Player): import random seed = random.randint(0,100) player.R6_Seed = seed if player.R6_L == 1: likelihood = 10 if player.R6_L == 2: likelihood = 50 if player.R6_L == 3: likelihood = 90 if seed <= likelihood: player.R6_AV = 150 else: player.R6_AV = 50 def Round7(player: Player): import random seed = random.randint(0,100) player.R7_Seed = seed if player.R7_L == 1: likelihood = 10 if player.R7_L == 2: likelihood = 50 if player.R7_L == 3: likelihood = 90 if seed <= likelihood: player.R7_AV = 150 else: player.R7_AV = 50 def Accuracy(player: Player): if player.R1_P == player.R1_AV: player.Accurate += 1 if player.R1_P > player.R1_AV: player.Over += 1 if player.R1_P < player.R1_AV: player.Under += 1 if player.R2_P == player.R2_AV: player.Accurate += 1 if player.R2_P > player.R2_AV: player.Over += 1 if player.R2_P < player.R2_AV: player.Under += 1 if player.R3_P == player.R3_AV: player.Accurate += 1 if player.R3_P > player.R3_AV: player.Over += 1 if player.R3_P < player.R3_AV: player.Under += 1 if player.R4_P == player.R4_AV: player.Accurate += 1 if player.R4_P > player.R4_AV: player.Over += 1 if player.R4_P < player.R4_AV: player.Under += 1 if player.R5_P == player.R5_AV: player.Accurate += 1 if player.R5_P > player.R5_AV: player.Over += 1 if player.R5_P < player.R5_AV: player.Under += 1 if player.R6_P == player.R6_AV: player.Accurate += 1 if player.R6_P > player.R6_AV: player.Over += 1 if player.R6_P < player.R6_AV: player.Under += 1 if player.R7_P == player.R7_AV: player.Accurate += 1 if player.R7_P > player.R7_AV: player.Over += 1 if player.R7_P < player.R7_AV: player.Under += 1 Accurate1 = player.Accurate / 7 player.Accurate_Per = Accurate1 * 100 Over1 = player.Over / 7 player.Over_Per = Over1 * 100 Under1 = player.Under / 7 player.Under_Per = Under1 * 100 def Info_Save(player: Player): group = player.group participant = player.participant if player.id_in_group == 1: participant.vars["prediction"] = group.O1_F_P participant.vars["likelihood"] = group.O1_F_L participant.vars["cost"] = group.O1_F_C participant.vars["av"] = group.O1_F_AV o1_points = 100 + group.O1_F_AV - group.O1_F_C o1_pay = o1_points / 78 participant.vars["pay"] = o1_pay if player.id_in_group == 2: participant.vars["prediction"] = group.O2_F_P participant.vars["likelihood"] = group.O2_F_L participant.vars["cost"] = group.O2_F_C participant.vars["av"] = group.O2_F_AV o2_points = 100 + group.O2_F_AV - group.O2_F_C o2_pay = o2_points / 78 participant.vars["pay"] = o2_pay if player.id_in_group == 3: participant.vars["prediction"] = group.O3_F_P participant.vars["likelihood"] = group.O3_F_L participant.vars["cost"] = group.O3_F_C participant.vars["av"] = group.O3_F_AV o3_points = 100 + group.O3_F_AV - group.O3_F_C o3_pay = o3_points / 78 participant.vars["pay"] = o3_pay class Pairing(WaitPage): group_by_arrival_time = True title_text = 'Waiting Room' body_text = 'Please wait! We are pairing you with two more mTurk workers. Please pay attention to the screen as you will be automatically pushed to the next page once the pairing is completed and the experiment will start immediately after.' class Pairing_Complete(Page): form_model = 'player' @staticmethod def before_next_page(player: Player, timeout_happened): Role_Save(player) class Role(Page): form_model = 'player' class R1(Page): form_model = 'player' form_fields = ['R1_L', 'R1_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round1(player) class R1_Waiting(WaitPage): after_all_players_arrive = R1_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R1_R(Page): form_model = 'player' class R2(Page): form_model = 'player' form_fields = ['R2_L', 'R2_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round2(player) class R2_Waiting(WaitPage): after_all_players_arrive = R2_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R2_R(Page): form_model = 'player' class R3(Page): form_model = 'player' form_fields = ['R3_L', 'R3_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round3(player) class R3_Waiting(WaitPage): after_all_players_arrive = R3_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R3_R(Page): form_model = 'player' class R4(Page): form_model = 'player' form_fields = ['R4_L', 'R4_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round4(player) class R4_Waiting(WaitPage): after_all_players_arrive = R4_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R4_R(Page): form_model = 'player' class R5(Page): form_model = 'player' form_fields = ['R5_L', 'R5_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round5(player) class R5_Waiting(WaitPage): after_all_players_arrive = R5_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R5_R(Page): form_model = 'player' class R6(Page): form_model = 'player' form_fields = ['R6_L', 'R6_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round6(player) class R6_Waiting(WaitPage): after_all_players_arrive = R6_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R6_R(Page): form_model = 'player' class R7(Page): form_model = 'player' form_fields = ['R7_L', 'R7_P'] @staticmethod def before_next_page(player: Player, timeout_happened): Round7(player) Accuracy(player) class R7_Waiting(WaitPage): after_all_players_arrive = R7_G title_text = 'Waiting Room' body_text = 'Please wait for other Owners to make their decisions. Please pay attention to the screen as you will be automatically pushed to the next screen once all Owners make their decisions.' class R7_R(Page): form_model = 'player' @staticmethod def before_next_page(player: Player, timeout_happened): Info_Save(player) page_sequence = [Pairing, Pairing_Complete, Role, R1, R1_Waiting, R1_R, R2, R2_Waiting, R2_R, R3, R3_Waiting, R3_R, R4, R4_Waiting, R4_R, R5, R5_Waiting, R5_R, R6, R6_Waiting, R6_R, R7, R7_Waiting, R7_R]