from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random import json class InitialSelection(Page): def is_displayed(self): return self.round_number == 1 form_model = 'group' form_fields = ['type', 'treatment', 'subtreatment'] class WaitForInitialSelection(WaitPage): pass class Gender(Page): def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['gender'] def before_next_page(self): self.participant.vars['gender'] = self.player.gender class Treatment(Page): def is_displayed(self): return self.round_number == 1 form_model = "player" form_fields = ["enumerator_ID", "practice", "HHID", "person_id", ] class PeopleWatching(Page): def is_displayed(self): return self.round_number == 1 and self.group.treatment == 2 form_model = "player" form_fields = ["nrchildren", "public_schedule", "men1625", "men2550", "menover50", "women1625", "women2550", "womenover50"] # Pages to display always (common pages) class InstructionW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.round_number == 1 class InstructionM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.round_number == 1 # EX ANTE VERSION ###################################################################################################### class EAPracticeW(Page): def is_displayed(self): return self.group.type == 'EA' and self.participant.vars['gender'] == 'W' and self.round_number == 1 class EAPracticeW2(Page): def is_displayed(self): return self.group.type == 'EA' and self.participant.vars['gender'] == 'W' and self.round_number == 1 class EADescriptionW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EA' and self.round_number == 1 class EADescriptionM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == 1 class EAPreScheduleM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == 1 # PAGE RANDOMIZATION FOR EXANTE STARTS HERE class EASchedule1M(Page): def before_next_page(self): self.player.guess_be01a_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["be01a_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EAConfirmationBe01a(Page): def vars_for_template(self): return {'be01a_stored_m': self.participant.vars['be01a_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["confirmation_be01a"] class EASchedule1BisM(Page): def before_next_page(self): self.player.guess_be01a_man() def is_displayed(self): return self.player.confirmation_be01a == 1 and self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["be01a_man"] class EASchedule2M(Page): def before_next_page(self): self.player.guess_be01b_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.group.subtreatment == 1 and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["be01b_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EAConfirmationBe01b(Page): def vars_for_template(self): return {'be01b_stored_m': self.participant.vars['be01b_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.group.subtreatment == 1 and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["confirmation_be01b"] # def before_next_page(self): # self.participant.vars['confirmation_be01b'] = self.player.confirmation_be01b class EASchedule2BisM(Page): def before_next_page(self): self.player.guess_be01b_man() def is_displayed(self): return self.player.confirmation_be01b == 1 and self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.group.subtreatment == 1 and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["be01b_man"] class EASchedule3M(Page): def before_next_page(self): self.player.guess_be02a_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["be02a_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EAConfirmationBe02a(Page): def vars_for_template(self): return {'be02a_stored_m': self.participant.vars['be02a_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["confirmation_be02a"] class EASchedule3BisM(Page): def before_next_page(self): self.player.guess_be02a_man() def is_displayed(self): return self.player.confirmation_be02a == 1 and self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["be02a_man"] class EASchedule4M(Page): def before_next_page(self): self.player.guess_be02b_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA'and self.group.subtreatment == 1 and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["be02b_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EAConfirmationBe02b(Page): def vars_for_template(self): return {'be02b_stored_m': self.participant.vars['be02b_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.subtreatment == 1 and self.group.type == 'EA' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["confirmation_be02b"] class EASchedule4BisM(Page): def before_next_page(self): self.player.guess_be02b_man() def is_displayed(self): return self.player.confirmation_be02b == 1 and self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.group.subtreatment == 1 and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["be02b_man"] class EAPostScheduleM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == Constants.num_rounds form_model = "player" form_fields = ["punishment_work"] # END RANDOMIZATION EX ANTE ############################################################################################ class ScheduleWaitPage(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EA' and self.round_number == Constants.num_rounds class EAScheduleListenW(Page): def vars_for_template(self): return self.player.vars_for_template() form_model = "group" form_fields = ["be01"] def before_next_page(self): self.participant.vars['be01'] = self.group.be01 def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment != 1 and self.group.type == 'EA' and self.round_number == Constants.num_rounds class EAScheduleListenTransW(Page): def vars_for_template(self): return self.player.vars_for_template() form_model = "group" form_fields = ["be01"] def before_next_page(self): self.participant.vars['be01'] = self.group.be01 def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment == 1 and self.group.type == 'EA' and self.round_number == Constants.num_rounds class EAListenDecideW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EA' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be02"] class EAListenDecideM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == Constants.num_rounds form_model = "player" form_fields = ["sound_decide_m"] class RiceWaitPage(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == Constants.num_rounds class pe_exante_woman_outside(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment == 2 and self.group.type == 'EA' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be03_w"] class EASoundListenW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EA' and self.round_number == Constants.num_rounds class EABeadM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EA' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be03"] def before_next_page(self): self.participant.vars['be01'] = self.group.be01 class WaitForBead(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EA' and self.round_number == Constants.num_rounds title_text = "Waiting" body_text = "Waiting to know which jar the pan picked EA" class OutsideWaitPage(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.subtreatment == 2 and self.group.type == 'EA' and self.round_number == Constants.num_rounds title_text = "Waiting" body_text = "Waiting to understand if the woman had an outside option EA" ### EX ANTE END ######################################################################################################## # EX POST COLD ####################################################################################################### class EPCDescriptionM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == 1 class EPCPracticeW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == 1 form_model = "group" form_fields = ["riceplate_practice"] class EPCPracticeW2(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == 1 class EPCIntroW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == 1 class EPCDescriptionW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be01"] def before_next_page(self): self.participant.vars['be01'] = self.group.be01 class RiceWaitPage2(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds title_text = "Waiting" body_text = "Waiting for the woman to make her choice EPC constant round" class RiceWaitPage2_round1(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == 1 title_text = "Waiting" body_text = "Waiting for the woman to make her choice EPC round == 1" # fake page only to give the impression to the man that he is actually waiting for smt class EPCPreRandomizationM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == 1 # EX POST COLD RANDOMIZATION START class EPCSchedule1M(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["be01a_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" def before_next_page(self): self.player.guess_be01a_man() class EPCConfirmationBe01a(Page): def vars_for_template(self): return {'be01a_stored_m': self.participant.vars['be01a_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["confirmation_be01a"] class EPCSchedule1BisM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["be01a_man"] def before_next_page(self): self.player.guess_be01a_man() class EPCSchedule2M(Page): def is_displayed(self): return self.group.type == 'EPC' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["be01b_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" def before_next_page(self): self.player.guess_be01b_man() class EPCConfirmationBe01b(Page): def vars_for_template(self): return {'be01b_stored_m': self.participant.vars['be01b_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["confirmation_be01b"] class EPCSchedule2BisM(Page): def is_displayed(self): return self.group.type == 'EPC' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["be01b_man"] def before_next_page(self): self.player.guess_be01b_man() class EPCSchedule3M(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["be02a_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" def before_next_page(self): self.player.guess_be02a_man() class EPCConfirmationBe02a(Page): def vars_for_template(self): return {'be02a_stored_m': self.participant.vars['be02a_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["confirmation_be02a"] class EPCSchedule3BisM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["be02a_man"] class EPCSchedule4M(Page): def is_displayed(self): return self.group.type == 'EPC' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["be02b_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" def before_next_page(self): self.player.guess_be02b_man() class EPCConfirmationBe02b(Page): def vars_for_template(self): return {'be02b_stored_m': self.participant.vars['be02b_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["confirmation_be02b"] class EPCSchedule4BisM(Page): def is_displayed(self): return self.group.type == 'EPC' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["be02b_man"] def before_next_page(self): self.player.guess_be02b_man() # EX POST COLD RANDOMIZATION END class ScheduleWaitPage2(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds title_text = "Waiting" body_text = "Waiting to get how much you have to listen to the sound" class EPCScheduleListenW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment != 1 and self.group.type == 'EPC' and self.round_number == Constants.num_rounds class EPCScheduleListenTransW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment == 1 and self.group.type == 'EPC' and self.round_number == Constants.num_rounds class EPCListenDecideW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be02"] class EPCSoundListenW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds class EPCListenDecideM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds form_model = "player" form_fields = ["sound_decide_m"] class EPCOutsideW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.group.subtreatment == 2 and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be03_w"] class EPCBeadM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be03"] def before_next_page(self): self.participant.vars['be01'] = self.group.be01 class Waitforjar2(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPC' and self.round_number == Constants.num_rounds class OutsideWaitPage2(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.subtreatment == 2 and self.group.type == 'EPC' and self.round_number == Constants.num_rounds # EX POST COLD END ##################################################################################################### # EX POST HOT START #################################################################################################### class EPHIntroM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == 1 class EPHPracticeW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPH' and self.round_number == 1 form_model = "group" form_fields = ["riceplate_practice"] class EPHPracticeW2(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPH' and self.round_number == 1 class EPHDescriptionW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPH' and self.round_number == 1 form_model = "group" form_fields = ["be01"] # TB: save in participant var player field be01 def before_next_page(self): self.participant.vars['be01'] = self.group.be01 class RiceWaitPage3(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == 1 title_text = "Waiting" body_text = "Waiting for the woman to make her choice EPH constant round" class RiceWaitPage3Round1(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == 1 title_text = "Waiting" body_text = "Waiting for the woman to make her choice" class EPHDescriptionM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == 1 def before_next_page(self): self.participant.vars['be01'] = self.group.be01 # EX POST HOT RANDOMIZATION ############################################################################################ class EPHSchedule1M(Page): def before_next_page(self): self.player.guess_be01a_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["be01a_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EPHConfirmationBe01a(Page): def vars_for_template(self): return {'be01a_stored_m': self.participant.vars['be01a_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["confirmation_be01a"] class EPHSchedule1BisM(Page): def before_next_page(self): self.player.guess_be01a_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['1'] form_model = "player" form_fields = ["be01a_man"] class EPHSchedule2M(Page): def before_next_page(self): self.player.guess_be01b_man() def is_displayed(self): return self.group.type == 'EPH' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["be01b_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EPHConfirmationBe01b(Page): def vars_for_template(self): return {'be01b_stored_m': self.participant.vars['be01b_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["confirmation_be01b"] class EPHSchedule2BisM(Page): def before_next_page(self): self.player.guess_be01b_man() def is_displayed(self): return self.group.type == 'EPH' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['2'] form_model = "player" form_fields = ["be01b_man"] class EPHSchedule3M(Page): def before_next_page(self): self.player.guess_be02a_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["be02a_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EPHConfirmationBe02a(Page): def vars_for_template(self): return {'be02a_stored_m': self.participant.vars['be02a_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["confirmation_be02a"] class EPHSchedule3BisM(Page): def before_next_page(self): self.player.guess_be02a_man() def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['3'] form_model = "player" form_fields = ["be02a_man"] class EPHSchedule4M(Page): def before_next_page(self): self.player.guess_be02b_man() def is_displayed(self): return self.group.type == 'EPH' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["be02b_man", "checkslider"] def error_message_checkslider_checkslider(self, value): if not value: return "Please make your decision using slider" class EPHConfirmationBe02b(Page): def vars_for_template(self): return {'be02b_stored_m': self.participant.vars['be02b_man_st'] } def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["confirmation_be02b"] class EPHSchedule4BisM(Page): def before_next_page(self): self.player.guess_be02b_man() def is_displayed(self): return self.group.type == 'EPH' and self.group.subtreatment == 1 and self.participant.vars['gender'] == 'M' and self.round_number == self.participant.vars['task_rounds']['4'] form_model = "player" form_fields = ["be02b_man"] class ScheduleWaitPage3(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.round_number == self.round_number == Constants.num_rounds title_text = "Waiting" body_text = "Waiting to get how much you have to listen to the sound" class ScheduleWaitPage3Round1(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and (self.round_number == 1 or self.round_number == 2 or self.round_number == 3 or self.round_number == 4) title_text = "Waiting" body_text = "Waiting to get how much you have to listen to the sound" class ScheduleWaitPage3Round2(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.round_number == 2 title_text = "Waiting" body_text = "Waiting to get how much you have to listen to the sound" class ScheduleWaitPage3Round3(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.round_number == 3 title_text = "Waiting" body_text = "Waiting to get how much you have to listen to the sound" class ScheduleWaitPage3Round4(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.round_number == 4 title_text = "Waiting" body_text = "Waiting to get how much you have to listen to the sound" class EPHBeadM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be03"] class Waitforjar3(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPH' and self.round_number == Constants.num_rounds class EPHScheduleListenW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment != 1 and self.group.type == 'EPH' and self.round_number == Constants.num_rounds class EPHScheduleListenTransW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment == 1 and self.group.type == 'EPH' and self.round_number == Constants.num_rounds class EPHSoundListenW(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPH' and self.round_number == Constants.num_rounds class EPHListenDecideM(Page): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.type == 'EPH' and self.round_number == Constants.num_rounds form_model = "player" form_fields = ["sound_decide_m"] class EPHOutsideW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.subtreatment == 2 and self.group.type == 'EPH' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be03_w"] class EPHListenDecideW(Page): def is_displayed(self): return self.participant.vars['gender'] == 'W' and self.group.type == 'EPH' and self.round_number == Constants.num_rounds form_model = "group" form_fields = ["be02"] class OutsideWaitPage3(WaitPage): def is_displayed(self): return self.participant.vars['gender'] == 'M' and self.group.subtreatment == 2 and self.group.type == 'EPH' and self.round_number == Constants.num_rounds ### EX POST HOT END #################################################################################################### ### END COMMON PAGES ################################################################################################### class End(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.group.subtreatment != 1 and self.round_number == Constants.num_rounds class EndTransfer(Page): def vars_for_template(self): return self.player.vars_for_template() def is_displayed(self): return self.group.subtreatment == 1 and self.round_number == Constants.num_rounds class ThankYou(Page): def is_displayed(self): return self.round_number == Constants.num_rounds class Feedback1(Page): def is_displayed(self): return self.round_number == Constants.num_rounds form_model = "player" form_fields = ['feedback1'] class Feedback2(Page): def is_displayed(self): return self.round_number == Constants.num_rounds form_model = "player" form_fields = ['feedback2'] class ExtraComments(Page): def is_displayed(self): return self.round_number == Constants.num_rounds form_model = "player" form_fields = ['extra_comment'] page_sequence = [ InitialSelection, WaitForInitialSelection, Gender, Treatment, PeopleWatching, InstructionW, InstructionM, EPCDescriptionM, EPCPracticeW, EPCPracticeW2, EPCIntroW, EPCDescriptionW, EPCPreRandomizationM, EPCSchedule1M, EPCConfirmationBe01a, EPCSchedule1BisM, EPCSchedule2M, EPCConfirmationBe01b, EPCSchedule2BisM, EPCSchedule3M, EPCConfirmationBe02a, EPCSchedule3BisM, EPCSchedule4M, EPCConfirmationBe02b, EPCSchedule4BisM, RiceWaitPage2, ScheduleWaitPage2, EPCScheduleListenW, EPCScheduleListenTransW, EPCOutsideW, EPCBeadM, OutsideWaitPage2, EPCListenDecideW, EPCSoundListenW, Waitforjar2, EPCListenDecideM, End, EndTransfer, Feedback1, Feedback2, ExtraComments, ThankYou ]