from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import time class Hello(Page): form_model = 'player' def vars_for_template(self): self.player.Prolific_ID = self.player.participant.label class ProlificID(Page): form_model = 'player' form_fields = ['Prolific_ID'] def is_displayed(self): return self.round_number == 1 class Welcome(Page): form_model = 'player' form_fields = ['control_question'] def vars_for_template(self): self.player.Prolific_ID = self.player.participant.label def is_displayed(self): return self.round_number == 1 class General_Instructions(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 class Description(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 class Examples(Page): form_model = 'player' def is_displayed(self): return self.round_number == 1 class Questions(Page): form_model = 'player' form_fields = ['question1', 'question2'] def is_displayed(self): return self.round_number == 1 class Questionnaire_before(Page): form_model = 'player' form_fields = ['bond_before', 'solidarity_before', 'committed_before', 'glad_before', 'proud_before', 'pleasant_before', 'good_feeling_before', 'member_before', 'identity_before', 'attention_check_before', 'see_my_self_before', 'common_before', 'similar_before', 'a_lot_before', 'similar_to_me_before'] def is_displayed(self): return self.round_number == 25 class Contribution_decision(Page): form_model = 'player' form_fields = ['contribution'] def is_displayed(self): return self.round_number == 25 class Others_Contribution_decision(Page): form_model = 'player' form_fields = ['contribution_estimate'] def is_displayed(self): return self.round_number == 25 class ResultsWaitPage(WaitPage): after_all_players_arrive = 'set_payoffs' body_text = "Please wait while the other participant in your group makes their decisions." def is_displayed(self): return self.round_number == 25 class Earnings(Page): form_model = 'player' #form_fields = ['contribution', # 'other_contribution', # 'my_payoff', #'other_payoff', # 'bonus_earnings', # 'fixed_earnings', # 'final_earnings'] def is_displayed(self): return self.round_number == 25 class Questionnaire_after(Page): form_model = 'player' form_fields = ['bond_after', 'solidarity_after', 'committed_after', 'glad_after', 'proud_after', 'pleasant_after', 'good_feeling_after', 'member_after', 'identity_after', 'attention_check_after', 'see_my_self_after', 'common_after', 'similar_after', 'a_lot_after', 'similar_to_me_after'] def is_displayed(self): return self.round_number == 25 class Final_Questionnaire(Page): form_model = 'player' form_fields = ['gender', 'other_gender_belief', 'age', 'height', 'language', 'max_income', 'trust', 'risk', 'instructions', 'fair_contribute', 'other_fair_contribute', 'econ_exp', 'feedback'] def is_displayed(self): return self.round_number == 25 class Thanks(Page): form_model = 'player' def is_displayed(self): return self.round_number == 25 class countdown(Page): form_model = 'player' timeout_seconds = 5 def is_displayed(self): return self.round_number == 1 def before_next_page(self): self.player.participant.vars['expiry'] = time.time() + (2 * 30) #self.player.participant.vars['Experiment2_correct'] = self.player.correct #@staticmethod class RealEffort(Page): form_model = 'player' form_fields = ['digit_response_1', 'digit_response_2'] # def vars_for_template(self): # return dict( # correct=self.participant.vars['Experiment2_correct'], # ) timeout_seconds = 60 def get_timeout_seconds(self): return self.player.participant.vars['expiry'] - time.time() def is_displayed(self): return self.get_timeout_seconds() > 1 def before_next_page(self): return{ self.player.correct_answers(), self.player.sum_answer(), self.player.prev_correct(), self.player.show_answer(), self.group.set_treatment(), } class WaitAfterTaskPage(WaitPage): #after_all_players_arrive = 'role' body_text = "Please wait while the other participant in your group makes their decisions." def is_displayed(self): return self.round_number == 25 and self.player.treatment == "merit" def after_all_players_arrive(self): self.group.role() page_sequence = [Welcome, ProlificID, General_Instructions, Description, Examples, Questions, countdown, RealEffort, WaitAfterTaskPage, Questionnaire_before, Contribution_decision, Others_Contribution_decision, ResultsWaitPage, Earnings, Questionnaire_after, Final_Questionnaire, Thanks]