from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants from random import * class P1Bienvenue(Page): form_model = 'player' form_fields = ['agree'] def before_next_page(self): if self.player.id_in_group % 2 == 1: self.player.treatment = 1 else: self.player.treatment = 2 self.player.participant.vars['treatment'] = self.player.treatment class Questionnaire0(Page): form_model = 'player' form_fields = ['nextq0', 'q0', 'b0'] def before_next_page(self): self.player.participant.vars['nextq0'] = self.player.nextq0 if self.player.nextq0 == 1 : self.player.eliminated = 1 self.player.gaineliminated = 0 self.player.participant.vars['eliminated'] = self.player.eliminated self.player.participant.vars['gaineliminated'] = self.player.gaineliminated class Questionnaire0Bis(Page): timeout_seconds = 15 form_model = 'player' form_fields = [] def is_displayed(self): return self.player.nextq0 != 1 class P25QuestionnaireFinal(Page): form_model = 'player' form_fields = [ 'q_a', 'q_b', 'q_c', ] def is_displayed(self): return self.player.nextq0 != 1 class Questionnaire5(Page): form_model = 'player' form_fields = ['fear_5a', 'b5'] def is_displayed(self): return self.player.nextq0 != 1 def before_next_page(self): self.player.participant.vars['b5'] = self.player.b5 if self.player.b5 != 1 : self.player.eliminated = 2 self.player.gaineliminated = Constants.bonus1 self.player.participant.vars['eliminated'] = self.player.eliminated self.player.participant.vars['gaineliminated'] = self.player.gaineliminated class Questionnaire5Bis(Page): timeout_seconds = 15 form_model = 'player' form_fields = [] def is_displayed(self): return self.player.nextq0 != 1 and self.player.b5 == 1 def before_next_page(self): self.player.participant.vars['eliminated'] = self.player.eliminated self.player.participant.vars['gaineliminated'] = self.player.gaineliminated #-------------------------------------------------------------------------------------# # ------------------------------- jeu 1 cournot (contre tout le monde) class P2Instructions(Page): form_model = 'player' form_fields = [] def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 class P4Qc(Page): form_model = 'player' form_fields = ['qc_a','qc_b'] def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 def error_message(self, values): print('values is', values) if values['qc_a'] != 30: return 'Please correct your answer A!!' elif values['qc_b'] != 551 : return 'Please correct your answer B!!' class P6Survey(Page): form_model = 'player' form_fields = ['survey1'] def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 class P7Task1(Page): form_model = 'player' form_fields = ['quantity1'] def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 class P7_ResultsWaitPage(Page): timeout_seconds = 5 def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 def before_next_page(self): self.player.quantity_j1 = Constants.t1[0] self.player.quantity_j2 = Constants.t1[1] self.player.quantity_j3 = Constants.t1[2] self.player.quantity_j4 = Constants.t1[3] self.player.quantity_j5 = Constants.t1[4] self.player.price_1 = max(0, (100 - (self.player.quantity1 + self.player.quantity_j1))) self.player.price_2 = max(0, (100 - (self.player.quantity1 + self.player.quantity_j2))) self.player.price_3 = max(0, (100 - (self.player.quantity1 + self.player.quantity_j3))) self.player.price_4 = max(0, (100 - (self.player.quantity1 + self.player.quantity_j4))) self.player.price_5 = max(0, (100 - (self.player.quantity1 + self.player.quantity_j5))) self.player.price_average = round((self.player.price_1 + self.player.price_2 + self.player.price_3 + self.player.price_4 + self.player.price_5) / 5, 1) self.player.gain_task1 = round(self.player.quantity1 * (self.player.price_average - 1), 1) # ------------------------------- jeu 2 cournot (self selection) class P8Task2(Page): form_model = 'player' form_fields = ['decision_t2'] def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 class P9Task2(Page): form_model = 'player' form_fields = ['quantity2'] def is_displayed(self): return self.player.decision_t2== 1 and self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 class P9_ResultsWaitPage(Page): timeout_seconds = 3 def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 def before_next_page(self): if self.player.decision_t2 == 1: self.player.quantity_j1_v2 = Constants.t2[0] self.player.quantity_j2_v2 = Constants.t2[1] self.player.quantity_j3_v2 = Constants.t2[2] self.player.quantity_j4_v2 = Constants.t2[3] self.player.quantity_j5_v2 = Constants.t2[4] self.player.price_1_v2 = max(0, (100 - (self.player.quantity2 + self.player.quantity_j1_v2))) self.player.price_2_v2 = max(0, (100 - (self.player.quantity2 + self.player.quantity_j2_v2))) self.player.price_3_v2 = max(0, (100 - (self.player.quantity2 + self.player.quantity_j3_v2))) self.player.price_4_v2 = max(0, (100 - (self.player.quantity2 + self.player.quantity_j4_v2))) self.player.price_5_v2 = max(0, (100 - (self.player.quantity2 + self.player.quantity_j5_v2))) self.player.price_average_v2 = round( (self.player.price_1_v2 + self.player.price_2_v2 + self.player.price_3_v2 + self.player.price_4_v2 + self.player.price_5_v2) / 5, 1) self.player.gain_task2 = round(self.player.quantity2 * (self.player.price_average_v2 - 1), 1) class P9Task2Pass(Page): timeout_seconds = 0 form_model = 'player' form_fields = [] def is_displayed(self): return self.player.nextq0 != 1 and self.player.treatment == 1 and self.player.b5 == 1 def before_next_page(self): if self.player.decision_t2 == 0: self.player.gain_task2_f = Constants.surepaycournot elif self.player.decision_t2 == 1: self.player.gain_task2_f = self.player.gain_task2 self.player.participant.vars['gain_task2_f'] = self.player.gain_task2_f self.player.gain_task1_f = self.player.gain_task1 self.player.participant.vars['gain_task1_f'] = self.player.gain_task1_f page_sequence = [ P1Bienvenue, Questionnaire0, Questionnaire0Bis, P25QuestionnaireFinal, Questionnaire5, Questionnaire5Bis, #P2Instructions, #P4Qc, #P6Survey, #P7Task1, #P7_ResultsWaitPage, #P8Task2, #P9Task2, #P9_ResultsWaitPage, #P9Task2Pass, ]