from otree.api import * c = Currency import random class Overview(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Comprehension_test(Page): def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['compre_1', 'compre_2', 'compre_3', 'compre_4', 'compre_5'] class Individual_Task(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Incentive_Instructions(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Calculator(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Calculator_2(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Treatment_Instructions(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Treatment_Instructions_2(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Arm_Wrap(Page): timeout_seconds = 12000 def is_displayed(self): return self.round_number == 1 class Risk_Assessment(Page): form_model = 'player' form_fields = ['O1', 'O2', 'O3', 'O4', 'O5', 'O6', 'O7', 'O8', 'O9', 'O10'] def is_displayed(self): return self.round_number == 1 class Guess(Page): def vars_for_template(self): return { 'series': BaseConstants.y[100 * self.round_number - 200:100 * self.round_number - 101], 'answer': Player.Sequence, } form_model = 'player' form_fields = ['Upper', 'Lower', 'correct_answer','payoff1','won'] def error_message(self, values): print('values is', values) if values['Upper'] < values['Lower']: return 'Upper value needs to be greater then lower value' if values['Upper'] > 500: return 'Upper value can not exceed 500' if values['Upper'] < 0: return 'Upper value can not be below 0' if values['Lower'] > 500: return 'lower value can not exceed 500' if values['Lower'] < 0: return 'lower value can not be below 0' def before_next_page(self): self.player.payoff = Currency(self.player.payoff1 * self.player.won) def is_displayed(self): return self.round_number != 1 or self.round_number != 62 class Practice_round_1(Page): def vars_for_template(self): return { 'series': BaseConstants.practice_round_1[0:99], } def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['Upper', 'Lower', 'correct_answer', 'payoff1', 'won'] def error_message(self, values): print('values is', values) if values['Upper'] < values['Lower']: return 'Upper value needs to be greater then lower value' if values['Upper'] > 500: return 'Upper value can not exceed 500' if values['Upper'] < 0: return 'Upper value can not be below 0' if values['Lower'] > 500: return 'lower value can not exceed 500' if values['Lower'] < 0: return 'lower value can not be below 0' class Practice_round_2(Page): def vars_for_template(self): return { 'series': BaseConstants.practice_round_2[0:99], } def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['Upper', 'Lower', 'correct_answer', 'payoff1', 'won'] def error_message(self, values): print('values is', values) if values['Upper'] < values['Lower']: return 'Upper value needs to be greater then lower value' if values['Upper'] > 500: return 'Upper value can not exceed 500' if values['Upper'] < 0: return 'Upper value can not be below 0' if values['Lower'] > 500: return 'lower value can not exceed 500' if values['Lower'] < 0: return 'lower value can not be below 0' class Practice_round_3(Page): def vars_for_template(self): return { 'series': BaseConstants.practice_round_3[0:99], } def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['Upper', 'Lower', 'correct_answer', 'payoff1', 'won'] def error_message(self, values): print('values is', values) if values['Upper'] < values['Lower']: return 'Upper value needs to be greater then lower value' if values['Upper'] > 500: return 'Upper value can not exceed 500' if values['Upper'] < 0: return 'Upper value can not be below 0' if values['Lower'] > 500: return 'lower value can not exceed 500' if values['Lower'] < 0: return 'lower value can not be below 0' class Treatment(Page): def is_displayed(self): return self.round_number == 16 or self.round_number == 2 or self.round_number == 31 or self.round_number == 46 class Treatment_3(Page): form_model = 'player' form_fields = ['stress', 'feel'] # def vars_for_template(self): # return { # 'progress_bar': Constants.progress[round(9.905621096+(1.136016655*self.round_number))] # } def is_displayed(self): return self.round_number == 2 or self.round_number == 16 or self.round_number == 31 or self. round_number == 46 class Personality_traits(Page): form_model = 'player' form_fields = ['E_1', 'AR_2', 'C_3', 'N_4', 'O_5', 'ER_6', 'A_7', 'CR_8', 'NR_9', 'O_10', 'E_11', 'AR_12', 'C_13', 'N_14', 'O_15', 'E_16', 'A_17', 'CR_18', 'N_19', 'O_20', 'ER_21', 'A_22', 'CR_23', 'NR_24', 'O_25', 'E_26', 'AR_27', 'C_28', 'N_29', 'O_30', 'ER_31', 'A_32', 'C_33', 'NR_34', 'OR_35', 'E_36', 'AR_37', 'C_38', 'N_39', 'O_40', 'OR_41','A_42', 'CR_43', 'O_44'] def is_displayed(self): return self.round_number == 62 class Demographic_Questions(Page): form_model = 'player' form_fields = ['D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7'] def is_displayed(self): return self.round_number == 62 class Results(Page): def vars_for_template(self): return { 'correct_answer_1': self.player.in_round(1+1).correct_answer, 'Upper_1': self.player.in_round(1+1).Upper, 'Lower_1': self.player.in_round(1+1).Lower, 'won_1': self.player.in_round(1+1).won_yes, 'payment_1': self.player.in_round(1+1).points_won, 'correct_answer_2': self.player.in_round(2+1).correct_answer, 'Upper_2': self.player.in_round(2+1).Upper, 'Lower_2': self.player.in_round(2+1).Lower, 'won_2': self.player.in_round(2+1).won_yes, 'payment_2': self.player.in_round(2+1).points_won, 'correct_answer_3': self.player.in_round(3+1).correct_answer, 'Upper_3': self.player.in_round(3+1).Upper, 'Lower_3': self.player.in_round(3+1).Lower, 'won_3': self.player.in_round(3+1).won_yes, 'payment_3': self.player.in_round(3+1).points_won, 'correct_answer_4': self.player.in_round(4+1).correct_answer, 'Upper_4': self.player.in_round(4+1).Upper, 'Lower_4': self.player.in_round(4+1).Lower, 'won_4': self.player.in_round(4+1).won_yes, 'payment_4': self.player.in_round(4+1).points_won, 'correct_answer_5': self.player.in_round(5+1).correct_answer, 'Upper_5': self.player.in_round(5+1).Upper, 'Lower_5': self.player.in_round(5+1).Lower, 'won_5': self.player.in_round(5+1).won_yes, 'payment_5': self.player.in_round(5+1).points_won, 'correct_answer_6': self.player.in_round(6+1).correct_answer, 'Upper_6': self.player.in_round(6+1).Upper, 'Lower_6': self.player.in_round(6+1).Lower, 'won_6': self.player.in_round(6+1).won_yes, 'payment_6': self.player.in_round(6+1).points_won, 'correct_answer_7': self.player.in_round(7+1).correct_answer, 'Upper_7': self.player.in_round(7+1).Upper, 'Lower_7': self.player.in_round(7+1).Lower, 'won_7': self.player.in_round(7+1).won_yes, 'payment_7': self.player.in_round(7+1).points_won, 'correct_answer_8': self.player.in_round(8+1).correct_answer, 'Upper_8': self.player.in_round(8+1).Upper, 'Lower_8': self.player.in_round(8+1).Lower, 'won_8': self.player.in_round(8+1).won_yes, 'payment_8': self.player.in_round(8+1).points_won, 'correct_answer_9': self.player.in_round(9+1).correct_answer, 'Upper_9': self.player.in_round(9+1).Upper, 'Lower_9': self.player.in_round(9+1).Lower, 'won_9': self.player.in_round(9+1).won_yes, 'payment_9': self.player.in_round(9+1).points_won, 'correct_answer_10': self.player.in_round(10+1).correct_answer, 'Upper_10': self.player.in_round(10+1).Upper, 'Lower_10': self.player.in_round(10+1).Lower, 'won_10': self.player.in_round(10+1).won_yes, 'payment_10': self.player.in_round(10+1).points_won, 'correct_answer_11': self.player.in_round(11+1).correct_answer, 'Upper_11': self.player.in_round(11+1).Upper, 'Lower_11': self.player.in_round(11+1).Lower, 'won_11': self.player.in_round(11+1).won_yes, 'payment_11': self.player.in_round(11+1).points_won, 'correct_answer_12': self.player.in_round(12+1).correct_answer, 'Upper_12': self.player.in_round(12+1).Upper, 'Lower_12': self.player.in_round(12+1).Lower, 'won_12': self.player.in_round(12+1).won_yes, 'payment_12': self.player.in_round(12+1).points_won, 'correct_answer_13': self.player.in_round(13+1).correct_answer, 'Upper_13': self.player.in_round(13+1).Upper, 'Lower_13': self.player.in_round(13+1).Lower, 'won_13': self.player.in_round(13+1).won_yes, 'payment_13': self.player.in_round(13+1).points_won, 'correct_answer_14': self.player.in_round(14+1).correct_answer, 'Upper_14': self.player.in_round(14+1).Upper, 'Lower_14': self.player.in_round(14+1).Lower, 'won_14': self.player.in_round(14+1).won_yes, 'payment_14': self.player.in_round(14+1).points_won, 'correct_answer_15': self.player.in_round(15+1).correct_answer, 'Upper_15': self.player.in_round(15+1).Upper, 'Lower_15': self.player.in_round(15+1).Lower, 'won_15': self.player.in_round(15+1).won_yes, 'payment_15': self.player.in_round(15+1).points_won, 'correct_answer_16': self.player.in_round(16+1).correct_answer, 'Upper_16': self.player.in_round(16+1).Upper, 'Lower_16': self.player.in_round(16+1).Lower, 'won_16': self.player.in_round(16+1).won_yes, 'payment_16': self.player.in_round(16+1).points_won, 'correct_answer_17': self.player.in_round(17+1).correct_answer, 'Upper_17': self.player.in_round(17+1).Upper, 'Lower_17': self.player.in_round(17+1).Lower, 'won_17': self.player.in_round(17+1).won_yes, 'payment_17': self.player.in_round(17+1).points_won, 'correct_answer_18': self.player.in_round(18+1).correct_answer, 'Upper_18': self.player.in_round(18+1).Upper, 'Lower_18': self.player.in_round(18+1).Lower, 'won_18': self.player.in_round(18+1).won_yes, 'payment_18': self.player.in_round(18+1).points_won, 'correct_answer_19': self.player.in_round(19+1).correct_answer, 'Upper_19': self.player.in_round(19+1).Upper, 'Lower_19': self.player.in_round(19+1).Lower, 'won_19': self.player.in_round(19+1).won_yes, 'payment_19': self.player.in_round(19+1).points_won, 'correct_answer_20': self.player.in_round(20+1).correct_answer, 'Upper_20': self.player.in_round(20+1).Upper, 'Lower_20': self.player.in_round(20+1).Lower, 'won_20': self.player.in_round(20+1).won_yes, 'payment_20': self.player.in_round(20+1).points_won, 'correct_answer_21': self.player.in_round(21+1).correct_answer, 'Upper_21': self.player.in_round(21+1).Upper, 'Lower_21': self.player.in_round(21+1).Lower, 'won_21': self.player.in_round(21+1).won_yes, 'payment_21': self.player.in_round(21+1).points_won, 'correct_answer_22': self.player.in_round(22+1).correct_answer, 'Upper_22': self.player.in_round(22+1).Upper, 'Lower_22': self.player.in_round(22+1).Lower, 'won_22': self.player.in_round(22+1).won_yes, 'payment_22': self.player.in_round(22+1).points_won, 'correct_answer_23': self.player.in_round(23+1).correct_answer, 'Upper_23': self.player.in_round(23+1).Upper, 'Lower_23': self.player.in_round(23+1).Lower, 'won_23': self.player.in_round(23+1).won_yes, 'payment_23': self.player.in_round(23+1).points_won, 'correct_answer_24': self.player.in_round(24+1).correct_answer, 'Upper_24': self.player.in_round(24+1).Upper, 'Lower_24': self.player.in_round(24+1).Lower, 'won_24': self.player.in_round(24+1).won_yes, 'payment_24': self.player.in_round(24+1).points_won, 'correct_answer_25': self.player.in_round(25+1).correct_answer, 'Upper_25': self.player.in_round(25+1).Upper, 'Lower_25': self.player.in_round(25+1).Lower, 'won_25': self.player.in_round(25+1).won_yes, 'payment_25': self.player.in_round(25+1).points_won, 'correct_answer_26': self.player.in_round(26+1).correct_answer, 'Upper_26': self.player.in_round(26+1).Upper, 'Lower_26': self.player.in_round(26+1).Lower, 'won_26': self.player.in_round(26+1).won_yes, 'payment_26': self.player.in_round(26+1).points_won, 'correct_answer_27': self.player.in_round(27+1).correct_answer, 'Upper_27': self.player.in_round(27+1).Upper, 'Lower_27': self.player.in_round(27+1).Lower, 'won_27': self.player.in_round(27+1).won_yes, 'payment_27': self.player.in_round(27+1).points_won, 'correct_answer_28': self.player.in_round(28+1).correct_answer, 'Upper_28': self.player.in_round(28+1).Upper, 'Lower_28': self.player.in_round(28+1).Lower, 'won_28': self.player.in_round(28+1).won_yes, 'payment_28': self.player.in_round(28+1).points_won, 'correct_answer_29': self.player.in_round(29+1).correct_answer, 'Upper_29': self.player.in_round(29+1).Upper, 'Lower_29': self.player.in_round(29+1).Lower, 'won_29': self.player.in_round(29+1).won_yes, 'payment_29': self.player.in_round(29+1).points_won, 'correct_answer_30': self.player.in_round(30+1).correct_answer, 'Upper_30': self.player.in_round(30+1).Upper, 'Lower_30': self.player.in_round(30+1).Lower, 'won_30': self.player.in_round(30+1).won_yes, 'payment_30': self.player.in_round(30+1).points_won, 'correct_answer_31': self.player.in_round(31+1).correct_answer, 'Upper_31': self.player.in_round(31+1).Upper, 'Lower_31': self.player.in_round(31+1).Lower, 'won_31': self.player.in_round(31+1).won_yes, 'payment_31': self.player.in_round(31+1).points_won, 'correct_answer_32': self.player.in_round(32+1).correct_answer, 'Upper_32': self.player.in_round(32+1).Upper, 'Lower_32': self.player.in_round(32+1).Lower, 'won_32': self.player.in_round(32+1).won_yes, 'payment_32': self.player.in_round(32+1).points_won, 'correct_answer_33': self.player.in_round(33+1).correct_answer, 'Upper_33': self.player.in_round(33+1).Upper, 'Lower_33': self.player.in_round(33+1).Lower, 'won_33': self.player.in_round(33+1).won_yes, 'payment_33': self.player.in_round(33+1).points_won, 'correct_answer_34': self.player.in_round(34+1).correct_answer, 'Upper_34': self.player.in_round(34+1).Upper, 'Lower_34': self.player.in_round(34+1).Lower, 'won_34': self.player.in_round(34+1).won_yes, 'payment_34': self.player.in_round(34+1).points_won, 'correct_answer_35': self.player.in_round(35+1).correct_answer, 'Upper_35': self.player.in_round(35+1).Upper, 'Lower_35': self.player.in_round(35+1).Lower, 'won_35': self.player.in_round(35+1).won_yes, 'payment_35': self.player.in_round(35+1).points_won, 'correct_answer_36': self.player.in_round(36+1).correct_answer, 'Upper_36': self.player.in_round(36+1).Upper, 'Lower_36': self.player.in_round(36+1).Lower, 'won_36': self.player.in_round(36+1).won_yes, 'payment_36': self.player.in_round(36+1).points_won, 'correct_answer_37': self.player.in_round(37+1).correct_answer, 'Upper_37': self.player.in_round(37+1).Upper, 'Lower_37': self.player.in_round(37+1).Lower, 'won_37': self.player.in_round(37+1).won_yes, 'payment_37': self.player.in_round(37+1).points_won, 'correct_answer_38': self.player.in_round(38+1).correct_answer, 'Upper_38': self.player.in_round(38+1).Upper, 'Lower_38': self.player.in_round(38+1).Lower, 'won_38': self.player.in_round(38+1).won_yes, 'payment_38': self.player.in_round(38+1).points_won, 'correct_answer_39': self.player.in_round(39+1).correct_answer, 'Upper_39': self.player.in_round(39+1).Upper, 'Lower_39': self.player.in_round(39+1).Lower, 'won_39': self.player.in_round(39+1).won_yes, 'payment_39': self.player.in_round(39+1).points_won, 'correct_answer_40': self.player.in_round(40+1).correct_answer, 'Upper_40': self.player.in_round(40+1).Upper, 'Lower_40': self.player.in_round(40+1).Lower, 'won_40': self.player.in_round(40+1).won_yes, 'payment_40': self.player.in_round(40+1).points_won, 'correct_answer_41': self.player.in_round(41+1).correct_answer, 'Upper_41': self.player.in_round(41+1).Upper, 'Lower_41': self.player.in_round(41+1).Lower, 'won_41': self.player.in_round(41+1).won_yes, 'payment_41': self.player.in_round(41+1).points_won, 'correct_answer_42': self.player.in_round(42+1).correct_answer, 'Upper_42': self.player.in_round(42+1).Upper, 'Lower_42': self.player.in_round(42+1).Lower, 'won_42': self.player.in_round(42+1).won_yes, 'payment_42': self.player.in_round(42+1).points_won, 'correct_answer_43': self.player.in_round(43+1).correct_answer, 'Upper_43': self.player.in_round(43+1).Upper, 'Lower_43': self.player.in_round(43+1).Lower, 'won_43': self.player.in_round(43+1).won_yes, 'payment_43': self.player.in_round(43+1).points_won, 'correct_answer_44': self.player.in_round(44+1).correct_answer, 'Upper_44': self.player.in_round(44+1).Upper, 'Lower_44': self.player.in_round(44+1).Lower, 'won_44': self.player.in_round(44+1).won_yes, 'payment_44': self.player.in_round(44+1).points_won, 'correct_answer_45': self.player.in_round(45+1).correct_answer, 'Upper_45': self.player.in_round(45+1).Upper, 'Lower_45': self.player.in_round(45+1).Lower, 'won_45': self.player.in_round(45+1).won_yes, 'payment_45': self.player.in_round(45+1).points_won, 'correct_answer_46': self.player.in_round(46+1).correct_answer, 'Upper_46': self.player.in_round(46+1).Upper, 'Lower_46': self.player.in_round(46+1).Lower, 'won_46': self.player.in_round(46+1).won_yes, 'payment_46': self.player.in_round(46+1).points_won, 'correct_answer_47': self.player.in_round(47+1).correct_answer, 'Upper_47': self.player.in_round(47+1).Upper, 'Lower_47': self.player.in_round(47+1).Lower, 'won_47': self.player.in_round(47+1).won_yes, 'payment_47': self.player.in_round(47+1).points_won, 'correct_answer_48': self.player.in_round(48+1).correct_answer, 'Upper_48': self.player.in_round(48+1).Upper, 'Lower_48': self.player.in_round(48+1).Lower, 'won_48': self.player.in_round(48+1).won_yes, 'payment_48': self.player.in_round(48+1).points_won, 'correct_answer_49': self.player.in_round(49+1).correct_answer, 'Upper_49': self.player.in_round(49+1).Upper, 'Lower_49': self.player.in_round(49+1).Lower, 'won_49': self.player.in_round(49+1).won_yes, 'payment_49': self.player.in_round(49+1).points_won, 'correct_answer_50': self.player.in_round(50+1).correct_answer, 'Upper_50': self.player.in_round(50+1).Upper, 'Lower_50': self.player.in_round(50+1).Lower, 'won_50': self.player.in_round(50+1).won_yes, 'payment_50': self.player.in_round(50+1).points_won, 'correct_answer_51': self.player.in_round(51+1).correct_answer, 'Upper_51': self.player.in_round(51+1).Upper, 'Lower_51': self.player.in_round(51+1).Lower, 'won_51': self.player.in_round(51+1).won_yes, 'payment_51': self.player.in_round(51+1).points_won, 'correct_answer_52': self.player.in_round(52+1).correct_answer, 'Upper_52': self.player.in_round(52+1).Upper, 'Lower_52': self.player.in_round(52+1).Lower, 'won_52': self.player.in_round(52+1).won_yes, 'payment_52': self.player.in_round(52+1).points_won, 'correct_answer_53': self.player.in_round(53+1).correct_answer, 'Upper_53': self.player.in_round(53+1).Upper, 'Lower_53': self.player.in_round(53+1).Lower, 'won_53': self.player.in_round(53+1).won_yes, 'payment_53': self.player.in_round(53+1).points_won, 'correct_answer_54': self.player.in_round(54+1).correct_answer, 'Upper_54': self.player.in_round(54+1).Upper, 'Lower_54': self.player.in_round(54+1).Lower, 'won_54': self.player.in_round(54+1).won_yes, 'payment_54': self.player.in_round(54+1).points_won, 'correct_answer_55': self.player.in_round(55+1).correct_answer, 'Upper_55': self.player.in_round(55+1).Upper, 'Lower_55': self.player.in_round(55+1).Lower, 'won_55': self.player.in_round(55+1).won_yes, 'payment_55': self.player.in_round(55+1).points_won, 'correct_answer_56': self.player.in_round(56+1).correct_answer, 'Upper_56': self.player.in_round(56+1).Upper, 'Lower_56': self.player.in_round(56+1).Lower, 'won_56': self.player.in_round(56+1).won_yes, 'payment_56': self.player.in_round(56+1).points_won, 'correct_answer_57': self.player.in_round(57+1).correct_answer, 'Upper_57': self.player.in_round(57+1).Upper, 'Lower_57': self.player.in_round(57+1).Lower, 'won_57': self.player.in_round(57+1).won_yes, 'payment_57': self.player.in_round(57+1).points_won, 'correct_answer_58': self.player.in_round(58+1).correct_answer, 'Upper_58': self.player.in_round(58+1).Upper, 'Lower_58': self.player.in_round(58+1).Lower, 'won_58': self.player.in_round(58+1).won_yes, 'payment_58': self.player.in_round(58+1).points_won, 'correct_answer_59': self.player.in_round(59+1).correct_answer, 'Upper_59': self.player.in_round(59+1).Upper, 'Lower_59': self.player.in_round(59+1).Lower, 'won_59': self.player.in_round(59+1).won_yes, 'payment_59': self.player.in_round(59+1).points_won, 'correct_answer_60': self.player.in_round(60+1).correct_answer, 'Upper_60': self.player.in_round(60+1).Upper, 'Lower_60': self.player.in_round(60+1).Lower, 'won_60': self.player.in_round(60+1).won_yes, 'payment_60': self.player.in_round(60+1).points_won, 'total_points': (self.participant.payoff_plus_participation_fee()-5)*100, 'total_payment': c(self.participant.payoff_plus_participation_fee()), 'points_dollar_value': c((self.participant.payoff_plus_participation_fee()-5)), } def is_displayed(self): return self.round_number == 62 class Results_2(Page): def is_displayed(self): return self.round_number == 62 page_sequence = [Overview,Individual_Task,Risk_Assessment,Treatment_Instructions,Treatment_Instructions_2,Incentive_Instructions,Calculator,Calculator_2,Arm_Wrap,Comprehension_test,Practice_round_1,Practice_round_2,Practice_round_3,Treatment,Guess,Personality_traits,Demographic_Questions,Results,Results_2]