from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random def vars_for_all_templates(self): return { 'amount': self.player.participant.vars['amount'], 'list_M3': self.player.participant.vars['list_M3'], 'list_M3_choice': self.player.participant.vars['list_M3_choice'], 'round_number' : 3*(self.round_number-1) +1, 'round_number_1': 3*(self.round_number-1) +2, 'round_number_2': 3*(self.round_number-1) +3, 'randomize': self.player.participant.vars['randomize'], 'list_M3_preferred': self.player.participant.vars['list_M3_preferred'], 'list_M3_N_preferred': self.player.participant.vars['list_M3_N_preferred'], 'dontcare_M3': self.player.participant.vars['dontcare_M3'] } class comparison_1(Page): form_model = 'player' form_fields = ['Choice'] def vars_for_template(self): return { 'list': self.player.participant.vars['amount'][self.round_number-1], 'money1': self.player.participant.vars['amount'][self.round_number - 1][0], 'money2': self.player.participant.vars['amount'][self.round_number - 1][1], 'money3': self.player.participant.vars['amount'][self.round_number - 1][2], } def before_next_page(self): self.player.lotteryA = ' '.join(str(e) for e in self.player.participant.vars['amount'][self.round_number - 1]) self.player.lotteryB = ' '.join(str(e) for e in [self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][1]]) if self.player.Choice ==3 : self.player.Choice = random.randint(1,2) self.player.Dontcare1 = 1 else: self.player.Dontcare1 = 0 self.player.participant.vars['dontcare_M3'].append(self.player.Dontcare1) if self.round_number ==1 : if self.player.Choice==1: self.player.participant.vars['list_M3_preferred'] = [self.player.participant.vars['amount'][self.round_number - 1]] self.player.participant.vars['list_M3_N_preferred']= [[self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][1]]] else : self.player.participant.vars['list_M3_preferred'] = [[self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][1]]] self.player.participant.vars['list_M3_N_preferred']= [self.player.participant.vars['amount'][self.round_number - 1]] else: if self.player.Choice==1: self.player.participant.vars['list_M3_preferred'].append(self.player.participant.vars['amount'][self.round_number - 1]) self.player.participant.vars['list_M3_N_preferred'].append([self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][1]]) else: self.player.participant.vars['list_M3_N_preferred'].append(self.player.participant.vars['amount'][self.round_number - 1]) self.player.participant.vars['list_M3_preferred'].append([self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][1]]) # class comparison_2(Page): # def vars_for_template(self): # return { # 'Prefered_1': self.player.participant.vars['list_M3_preferred'][0][0], # 'Prefered_2': self.player.participant.vars['list_M3_preferred'][0][1], # 'Prefered_3': self.player.participant.vars['list_M3_preferred'][0][-1], # # 'N_Prefered_1': self.player.participant.vars['list_M3_N_preferred'][0][0], # 'N_Prefered_2': self.player.participant.vars['list_M3_N_preferred'][0][1], # 'N_Prefered_3': self.player.participant.vars['list_M3_N_preferred'][0][-1], # } # # class comparison_1_2(Page): form_model = 'player' form_fields = ['Choice2'] def vars_for_template(self): return { 'list': self.player.participant.vars['amount'][self.round_number-1], 'money1': self.player.participant.vars['amount'][self.round_number - 1][0], 'money2': self.player.participant.vars['amount'][self.round_number - 1][1], 'money3': self.player.participant.vars['amount'][self.round_number - 1][2], } def before_next_page(self): self.player.lotteryA2 = ' '.join(str(e) for e in self.player.participant.vars['amount'][self.round_number - 1]) self.player.lotteryB2 = ' '.join(str(e) for e in [self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][2]]) if self.player.Choice2 ==3 : self.player.Choice2 = random.randint(1,2) self.player.Dontcare2 = 1 else: self.player.Dontcare2 = 0 self.player.participant.vars['dontcare_M3'].append(self.player.Dontcare2) if self.player.Choice2==1: self.player.participant.vars['list_M3_preferred'].append(self.player.participant.vars['amount'][self.round_number - 1]) self.player.participant.vars['list_M3_N_preferred'].append([self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][2]]) else: self.player.participant.vars['list_M3_N_preferred'].append(self.player.participant.vars['amount'][self.round_number - 1]) self.player.participant.vars['list_M3_preferred'].append([self.player.participant.vars['amount'][self.round_number-1][0], self.player.participant.vars['amount'][self.round_number-1][2]]) if self.player.round_number==1: self.player.participant.vars['list_M3_choice'] = self.player.Choice2 class comparison_1_3(Page): form_model = 'player' form_fields = ['Choice3'] def vars_for_template(self): return { 'list': self.player.participant.vars['amount'][self.round_number-1], 'money1': self.player.participant.vars['amount'][self.round_number - 1][0], 'money2': self.player.participant.vars['amount'][self.round_number - 1][1], 'money3': self.player.participant.vars['amount'][self.round_number - 1][2], } def before_next_page(self): if self.player.Choice3 ==3 : self.player.Choice3 = random.randint(1,2) self.player.Dontcare3 = 1 else: self.player.Dontcare3 = 0 self.player.participant.vars['dontcare_M3'].append(self.player.Dontcare3) self.player.lotteryA3 = ' '.join(str(e) for e in self.player.participant.vars['amount'][self.round_number - 1]) self.player.lotteryB3 = ' '.join(str(e) for e in [self.player.participant.vars['amount'][self.round_number-1][1], self.player.participant.vars['amount'][self.round_number-1][2]]) if self.player.Choice3==1: self.player.participant.vars['list_M3_preferred'].append(self.player.participant.vars['amount'][self.round_number - 1]) self.player.participant.vars['list_M3_N_preferred'].append([self.player.participant.vars['amount'][self.round_number-1][1], self.player.participant.vars['amount'][self.round_number-1][2]]) else: self.player.participant.vars['list_M3_N_preferred'].append(self.player.participant.vars['amount'][self.round_number - 1]) self.player.participant.vars['list_M3_preferred'].append([self.player.participant.vars['amount'][self.round_number-1][1], self.player.participant.vars['amount'][self.round_number-1][2]]) class Next_part(Page): def is_displayed(self): return self.round_number == Constants.num_rounds class Next_choice(Page): pass class Next_choice_2(Page): pass class Next_choice_3(Page): def is_displayed(self): return self.round_number < Constants.num_rounds page_sequence = [comparison_1,Next_choice, comparison_1_2,Next_choice_2, comparison_1_3, Next_choice_3, Next_part]