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' : self.round_number, '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'], 'result_part1_cards': self.player.participant.vars['result_part1_cards'], 'result_part1_payoff': self.player.participant.vars['result_part1_payoff'], 'result_part1_random': self.player.participant.vars['result_part1_random'], 'dontcare_M3': self.player.participant.vars['dontcare_M3'] } class comparison_2(Page): form_model = 'player' form_fields = ['Choice'] def vars_for_template(self): return { 'Prefered_1': self.player.participant.vars['list_M3_preferred'][self.round_number-1][0], 'Prefered_2': self.player.participant.vars['list_M3_preferred'][self.round_number-1][1], 'Prefered_3': self.player.participant.vars['list_M3_preferred'][self.round_number-1][-1], 'N_Prefered_1': self.player.participant.vars['list_M3_N_preferred'][self.round_number-1][0], 'N_Prefered_2': self.player.participant.vars['list_M3_N_preferred'][self.round_number-1][1], 'N_Prefered_3': self.player.participant.vars['list_M3_N_preferred'][self.round_number-1][-1], 'dontcare_M3_round': self.player.participant.vars['dontcare_M3'][self.round_number -1] } def before_next_page(self): self.player.lotteryA = ' '.join(str(e) for e in self.player.participant.vars['list_M3_preferred'][self.round_number-1]) self.player.lotteryB = ' '.join(str(e) for e in self.player.participant.vars['list_M3_N_preferred'][self.round_number-1]) if self.player.round_number == 1: if self.player.participant.vars['result_part1_random'] >= self.player.Choice: self.player.participant.vars['result_part1_option1option2']=0 self.player.participant.vars['result_part1_cards']= self.player.participant.vars['list_M3_N_preferred'][self.round_number-1] self.player.participant.vars['result_part1_payoff'] = random.choice(self.player.participant.vars['result_part1_cards']) + (self.player.participant.vars['result_part1_random'] -1) *3 self.player.participant.vars['result_part1_baseline'] = (self.player.participant.vars['result_part1_random'] -1) *3 else: self.player.participant.vars['result_part1_option1option2']=1 self.player.participant.vars['result_part1_cards']= self.player.participant.vars['list_M3_preferred'][self.round_number-1] self.player.participant.vars['result_part1_payoff'] = random.choice(self.player.participant.vars['result_part1_cards']) class Next_choice(Page): def is_displayed(self): return self.round_number < Constants.num_rounds class Next_part(Page): def is_displayed(self): return self.round_number == Constants.num_rounds page_sequence = [comparison_2, Next_choice, Next_part]