from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class SVO1(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['SVO1'] class SVO2(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['SVO2'] class SVO3(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['SVO3'] class SVO4(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['SVO4'] class SVO5(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['SVO5'] class SVO6(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['SVO6'] # def before_next_page(self): # self.group.set_svo_payoff() class SurveyP2(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['Female', 'Age', 'BirthCountry', 'YrsAus', 'StudyLvl', 'FieldStudy', 'DonationPast', 'DonationFuture', 'VolunteerPast', 'VolunteerFuture'] class SurveyP3(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['surveyLeaderReason', 'surveyBeliefOtherLdr'] class SurveyP4(Page): def is_displayed(self): return self.player.participant.vars['accept'] form_model = 'player' form_fields = ['surveyInvestReason', 'surveyInvestCharityReason', 'surveyFeedback', 'payID', 'payID_reenter'] def error_message(self, values): print('values is', values) if values['payID'] != values['payID_reenter']: return 'The PayIDs you entered do not match.' def before_next_page(self): if self.player.participant.vars['charity'] == 1: self.player.charity_name = 'Australian Cancer Research Foundation' elif self.player.participant.vars['charity'] == 2: self.player.charity_name = 'Earthwatch Institute' elif self.player.participant.vars['charity'] == 3: self.player.charity_name = 'Habitat for Humanity Australia' elif self.player.participant.vars['charity'] == 4: self.player.charity_name = 'Headspace' else: self.player.charity_name = 'Starlight Children\'s Foundation' class ResultsWaitPage(WaitPage): # wait_for_all_groups = True def after_all_players_arrive(self): self.group.set_svo_payoff() class FillerPage(Page): def is_displayed(self): return self.player.participant.vars['accept'] def before_next_page(self): # self.group.set_svo_payoff() self.player.final_payoff = c(Constants.show_up) + c(self.player.svo_payoff) + \ c(self.player.participant.vars['task_payoff']) class Results(Page): def is_displayed(self): return self.player.participant.vars['accept'] def vars_for_template(self): return {'leader_safe1': 100 - self.player.participant.vars['leader_risky1'], 'leader_safe2': 100 - self.player.participant.vars['leader_risky2'], 'leader_safe3': 100 - self.player.participant.vars['leader_risky3'], } page_sequence = [ SVO1, SVO2, SVO3, SVO4, SVO5, SVO6, SurveyP2, SurveyP3, SurveyP4, ResultsWaitPage, FillerPage, Results ]