from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import time ##class ResultsWaitPage(WaitPage): ## wait_for_all_groups = False ## title_text = "Waiting for your session to begin" ## body_text = "Waiting for your session to begin" class Welcome2(Page): pass class General(Page): pass class Task1(Page): pass class Start(Page): def is_displayed(self): return self.round_number == 1 def before_next_page(self): self.participant.vars['expiry'] = time.time() + 1 ########################## TASK 1 QUESTIONS ######################### class Question1(Page): form_model = 'player' form_fields = ['q1_t1'] #subject input question 1 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q1_t1 == Constants.total_q1_t1: self.player.correct_q1_t1 = 1 elif self.player.q1_t1 != Constants.total_q1_t1: self.player.correct_q1_t1 = 0 class Question2(Page): form_model = 'player' form_fields = ['q2_t1'] #subject input question 2 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q2_t1 == Constants.total_q2_t1: self.player.correct_q2_t1 = 1 elif self.player.q2_t1 != Constants.total_q2_t1: self.player.correct_q2_t1 = 0 class Question3(Page): form_model = 'player' form_fields = ['q3_t1'] #subject input question 3 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q3_t1 == Constants.total_q3_t1: self.player.correct_q3_t1 = 1 elif self.player.q3_t1 != Constants.total_q3_t1: self.player.correct_q3_t1 = 0 class Question4(Page): form_model = 'player' form_fields = ['q4_t1'] #subject input question 4 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q4_t1 == Constants.total_q4_t1: self.player.correct_q4_t1 = 1 elif self.player.q4_t1 != Constants.total_q4_t1: self.player.correct_q4_t1 = 0 class Question5(Page): form_model = 'player' form_fields = ['q5_t1'] #subject input question 5 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q5_t1 == Constants.total_q5_t1: self.player.correct_q5_t1 = 1 elif self.player.q5_t1 != Constants.total_q5_t1: self.player.correct_q5_t1 = 0 class Question6(Page): form_model = 'player' form_fields = ['q6_t1'] #subject input question 6 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q6_t1 == Constants.total_q6_t1: self.player.correct_q6_t1 = 1 elif self.player.q6_t1 != Constants.total_q6_t1: self.player.correct_q6_t1 = 0 class Question7(Page): form_model = 'player' form_fields = ['q7_t1'] #subject input question 7 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q7_t1 == Constants.total_q7_t1: self.player.correct_q7_t1 = 1 elif self.player.q7_t1 != Constants.total_q7_t1: self.player.correct_q7_t1 = 0 class Question8(Page): form_model = 'player' form_fields = ['q8_t1'] #subject input question 8 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q8_t1 == Constants.total_q8_t1: self.player.correct_q8_t1 = 1 elif self.player.q8_t1 != Constants.total_q8_t1: self.player.correct_q8_t1 = 0 class Question9(Page): form_model = 'player' form_fields = ['q9_t1'] #subject input question 9 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q9_t1 == Constants.total_q9_t1: self.player.correct_q9_t1 = 1 elif self.player.q9_t1 != Constants.total_q9_t1: self.player.correct_q9_t1 = 0 class Question10(Page): form_model = 'player' form_fields = ['q10_t1'] #subject input question 10 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q10_t1 == Constants.total_q10_t1: self.player.correct_q10_t1 = 1 elif self.player.q10_t1 != Constants.total_q10_t1: self.player.correct_q10_t1 = 0 class Question11(Page): form_model = 'player' form_fields = ['q11_t1'] #subject input question 11 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q11_t1 == Constants.total_q11_t1: self.player.correct_q11_t1 = 1 elif self.player.q11_t1 != Constants.total_q11_t1: self.player.correct_q11_t1 = 0 class Question12(Page): form_model = 'player' form_fields = ['q12_t1'] #subject input question 12 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q12_t1 == Constants.total_q12_t1: self.player.correct_q12_t1 = 1 elif self.player.q12_t1 != Constants.total_q12_t1: self.player.correct_q12_t1 = 0 class Question13(Page): form_model = 'player' form_fields = ['q13_t1'] #subject input question 13 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q13_t1 == Constants.total_q13_t1: self.player.correct_q13_t1 = 1 elif self.player.q13_t1 != Constants.total_q13_t1: self.player.correct_q13_t1 = 0 class Question14(Page): form_model = 'player' form_fields = ['q14_t1'] #subject input question 14 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q14_t1 == Constants.total_q14_t1: self.player.correct_q14_t1 = 1 elif self.player.q14_t1 != Constants.total_q14_t1: self.player.correct_q14_t1 = 0 class Question15(Page): form_model = 'player' form_fields = ['q15_t1'] #subject input question 15 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q15_t1 == Constants.total_q15_t1: self.player.correct_q15_t1 = 1 elif self.player.q15_t1 != Constants.total_q15_t1: self.player.correct_q15_t1 = 0 class Question16(Page): form_model = 'player' form_fields = ['q16_t1'] #subject input question 16 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q16_t1 == Constants.total_q16_t1: self.player.correct_q16_t1 = 1 elif self.player.q16_t1 != Constants.total_q16_t1: self.player.correct_q16_t1 = 0 class Question17(Page): form_model = 'player' form_fields = ['q17_t1'] #subject input question 17 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q17_t1 == Constants.total_q17_t1: self.player.correct_q17_t1 = 1 elif self.player.q17_t1 != Constants.total_q17_t1: self.player.correct_q17_t1 = 0 class Question18(Page): form_model = 'player' form_fields = ['q18_t1'] #subject input question 18 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q18_t1 == Constants.total_q18_t1: self.player.correct_q18_t1 = 1 elif self.player.q18_t1 != Constants.total_q18_t1: self.player.correct_q18_t1 = 0 class Question19(Page): form_model = 'player' form_fields = ['q19_t1'] #subject input question 19 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q19_t1 == Constants.total_q19_t1: self.player.correct_q19_t1 = 1 elif self.player.q19_t1 != Constants.total_q19_t1: self.player.correct_q19_t1 = 0 class Question20(Page): form_model = 'player' form_fields = ['q20_t1'] #subject input question 20 task 1 timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q20_t1 == Constants.total_q20_t1: self.player.correct_q20_t1 = 1 elif self.player.q20_t1 != Constants.total_q20_t1: self.player.correct_q20_t1 = 0 class Task2(Page): def before_next_page(self): #payoff task 1 self.player.payoff_task1 = round((self.player.correct_q1_t1 + self.player.correct_q2_t1 + self.player.correct_q3_t1 + self.player.correct_q4_t1 + self.player.correct_q5_t1 + self.player.correct_q6_t1 + self.player.correct_q7_t1 + self.player.correct_q8_t1 + self.player.correct_q9_t1 + self.player.correct_q10_t1 + self.player.correct_q11_t1 + self.player.correct_q12_t1 + self.player.correct_q13_t1 + self.player.correct_q14_t1 + self.player.correct_q15_t1 + self.player.correct_q16_t1 + self.player.correct_q17_t1 + self.player.correct_q18_t1 + self.player.correct_q19_t1 + self.player.correct_q20_t1)*(0.02), 2) #how many they got correct task1 self.player.total_task1 = (self.player.correct_q1_t1 + self.player.correct_q2_t1 + self.player.correct_q3_t1 + self.player.correct_q4_t1 + self.player.correct_q5_t1 + self.player.correct_q6_t1 + self.player.correct_q7_t1 + self.player.correct_q8_t1 + self.player.correct_q9_t1 + self.player.correct_q10_t1 + self.player.correct_q11_t1 + self.player.correct_q12_t1 + self.player.correct_q13_t1 + self.player.correct_q14_t1 + self.player.correct_q15_t1 + self.player.correct_q16_t1 + self.player.correct_q17_t1 + self.player.correct_q18_t1 + self.player.correct_q19_t1 + self.player.correct_q20_t1) #def before_next_page(self): self.group.group_role() class Task2p2(Page): pass class Choice(Page): form_model = 'player' form_fields = ['choice'] def before_next_page(self): self.group.group_choice() ######################## TASK 2 QUESTIONS ############################################################## class Start2(Page): def is_displayed(self): return self.round_number == 1 def before_next_page(self): self.participant.vars['expiry'] = time.time() + 1 class Question1p2(Page): form_model = 'player' form_fields = ['q1_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q1_t2 == Constants.total_q1_t2: self.player.correct_q1_t2 = 1 elif self.player.q1_t2 != Constants.total_q1_t2: self.player.correct_q1_t2 = 0 class Question2p2(Page): form_model = 'player' form_fields = ['q2_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q2_t2 == Constants.total_q2_t2: self.player.correct_q2_t2 = 1 elif self.player.q2_t2 != Constants.total_q2_t2: self.player.correct_q2_t2 = 0 class Question3p2(Page): form_model = 'player' form_fields = ['q3_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q3_t2 == Constants.total_q3_t2: self.player.correct_q3_t2 = 1 elif self.player.q3_t2 != Constants.total_q3_t2: self.player.correct_q3_t2 = 0 class Question4p2(Page): form_model = 'player' form_fields = ['q4_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q4_t2 == Constants.total_q4_t2: self.player.correct_q4_t2 = 1 elif self.player.q4_t2 != Constants.total_q4_t2: self.player.correct_q4_t2 = 0 class Question5p2(Page): form_model = 'player' form_fields = ['q5_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q5_t2 == Constants.total_q5_t2: self.player.correct_q5_t2 = 1 elif self.player.q5_t2 != Constants.total_q5_t2: self.player.correct_q5_t2 = 0 class Question6p2(Page): form_model = 'player' form_fields = ['q6_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q6_t2 == Constants.total_q6_t2: self.player.correct_q6_t2 = 1 elif self.player.q6_t2 != Constants.total_q6_t2: self.player.correct_q6_t2 = 0 class Question7p2(Page): form_model = 'player' form_fields = ['q7_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q7_t2 == Constants.total_q7_t2: self.player.correct_q7_t2 = 1 elif self.player.q7_t2 != Constants.total_q7_t2: self.player.correct_q7_t2 = 0 class Question8p2(Page): form_model = 'player' form_fields = ['q8_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q8_t2 == Constants.total_q8_t2: self.player.correct_q8_t2 = 1 elif self.player.q8_t2 != Constants.total_q8_t2: self.player.correct_q8_t2 = 0 class Question9p2(Page): form_model = 'player' form_fields = ['q9_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q9_t2 == Constants.total_q9_t2: self.player.correct_q9_t2 = 1 elif self.player.q9_t2 != Constants.total_q9_t2: self.player.correct_q9_t2 = 0 class Question10p2(Page): form_model = 'player' form_fields = ['q10_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q10_t2 == Constants.total_q10_t2: self.player.correct_q10_t2 = 1 elif self.player.q10_t2 != Constants.total_q10_t2: self.player.correct_q10_t2 = 0 class Question11p2(Page): form_model = 'player' form_fields = ['q11_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q11_t2 == Constants.total_q11_t2: self.player.correct_q11_t2 = 1 elif self.player.q11_t2 != Constants.total_q11_t2: self.player.correct_q11_t2 = 0 class Question12p2(Page): form_model = 'player' form_fields = ['q12_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q12_t2 == Constants.total_q12_t2: self.player.correct_q12_t2 = 1 elif self.player.q12_t2 != Constants.total_q12_t2: self.player.correct_q12_t2 = 0 class Question13p2(Page): form_model = 'player' form_fields = ['q13_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q13_t2 == Constants.total_q13_t2: self.player.correct_q13_t2 = 1 elif self.player.q13_t2 != Constants.total_q13_t2: self.player.correct_q13_t2 = 0 class Question14p2(Page): form_model = 'player' form_fields = ['q14_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q14_t2 == Constants.total_q14_t2: self.player.correct_q14_t2 = 1 elif self.player.q14_t2 != Constants.total_q14_t2: self.player.correct_q14_t2 = 0 class Question15p2(Page): form_model = 'player' form_fields = ['q15_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q15_t2 == Constants.total_q15_t2: self.player.correct_q15_t2 = 1 elif self.player.q15_t2 != Constants.total_q15_t2: self.player.correct_q15_t2 = 0 class Question16p2(Page): form_model = 'player' form_fields = ['q16_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q16_t2 == Constants.total_q16_t2: self.player.correct_q16_t2 = 1 elif self.player.q16_t2 != Constants.total_q16_t2: self.player.correct_q16_t2 = 0 class Question17p2(Page): form_model = 'player' form_fields = ['q17_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q17_t2 == Constants.total_q17_t2: self.player.correct_q17_t2 = 1 elif self.player.q17_t2 != Constants.total_q17_t2: self.player.correct_q17_t2 = 0 class Question18p2(Page): form_model = 'player' form_fields = ['q18_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q18_t2 == Constants.total_q18_t2: self.player.correct_q18_t2 = 1 elif self.player.q18_t2 != Constants.total_q18_t2: self.player.correct_q18_t2 = 0 class Question19p2(Page): form_model = 'player' form_fields = ['q19_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q19_t2 == Constants.total_q19_t2: self.player.correct_q19_t2 = 1 elif self.player.q19_t2 != Constants.total_q19_t2: self.player.correct_q19_t2 = 0 class Question20p2(Page): form_model = 'player' form_fields = ['q20_t2'] timer_text = 'Time left to complete this task:' #timer def get_timeout_seconds(self): return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.participant.vars['expiry'] - time.time() > 3 #determines subject input is correct def before_next_page(self): if self.player.q20_t2 == Constants.total_q20_t2: self.player.correct_q20_t2 = 1 elif self.player.q20_t2 != Constants.total_q20_t2: self.player.correct_q20_t2 = 0 class Continue1(Page): def before_next_page(self): # number the got correct task 2 for payoff self.player.num_task2 = round((self.player.correct_q1_t2 + self.player.correct_q2_t2 + self.player.correct_q3_t2 + self.player.correct_q4_t2 + self.player.correct_q5_t2 + self.player.correct_q6_t2 + self.player.correct_q7_t2 + self.player.correct_q8_t2 + self.player.correct_q9_t2 + self.player.correct_q10_t2 + self.player.correct_q11_t2 + self.player.correct_q12_t2 + self.player.correct_q13_t2 + self.player.correct_q14_t2 + self.player.correct_q15_t2 + self.player.correct_q16_t2 + self.player.correct_q17_t2 + self.player.correct_q18_t2 + self.player.correct_q19_t2 + self.player.correct_q20_t2 ), 2) # number they got correct task 2 for self.player.num_check = (self.player.correct_q1_t2 + self.player.correct_q2_t2 + self.player.correct_q3_t2 + self.player.correct_q4_t2 + self.player.correct_q5_t2 + self.player.correct_q6_t2 + self.player.correct_q7_t2 + self.player.correct_q8_t2 + self.player.correct_q9_t2 + self.player.correct_q10_t2 + self.player.correct_q11_t2 + self.player.correct_q12_t2 + self.player.correct_q13_t2 + self.player.correct_q14_t2 + self.player.correct_q15_t2 + self.player.correct_q16_t2 + self.player.correct_q17_t2 + self.player.correct_q18_t2 + self.player.correct_q19_t2 + self.player.correct_q20_t2 ) class Survey(Page): pass class SurveyQuestions1(Page): form_model = 'player' form_fields = ['s1'] #survey question def before_next_page(self): if self.player.s1 == 1: self.player.s11count = 1 elif self.player.s1 == 2: self.player.s12count = 1 elif self.player.s1 == 3: self.player.s13count = 1 elif self.player.s1 == 4: self.player.s14count = 1 else: self.player.s15count = 1 class SurveyQuestions2(Page): form_model = 'player' form_fields = ['s2'] #survey question def before_next_page(self): if self.player.s2 == 1: self.player.s21count = 1 elif self.player.s2 == 2: self.player.s22count = 1 elif self.player.s2 == 3: self.player.s23count = 1 elif self.player.s2 == 4: self.player.s24count = 1 else: self.player.s25count = 1 class SurveyQuestions3(Page): form_model = 'player' form_fields = ['s3'] #survey question def before_next_page(self): if self.player.s3 == 1: self.player.s31count = 1 elif self.player.s3 == 2: self.player.s32count = 1 elif self.player.s3 == 3: self.player.s33count = 1 elif self.player.s3 == 4: self.player.s34count = 1 else: self.player.s35count = 1 class SurveyQuestions4(Page): form_model = 'player' form_fields = ['s4'] #survey question def before_next_page(self): if self.player.s4 == 1: self.player.s41count = 1 elif self.player.s4 == 2: self.player.s42count = 1 elif self.player.s4 == 3: self.player.s43count = 1 elif self.player.s4 == 4: self.player.s44count = 1 else: self.player.s45count = 1 class SurveyQuestions5(Page): form_model = 'player' form_fields = ['s5'] #survey question def before_next_page(self): if self.player.s5 == 1: self.player.s51count = 1 elif self.player.s5 == 2: self.player.s52count = 1 elif self.player.s5 == 3: self.player.s53count = 1 elif self.player.s5 == 4: self.player.s54count = 1 else: self.player.s55count = 1 class SurveyQuestions6(Page): form_model = 'player' form_fields = ['s6'] #survey question def before_next_page(self): if self.player.s6 == 1: self.player.s61count = 1 elif self.player.s6 == 2: self.player.s62count = 1 elif self.player.s6 == 3: self.player.s63count = 1 elif self.player.s6 == 4: self.player.s64count = 1 else: self.player.s65count = 1 class SurveyQuestions7(Page): form_model = 'player' form_fields = ['s7'] #survey question def before_next_page(self): if self.player.s7 == 1: self.player.s71count = 1 elif self.player.s7 == 2: self.player.s72count = 1 elif self.player.s7 == 3: self.player.s73count = 1 elif self.player.s7 == 4: self.player.s74count = 1 else: self.player.s75count = 1 class SurveyQuestions8(Page): form_model = 'player' form_fields = ['s8'] #survey question def before_next_page(self): if self.player.s8 == 1: self.player.s81count = 1 elif self.player.s8 == 2: self.player.s82count = 1 elif self.player.s8 == 3: self.player.s83count = 1 elif self.player.s8 == 4: self.player.s84count = 1 else: self.player.s85count = 1 class SurveyQuestions(Page): form_model = 'player' form_fields = [ 'choicegc', 's9', 'rank1', 's10', 's11', 's12', 's14', 's15','s16', 's17', 's18', 's19', 's20', 's21', 's22', 's23', 's24', 's25', 's26', 's27',] #survey question def before_next_page(self): if self.player.choicegc == 2: if Constants.gambleprob <= 50: self.player.payoff_gc = 0.24 elif Constants.gambleprob > 50: self.player.payoff_gc = 0.36 elif self.player.choicegc == 3: if Constants.gambleprob <= 50: self.player.payoff_gc = 0.20 elif Constants.gambleprob > 50: self.player.payoff_gc = 0.44 elif self.player.choicegc == 4: if Constants.gambleprob <= 50: self.player.payoff_gc = 0.16 elif Constants.gambleprob > 50: self.player.payoff_gc = 0.52 elif self.player.choicegc == 5: if Constants.gambleprob <= 50: self.player.payoff_gc = 0.12 elif Constants.gambleprob > 50: self.player.payoff_gc = 0.60 elif self.player.choicegc == 6: if Constants.gambleprob <= 50: self.player.payoff_gc = 0.02 elif Constants.gambleprob > 50: self.player.payoff_gc = 0.70 else: self.player.payoff_gc = 0.28 class DonationGender(Page): form_model = 'player' form_fields = ['donation1', 'donation2'] def error_message(self, values): print('values is', values) if values["donation1"] + values["donation2"] > 3: return 'You can not give more than $3 total.' ##class finishpage(Page): ## pass class ResultsWaitPage(WaitPage): wait_for_all_groups = True title_text = "Please Wait" body_text = "You have completed the whole experiment. We need to wait for other participants' performance to determine your payment, which may take a while. You can do your other stuffs while others finish, but please DO NOT close this page or return the task, or forget to come back to click finish, otherwise we cannot access to your payment. Thanks for your patience!" ##class Continue(Page): ## ## def before_next_page(self): ## self.group.group_pay() ## self.group.group_check() ## ##class Continue2(Page): ## ## def before_next_page(self): ## self.group.max_value() ## self.player.max = self.group.max2 class Continue3(Page): def before_next_page(self): ## self.group.group_pay() ## self.group.group_check() ## self.group.group_sum() self.group.max_value() self.player.max = self.group.max2 if self.player.choice2 == 1: if Constants.paymentprob <= 20: if self.player.numtotal_check == self.player.max: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.16)/2, 2) self.player.winner = 1 elif self.player.numtotal_check != self.player.max: self.player.payoff_task2 = 0 self.player.winner = 0 elif Constants.paymentprob > 20: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.04)/2, 2) self.player.winner = 0 elif self.player.choice2 == 2: if Constants.paymentprob <= 40: if self.player.numtotal_check == self.player.max: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.16)/2, 2) self.player.winner = 1 elif self.player.numtotal_check != self.player.max: self.player.payoff_task2 = 0 self.player.winner = 0 elif Constants.paymentprob > 40: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.04)/2, 2) self.player.winner = 0 elif self.player.choice2 == 3: if Constants.paymentprob <= 60: if self.player.numtotal_check == self.player.max: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.16)/2, 2) self.player.winner = 1 elif self.player.numtotal_check != self.player.max: self.player.payoff_task2 = 0 self.player.winner = 0 elif Constants.paymentprob > 60: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.04)/2, 2) self.player.winner = 0 elif self.player.choice2 == 4: if Constants.paymentprob <= 80: if self.player.numtotal_check == self.player.max: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.16)/2, 2) self.player.winner = 1 elif self.player.numtotal_check != self.player.max: self.player.payoff_task2 = 0 self.player.winner = 0 elif Constants.paymentprob > 80: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.04)/2, 2) self.player.winner = 0 elif self.player.choice2 == 5: if self.player.numtotal_check == self.player.max: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.16)/2, 2) self.player.winner = 1 elif self.player.numtotal_check != self.player.max: self.player.payoff_task2 = 0 self.player.winner = 0 else: self.player.payoff_task2 = round((self.player.numtotal_task2 * 0.04)/2, 2) self.player.winner = 0 #class ResultsWaitPage1(WaitPage): #wait_for_all_groups = True class Continue4(Page): form_model = 'player' form_fields = ['s28'] #survey question def before_next_page(self): self.group.group_pay() self.group.group_check() self.group.group_sum() if self.player.s1 == 1: if self.group.maxnorm1 == self.group.sums11: self.player.payoff_s1 = 0.1 elif self.group.maxnorm1 != self.group.sums11: self.player.payoff_s1 = 0 elif self.player.s1 == 2: if self.group.maxnorm1 == self.group.sums12: self.player.payoff_s1 = 0.1 elif self.group.maxnorm1 != self.group.sums12: self.player.payoff_s1 = 0 elif self.player.s1 == 3: if self.group.maxnorm1 == self.group.sums13: self.player.payoff_s1 = 0.1 elif self.group.maxnorm1 != self.group.sums13: self.player.payoff_s1 = 0 elif self.player.s1 == 4: if self.group.maxnorm1 == self.group.sums14: self.player.payoff_s1 = 0.1 elif self.group.maxnorm1 != self.group.sums14: self.player.payoff_s1 = 0 else: if self.group.maxnorm1 == self.group.sums15: self.player.payoff_s1 = 0.1 elif self.group.maxnorm1 != self.group.sums15: self.player.payoff_s1 = 0 ####################### if self.player.s2 == 1: if self.group.maxnorm2 == self.group.sums21: self.player.payoff_s2 = 0.1 elif self.group.maxnorm2 != self.group.sums21: self.player.payoff_s2 = 0 elif self.player.s2 == 2: if self.group.maxnorm2 == self.group.sums22: self.player.payoff_s2 = 0.1 elif self.group.maxnorm2 != self.group.sums22: self.player.payoff_s2 = 0 elif self.player.s2 == 3: if self.group.maxnorm2 == self.group.sums23: self.player.payoff_s2 = 0.1 elif self.group.maxnorm2 != self.group.sums23: self.player.payoff_s2 = 0 elif self.player.s2 == 4: if self.group.maxnorm2 == self.group.sums24: self.player.payoff_s2 = 0.1 elif self.group.maxnorm2 != self.group.sums24: self.player.payoff_s2 = 0 else: if self.group.maxnorm2 == self.group.sums25: self.player.payoff_s2 = 0.1 elif self.group.maxnorm2 != self.group.sums25: self.player.payoff_s2 = 0 #################### if self.player.s3 == 1: if self.group.maxnorm3 == self.group.sums31: self.player.payoff_s3 = 0.1 elif self.group.maxnorm3 != self.group.sums31: self.player.payoff_s3 = 0 elif self.player.s3 == 2: if self.group.maxnorm3 == self.group.sums32: self.player.payoff_s3 = 0.1 elif self.group.maxnorm3 != self.group.sums32: self.player.payoff_s3 = 0 elif self.player.s3 == 3: if self.group.maxnorm3 == self.group.sums33: self.player.payoff_s3 = 0.1 elif self.group.maxnorm3 != self.group.sums33: self.player.payoff_s3 = 0 elif self.player.s3 == 4: if self.group.maxnorm3 == self.group.sums34: self.player.payoff_s3 = 0.1 elif self.group.maxnorm3 != self.group.sums34: self.player.payoff_s3 = 0 else: if self.group.maxnorm3 == self.group.sums35: self.player.payoff_s3 = 0.1 elif self.group.maxnorm3 != self.group.sums35: self.player.payoff_s3 = 0 #################### if self.player.s4 == 1: if self.group.maxnorm4 == self.group.sums41: self.player.payoff_s4 = 0.1 elif self.group.maxnorm4 != self.group.sums41: self.player.payoff_s4 = 0 elif self.player.s4 == 2: if self.group.maxnorm4 == self.group.sums42: self.player.payoff_s4 = 0.1 elif self.group.maxnorm4 != self.group.sums42: self.player.payoff_s4 = 0 elif self.player.s4 == 3: if self.group.maxnorm4 == self.group.sums43: self.player.payoff_s4 = 0.1 elif self.group.maxnorm4 != self.group.sums43: self.player.payoff_s4 = 0 elif self.player.s4 == 4: if self.group.maxnorm4 == self.group.sums44: self.player.payoff_s4 = 0.1 elif self.group.maxnorm4 != self.group.sums44: self.player.payoff_s4 = 0 else: if self.group.maxnorm4 == self.group.sums45: self.player.payoff_s4 = 0.1 elif self.group.maxnorm4 != self.group.sums45: self.player.payoff_s4 = 0 ####################### if self.player.s5 == 1: if self.group.maxnorm5 == self.group.sums51: self.player.payoff_s5 = 0.1 elif self.group.maxnorm5 != self.group.sums51: self.player.payoff_s5 = 0 elif self.player.s5 == 2: if self.group.maxnorm5 == self.group.sums52: self.player.payoff_s5 = 0.1 elif self.group.maxnorm5 != self.group.sums52: self.player.payoff_s5 = 0 elif self.player.s5 == 3: if self.group.maxnorm5 == self.group.sums53: self.player.payoff_s5 = 0.1 elif self.group.maxnorm5 != self.group.sums53: self.player.payoff_s5 = 0 elif self.player.s5 == 4: if self.group.maxnorm5 == self.group.sums54: self.player.payoff_s5 = 0.1 elif self.group.maxnorm5 != self.group.sums54: self.player.payoff_s5 = 0 else: if self.group.maxnorm5 == self.group.sums55: self.player.payoff_s5 = 0.1 elif self.group.maxnorm5 != self.group.sums55: self.player.payoff_s5 = 0 ####################### if self.player.s6 == 1: if self.group.maxnorm6 == self.group.sums61: self.player.payoff_s6 = 0.1 elif self.group.maxnorm6 != self.group.sums61: self.player.payoff_s6 = 0 elif self.player.s6 == 2: if self.group.maxnorm6 == self.group.sums62: self.player.payoff_s6 = 0.1 elif self.group.maxnorm6 != self.group.sums62: self.player.payoff_s6 = 0 elif self.player.s6 == 3: if self.group.maxnorm6 == self.group.sums63: self.player.payoff_s6 = 0.1 elif self.group.maxnorm6 != self.group.sums63: self.player.payoff_s6 = 0 elif self.player.s6 == 4: if self.group.maxnorm6 == self.group.sums64: self.player.payoff_s6 = 0.1 elif self.group.maxnorm6 != self.group.sums64: self.player.payoff_s6 = 0 else: if self.group.maxnorm6 == self.group.sums65: self.player.payoff_s6 = 0.1 elif self.group.maxnorm6 != self.group.sums65: self.player.payoff_s6 = 0 ######################## if self.player.s7 == 1: if self.group.maxnorm7 == self.group.sums71: self.player.payoff_s7 = 0.1 elif self.group.maxnorm7 != self.group.sums71: self.player.payoff_s7 = 0 elif self.player.s7 == 2: if self.group.maxnorm7 == self.group.sums72: self.player.payoff_s7 = 0.1 elif self.group.maxnorm7 != self.group.sums72: self.player.payoff_s7 = 0 elif self.player.s7 == 3: if self.group.maxnorm7 == self.group.sums73: self.player.payoff_s7 = 0.1 elif self.group.maxnorm7 != self.group.sums73: self.player.payoff_s7 = 0 elif self.player.s7 == 4: if self.group.maxnorm7 == self.group.sums74: self.player.payoff_s7 = 0.1 elif self.group.maxnorm7 != self.group.sums74: self.player.payoff_s7 = 0 else: if self.group.maxnorm7 == self.group.sums75: self.player.payoff_s7 = 0.1 elif self.group.maxnorm7 != self.group.sums75: self.player.payoff_s7 = 0 ########################## if self.player.s8 == 1: if self.group.maxnorm8 == self.group.sums81: self.player.payoff_s8 = 0.1 elif self.group.maxnorm8 != self.group.sums81: self.player.payoff_s8 = 0 elif self.player.s8 == 2: if self.group.maxnorm8 == self.group.sums82: self.player.payoff_s8 = 0.1 elif self.group.maxnorm8 != self.group.sums82: self.player.payoff_s8 = 0 elif self.player.s8 == 3: if self.group.maxnorm8 == self.group.sums83: self.player.payoff_s8 = 0.1 elif self.group.maxnorm8 != self.group.sums83: self.player.payoff_s8 = 0 elif self.player.s8 == 4: if self.group.maxnorm8 == self.group.sums84: self.player.payoff_s8 = 0.1 elif self.group.maxnorm8 != self.group.sums84: self.player.payoff_s8 = 0 else: if self.group.maxnorm8 == self.group.sums85: self.player.payoff_s8 = 0.1 elif self.group.maxnorm8 != self.group.sums85: self.player.payoff_s8 = 0 #total earnings in the social norm elicitation self.player.payoff_s = round((self.player.payoff_s1 + self.player.payoff_s2 + self.player.payoff_s3 + self.player.payoff_s4 + self.player.payoff_s5 + self.player.payoff_s6 + self.player.payoff_s7 + self.player.payoff_s8), 1) ######################## self.player.final_pay = round(self.player.payoff_task2 + self.player.payoff_task1 + self.player.payoff_s + self.player.payoff_gc, 2) ##class Continue5(Page): ## ## def before_next_page(self): ## self.player.final_pay = round(self.player.payoff_task2 + self.player.payoff_task1, 2) ##class ResultsWaitPage1(WaitPage): ## wait_for_all_groups = True ## ##class SurveyQuestions(Page): ## form_model = 'player' ## form_fields = ['s1','s2', 's3', 's4', 's5', 's6', ## 's7','s8'] #survey question ## def before_next_page(self): ## self.group.group_winner() ##class SurveyQuestions2(Page): ## ## form_model = 'player' ## form_fields = [ 's9', 's10', 's11', 's12', ## 's13','s14', 's15','s16', ## 's17', 's18', 's19', 's20', 's21', ## 's22', 's23', 's24', 's25', 's26', ## 's27', 's28'] #survey question ## ## ## ## def before_next_page(self): ## self.player.final_pay = round(self.player.task2_payoff + self.player.payoff_task1, 2) ## class Payment(Page): pass page_sequence = [ ## ResultsWaitPage, Welcome2, General, Task1, Start, Question1, Question2, Question3, Question4, Question5, Question6, Question7, Question8, Question9, Question10, Question11, Question12, Question13, Question14, Question15, Question16, Question17, Question18, Question19, Question20, Task2, #Task2p2, Choice, Start2, Question1p2, Question2p2, Question3p2, Question4p2, Question5p2, Question6p2, Question7p2, Question8p2, Question9p2, Question10p2, Question11p2, Question12p2, Question13p2, Question14p2, Question15p2, Question16p2, Question17p2, Question18p2, Question19p2, Question20p2, Continue1, Survey, SurveyQuestions1, SurveyQuestions2, SurveyQuestions3, SurveyQuestions4, SurveyQuestions5, SurveyQuestions6, SurveyQuestions7, SurveyQuestions8, SurveyQuestions, DonationGender, ##finishpage, ResultsWaitPage, ## Continue, ## Continue2, Continue3, Continue4, Payment ]