from otree.api import * doc = """ Your app description """ class C(BaseConstants): NAME_IN_URL = 'comb' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 1 CHAT_TEMPLATE = __name__ + '/chat.html' class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): ans1 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk1 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans2 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk2 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans3 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk3 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans4 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk4 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans5 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk5 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans6 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk6 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans7 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk7 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans8 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk8 = models.IntegerField( choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans9 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk9 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans10 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk10 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans11 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk11 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans12 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk12 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans13 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk13 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans14 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk14 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans15 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk15 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans16 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk16 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans17 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk17 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans18 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk18 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans19 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk19 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) ans20 = models.StringField( initial='', blank=True, max_length=3, label="The answer is," ) chk20 = models.IntegerField( blank=True, choices=[[0, "Correct"], [1, "Incorrect"], [2, "Pass"]], widget=widgets.RadioSelect, label="The answer is:" ) pay = models.FloatField( initial='0' ) pay2 = models.FloatField( initial='0' ) pay_divide = models.FloatField( initial='0', label="How much would you assign for yourself?" ) num_corr = models.FloatField( initial='0' ) num_corr2 = models.FloatField( initial='0' ) class Message(ExtraModel): group = models.Link(Group) sender = models.Link(Player) text = models.StringField() def to_dict(msg: Message): return dict(sender=msg.sender.id_in_group, text=msg.text) def set_timers(group): for p in group.get_players(): participant = p.participant import time participant.expiry = time.time() + 300 * 1 def get_timeout_seconds(player): participant = player.participant import time return participant.expiry - time.time() # PAGES class Inst(Page): pass class ShuffleWait(WaitPage): wait_for_all_groups = True @staticmethod def after_all_players_arrive(subsession): matrix = [[1, 2], [9, 4], [5, 10], [6, 3], [7, 8]] subsession.set_group_matrix(matrix) class Assign(WaitPage): after_all_players_arrive = set_timers class Solve1(Page): form_model = 'player' form_fields = ['ans1'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds @staticmethod def is_displayed(player): return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=13, n2=9, n3=1, n4=1 ) class Wait1_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check1(Page): form_model = 'player' form_fields = ['chk1'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans1') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=13, n2=9, n3=1, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait1(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans1 == '+++': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk1') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk1') == 1: if len(player_1.field_maybe_none('ans1')) == 3: if player_1.field_maybe_none('ans1') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve2(Page): form_model = 'player' form_fields = ['ans2'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=13, n2=12, n3=1, n4=2 ) class Wait2_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check2(Page): form_model = 'player' form_fields = ['chk2'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans2') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=13, n2=12, n3=1, n4=2, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait2(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans2 == '++-': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk2') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk2') == 1: if len(player_1.field_maybe_none('ans2')) == 3: if player_1.field_maybe_none('ans2') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve3(Page): form_model = 'player' form_fields = ['ans3'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=10, n2=6, n3=9, n4=4 ) class Wait3_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check3(Page): form_model = 'player' form_fields = ['chk3'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans3') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=10, n2=6, n3=9, n4=4, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait3(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans3 == '*-*': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk3') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk3') == 1: if len(player_1.field_maybe_none('ans3')) == 3: if player_1.field_maybe_none('ans3') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve4(Page): form_model = 'player' form_fields = ['ans4'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=13, n2=12, n3=3, n4=3 ) class Wait4_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check4(Page): form_model = 'player' form_fields = ['chk4'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans4') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=13, n2=12, n3=3, n4=3, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait4(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans4 == '+-/': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk4') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk4') == 1: if len(player_1.field_maybe_none('ans4')) == 3: if player_1.field_maybe_none('ans4') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve5(Page): form_model = 'player' form_fields = ['ans5'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=10, n2=3, n3=5, n4=1 ) class Wait5_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check5(Page): form_model = 'player' form_fields = ['chk5'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans5') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=10, n2=3, n3=5, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait5(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans5 == '*--': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk5') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk5') == 1: if len(player_1.field_maybe_none('ans5')) == 3: if player_1.field_maybe_none('ans5') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve6(Page): form_model = 'player' form_fields = ['ans6'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=8, n2=2, n3=7, n4=1 ) class Wait6_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check6(Page): form_model = 'player' form_fields = ['chk6'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans6') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=8, n2=2, n3=7, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait6(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans6 == '*++': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk6') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk6') == 1: if len(player_1.field_maybe_none('ans6')) == 3: if player_1.field_maybe_none('ans6') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve7(Page): form_model = 'player' form_fields = ['ans7'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=12, n2=8, n3=5, n4=1 ) class Wait7_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check7(Page): form_model = 'player' form_fields = ['chk7'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans7') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=12, n2=8, n3=5, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait7(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans7 == '++-': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk7') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk7') == 1: if len(player_1.field_maybe_none('ans7')) == 3: if player_1.field_maybe_none('ans7') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve8(Page): form_model = 'player' form_fields = ['ans8'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=6, n2=2, n3=11, n4=1 ) class Wait8_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check8(Page): form_model = 'player' form_fields = ['chk8'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans8') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=6, n2=2, n3=11, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait8(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans8 == '*++': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk8') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk8') == 1: if len(player_1.field_maybe_none('ans8')) == 3: if player_1.field_maybe_none('ans8') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve9(Page): form_model = 'player' form_fields = ['ans9'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=5, n2=5, n3=4, n4=4 ) class Wait9_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check9(Page): form_model = 'player' form_fields = ['chk9'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans9') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=5, n2=5, n3=4, n4=4, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait9(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans9 == '*-/': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk9') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk9') == 1: if len(player_1.field_maybe_none('ans9')) == 3: if player_1.field_maybe_none('ans9') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve10(Page): form_model = 'player' form_fields = ['ans10'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=11, n2=8, n3=8, n4=3 ) class Wait10_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check10(Page): form_model = 'player' form_fields = ['chk10'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans10') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=11, n2=8, n3=8, n4=3, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait10(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans10 == '++-': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk10') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk10') == 1: if len(player_1.field_maybe_none('ans10')) == 3: if player_1.field_maybe_none('ans10') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve11(Page): form_model = 'player' form_fields = ['ans11'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=7, n2=4, n3=3, n4=1 ) class Wait11_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check11(Page): form_model = 'player' form_fields = ['chk11'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans11') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=7, n2=4, n3=3, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait11(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans11 == '*--': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk11') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk11') == 1: if len(player_1.field_maybe_none('ans11')) == 3: if player_1.field_maybe_none('ans11') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve12(Page): form_model = 'player' form_fields = ['ans12'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=8, n2=6, n3=3, n4=8 ) class Wait12_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check12(Page): form_model = 'player' form_fields = ['chk12'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans12') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=8, n2=6, n3=3, n4=8, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait12(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans12 == '*/+': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk12') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk12') == 1: if len(player_1.field_maybe_none('ans12')) == 3: if player_1.field_maybe_none('ans12') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve13(Page): form_model = 'player' form_fields = ['ans13'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=9, n2=4, n3=10, n4=2 ) class Wait13_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check13(Page): form_model = 'player' form_fields = ['chk13'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def get_timeout_seconds(player): participant = player.participant import time return participant.expiry - time.time() @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans13') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=9, n2=4, n3=10, n4=2, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait13(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans13 == '*--': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk13') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk13') == 1: if len(player_1.field_maybe_none('ans13')) == 3: if player_1.field_maybe_none('ans13') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve14(Page): form_model = 'player' form_fields = ['ans14'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=13, n2=8, n3=5, n4=2 ) class Wait14_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check14(Page): form_model = 'player' form_fields = ['chk14'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans14') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=13, n2=8, n3=5, n4=2, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait14(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans14 == '++-': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk14') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk14') == 1: if len(player_1.field_maybe_none('ans14')) == 3: if player_1.field_maybe_none('ans14') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve15(Page): form_model = 'player' form_fields = ['ans15'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=8, n2=7, n3=5, n4=4 ) class Wait15_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check15(Page): form_model = 'player' form_fields = ['chk15'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans15') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=8, n2=7, n3=5, n4=4, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait15(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans15 == '+++': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk15') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk15') == 1: if len(player_1.field_maybe_none('ans15')) == 3: if player_1.field_maybe_none('ans15') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve16(Page): form_model = 'player' form_fields = ['ans16'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=9, n2=3, n3=2, n4=1 ) class Wait16_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check16(Page): form_model = 'player' form_fields = ['chk16'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans16') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=9, n2=3, n3=2, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait16(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans16 == '*--': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk16') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk16') == 1: if len(player_1.field_maybe_none('ans16')) == 3: if player_1.field_maybe_none('ans16') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve17(Page): form_model = 'player' form_fields = ['ans17'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=13, n2=7, n3=7, n4=3 ) class Wait17_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check17(Page): form_model = 'player' form_fields = ['chk17'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans17') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=13, n2=7, n3=7, n4=3, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait17(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans17 == '++-': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk17') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk17') == 1: if len(player_1.field_maybe_none('ans17')) == 3: if player_1.field_maybe_none('ans17') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve18(Page): form_model = 'player' form_fields = ['ans18'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=7, n2=4, n3=5, n4=9 ) class Wait18_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check18(Page): form_model = 'player' form_fields = ['chk18'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans18') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=7, n2=4, n3=5, n4=9, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait18(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans18 == '*+-': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk18') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk18') == 1: if len(player_1.field_maybe_none('ans18')) == 3: if player_1.field_maybe_none('ans18') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve19(Page): form_model = 'player' form_fields = ['ans19'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=10, n2=9, n3=4, n4=1 ) class Wait19_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check19(Page): form_model = 'player' form_fields = ['chk19'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans19') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=10, n2=9, n3=4, n4=1, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait19(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans19 == '+++': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk19') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk19') == 1: if len(player_1.field_maybe_none('ans19')) == 3: if player_1.field_maybe_none('ans19') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Solve20(Page): form_model = 'player' form_fields = ['ans20'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group return dict( sender=(sender == 2), receiver=(sender == 1), n1=10, n2=6, n3=4, n4=9 ) class Wait20_1(WaitPage): def after_all_players_arrive(group: Group): player_lists = group.get_players() player_2 = player_lists[1] player_2.pay = player_2.pay + 0 class Check20(Page): form_model = 'player' form_fields = ['chk20'] timer_text = 'Time left to complete this section:' get_timeout_seconds = get_timeout_seconds # @staticmethod # def is_displayed(player): # return get_timeout_seconds(player) > 1 @staticmethod def live_method(player: Player, data): my_id = player.id_in_group group = player.group if 'text' in data: text = data['text'] msg = Message.create(group=group, sender=player, text=text) return {0: [to_dict(msg)]} return {my_id: [to_dict(msg) for msg in Message.filter(group=group)]} def vars_for_template(player: Player): sender = player.id_in_group for p in player.get_others_in_group(): a1 = p.field_maybe_none('ans20') c = True d = False if len(a1) < 3: a1 = 'Pass' c = False d = True if a1 == ' ': a1 = 'Pass' c = False d = True b1 = a1[0] b2 = a1[1] b3 = a1[2] return dict( sender=(sender == 2), receiver=(sender == 1), a1=a1, n1=10, n2=6, n3=4, n4=9, b1=b1, b2=b2, b3=b3, c=c, d=d ) class Wait20(WaitPage): @staticmethod def after_all_players_arrive(group: Group): player_lists = group.get_players() player_1 = player_lists[0] player_2 = player_lists[1] if player_1.ans20 == '*/+': player_2.pay = player_2.pay + 1 if player_2.field_maybe_none('chk20') == 0: player_2.pay2 = player_2.pay2 + 1 else: if player_2.field_maybe_none('chk20') == 1: if len(player_1.field_maybe_none('ans20')) == 3: if player_1.field_maybe_none('ans20') != ' ': player_2.pay2 = player_2.pay2 + 0.5 class Decide(Page): form_model = 'player' form_fields = ['pay_divide'] def is_displayed(player: Player): return player.id_in_group == 2 @staticmethod def before_next_page(player, timeout_happened): for p in player.get_others_in_group(): p.num_corr = player.pay player.num_corr = p.num_corr p.pay_divide = player.pay - player.pay_divide p.pay = p.pay_divide p.num_corr2 = player.pay2 player.num_corr2 = p.num_corr2 player.pay = player.pay_divide+player.pay2 def vars_for_template(player: Player): divide = player.pay return dict( divide=divide ) @staticmethod def error_message(player, values): a = player.pay if values['pay_divide'] > a: return 'You cannot choose an amount greater than the group gain.' class MyWait(WaitPage): pass class Results(Page): @staticmethod def before_next_page(player: Player, timeout_happened): participant = player.participant participant.pt8 = player.pay participant.mem1 = player.num_corr participant.led1 = player.num_corr2 page_sequence = [Inst, ShuffleWait, Assign, Solve1, Wait1_1, Check1, Wait1, Solve2, Wait2_1, Check2, Wait2, Solve3, Wait3_1, Check3, Wait3, Solve4, Wait4_1, Check4, Wait4, Solve5, Wait5_1, Check5, Wait5, Solve6, Wait6_1, Check6, Wait6, Solve7, Wait7_1, Check7, Wait7, Solve8, Wait8_1, Check8, Wait8, Solve9, Wait9_1, Check9, Wait9, Solve10, Wait10_1, Check10, Wait10, Solve11, Wait11_1, Check11, Wait11, Solve12, Wait12_1, Check12, Wait12, Solve13, Wait13_1, Check13, Wait13, Solve14, Wait14_1, Check14, Wait14, Solve15, Wait15_1, Check15, Wait15, Solve16, Wait16_1, Check16, Wait16, Solve17, Wait17_1, Check17, Wait17, Solve18, Wait18_1, Check18, Wait18, Solve19, Wait19_1, Check19, Wait19, Solve20, Wait20_1,Check20, Wait20, Decide, MyWait, Results] # # # page_sequence = [Inst, Assign, # Solve1, Wait1_1, Check1, Wait1, # Solve2, Wait2_1, Check2, Wait2, # Solve3, Wait3_1, Check3, Wait3, # Solve7, Wait7_1, Check7, Wait7, # Solve7, Wait7_1, Check7, Wait7, # Solve8, Wait8_1, Check8, Wait8, # Solve9, Wait9_1, Check9, Wait9, # Solve10, Wait10_1, Check10, Wait10, # Decide, MyWait, Results] # Solve1, Wait1_1, Check1, Wait1, # Solve2, Wait2_1, Check2, Wait2, # Solve3, Wait3_1, Check3, Wait3, # Solve4, Wait4_1, Check4, Wait4, # Solve5, Wait5_1, Check5, Wait5, # # page_sequence = [Inst, Assign, # Solve1, Wait1_1, Check1, Wait1, # Solve2, Wait2_1, Check2, Wait2, # Solve3, Wait3_1, Check3, Wait3, # Solve4, Wait4_1, Check4, Wait4, # Decide, Results] # page_sequence = [Inst]