from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants class Part1intro(Page): def is_displayed(self): return self.round_number in [1] class Part1screen1of3(Page): def vars_for_template(self): subs = self.subsession # # ALL Rounds if subs.round_number == 1: return dict( round_number_1=subs.round_number == 1, round_number_2=subs.round_number == 2, round_number_3=subs.round_number == 3, round_number_4=subs.round_number == 4 ) # if subs.round_number == 2: self.player.part1_payoff_r1 = int(self.participant.vars['part1_payoff_r1']) return dict( round_number_1=subs.round_number == 1, round_number_2=subs.round_number == 2, round_number_3=subs.round_number == 3, round_number_4=subs.round_number == 4, # # Past play: ROUND = 1 search_cost_r1_LOW=self.participant.vars['part1_search_cost_r1'] == 1, payoff_r1=self.participant.vars['part1_payoff_r1'], first_box_LTpurple_5tok_r1=(self.participant.vars['part1_first_box_r1'] == "left" and self.participant.vars['part1_content_purple_r1'] == 5), first_box_LTpurple_9tok_r1=(self.participant.vars['part1_first_box_r1'] == "left" and self.participant.vars['part1_content_purple_r1'] == 9), first_box_LTpurple_19tok_r1=(self.participant.vars['part1_first_box_r1'] == "left" and self.participant.vars['part1_content_purple_r1'] == 19), first_box_RTorange_5tok_r1=(self.participant.vars['part1_first_box_r1'] == "right" and self.participant.vars['part1_content_orange_r1'] == 5), first_box_RTorange_9tok_r1=(self.participant.vars['part1_first_box_r1'] == "right" and self.participant.vars['part1_content_orange_r1'] == 9), first_box_RTorange_19tok_r1=(self.participant.vars['part1_first_box_r1'] == "right" and self.participant.vars['part1_content_orange_r1'] == 19), # search_yes_r1=self.participant.vars['part1_search_choice_r1'] == 1, second_box_LTpurple_5tok_r1=(self.participant.vars['part1_first_box_r1'] == "right" and self.participant.vars['part1_content_purple_r1'] == 5), second_box_LTpurple_9tok_r1=(self.participant.vars['part1_first_box_r1'] == "right" and self.participant.vars['part1_content_purple_r1'] == 9), second_box_LTpurple_19tok_r1=(self.participant.vars['part1_first_box_r1'] == "right" and self.participant.vars['part1_content_purple_r1'] == 19), second_box_RTorange_5tok_r1=(self.participant.vars['part1_first_box_r1'] == "left" and self.participant.vars['part1_content_orange_r1'] == 5), second_box_RTorange_9tok_r1=(self.participant.vars['part1_first_box_r1'] == "left" and self.participant.vars['part1_content_orange_r1'] == 9), second_box_RTorange_19tok_r1=(self.participant.vars['part1_first_box_r1'] == "left" and self.participant.vars['part1_content_orange_r1'] == 19), ) if subs.round_number > 2: for x in range(1, (subs.round_number-1), 1): self.player.part1_payoff_rx = int(self.participant.vars['part1_payoff_rx']) return dict( round_number_1=subs.round_number == 1, round_number_2=subs.round_number == 2, round_number_3=subs.round_number == 3, round_number_4=subs.round_number == 4, # # Past play: ROUND > 1 search_cost_rx_LOW=self.participant.vars['part1_search_cost_rx'] == 1, payoff_rx=self.participant.vars['part1_payoff_rx'], first_box_LTpurple_5tok_rx=(self.participant.vars['part1_first_box_rx'] == "left" and self.participant.vars['part1_content_purple_rx'] == 5), first_box_LTpurple_9tok_rx=(self.participant.vars['part1_first_box_rx'] == "left" and self.participant.vars['part1_content_purple_rx'] == 9), first_box_LTpurple_19tok_rx=(self.participant.vars['part1_first_box_rx'] == "left" and self.participant.vars['part1_content_purple_rx'] == 19), first_box_RTorange_5tok_rx=(self.participant.vars['part1_first_box_rx'] == "right" and self.participant.vars['part1_content_orange_rx'] == 5), first_box_RTorange_9tok_rx=(self.participant.vars['part1_first_box_rx'] == "right" and self.participant.vars['part1_content_orange_rx'] == 9), first_box_RTorange_19tok_rx=(self.participant.vars['part1_first_box_rx'] == "right" and self.participant.vars['part1_content_orange_rx'] == 19), # search_yes_rx=self.participant.vars['part1_search_choice_rx'] == 1, second_box_LTpurple_5tok_rx=(self.participant.vars['part1_first_box_rx'] == "right" and self.participant.vars['part1_content_purple_rx'] == 5), second_box_LTpurple_9tok_rx=(self.participant.vars['part1_first_box_rx'] == "right" and self.participant.vars['part1_content_purple_rx'] == 9), second_box_LTpurple_19tok_rx=(self.participant.vars['part1_first_box_rx'] == "right" and self.participant.vars['part1_content_purple_rx'] == 19), second_box_RTorange_5tok_rx=(self.participant.vars['part1_first_box_rx'] == "left" and self.participant.vars['part1_content_orange_rx'] == 5), second_box_RTorange_9tok_rx=(self.participant.vars['part1_first_box_rx'] == "left" and self.participant.vars['part1_content_orange_rx'] == 9), second_box_RTorange_19tok_rx=(self.participant.vars['part1_first_box_rx'] == "left" and self.participant.vars['part1_content_orange_rx'] == 19), ) class Part1screen2of3(Page): form_model = 'player' form_fields = ['decision'] def vars_for_template(self): subs = self.subsession return dict( content_purple_5=subs.content_purple == 5, content_purple_9=subs.content_purple == 9, content_purple_19=subs.content_purple == 19, content_orange_5=subs.content_orange == 5, content_orange_9=subs.content_orange == 9, content_orange_19=subs.content_orange == 19, # search_cost_low=self.player.search_cost == 1, search_cost_high=self.player.search_cost == 5, # first_box_LTpurple=self.player.first_box == "left", first_box_RTorange=self.player.first_box == "right" # FIRST BOX OPENED: LEFT (Box 1) == Purple vs. RIGHT (Box 2) == Orange ) def before_next_page(self): # FIRST BOX OPENED: LEFT (Box 1) == Purple vs. RIGHT (Box 2) == Orange # SEARCH == N0 (0) vs. Yes (1) # SEARCH = NO --> Payoff == 1st Box content if self.player.decision == 0 and self.player.first_box == "left": self.player.payoff_int = self.player.content_purple if self.player.decision == 0 and self.player.first_box == "right": self.player.payoff_int = self.player.content_orange # SEARCH = YES --> Payoff == Highest value Box content - Search cost if self.player.decision == 1 and self.player.content_orange > self.player.content_purple: self.player.highest_value = self.player.content_orange self.player.payoff_int = self.player.highest_value - self.player.search_cost if self.player.decision == 1 and self.player.content_orange < self.player.content_purple: self.player.highest_value = self.player.content_purple self.player.payoff_int = self.player.highest_value - self.player.search_cost if self.player.decision == 1 and self.player.content_orange == self.player.content_purple: self.player.highest_value = self.player.content_orange self.player.payoff_int = self.player.highest_value - self.player.search_cost # # STORE RESULTS if self.round_number == 1: self.participant.vars['part1_payoff_r1'] = self.player.payoff_int self.participant.vars['part1_content_purple_r1'] = self.player.content_purple self.participant.vars['part1_content_orange_r1'] = self.player.content_orange self.participant.vars['part1_search_cost_r1'] = self.player.search_cost self.participant.vars['part1_first_box_r1'] = self.player.first_box self.participant.vars['part1_search_choice_r1'] = self.player.decision self.player.part1_payoff_r1 = int(self.participant.vars['part1_payoff_r1']) self.player.part1_content_purple_r1 = int(self.participant.vars['part1_content_purple_r1']) self.player.part1_content_orange_r1 = int(self.participant.vars['part1_content_orange_r1']) self.player.part1_search_cost_r1 = int(self.participant.vars['part1_search_cost_r1']) self.player.part1_first_box_r1 = self.participant.vars['part1_first_box_r1'] self.player.part1_search_choice_r1 = int(self.participant.vars['part1_search_choice_r1']) # if self.round_number == 2: self.participant.vars['part1_payoff_r2'] = self.player.payoff_int self.participant.vars['part1_content_purple_r2'] = self.player.content_purple self.participant.vars['part1_content_orange_r2'] = self.player.content_orange self.participant.vars['part1_search_cost_r2'] = self.player.search_cost self.participant.vars['part1_first_box_r2'] = self.player.first_box self.participant.vars['part1_search_choice_r2'] = self.player.decision self.player.part1_payoff_r2 = int(self.participant.vars['part1_payoff_r2']) self.player.part1_content_purple_r2 = int(self.participant.vars['part1_content_purple_r2']) self.player.part1_content_orange_r2 = int(self.participant.vars['part1_content_orange_r2']) self.player.part1_search_cost_r2 = int(self.participant.vars['part1_search_cost_r2']) self.player.part1_first_box_r2 = self.participant.vars['part1_first_box_r2'] self.player.part1_search_choice_r2 = int(self.participant.vars['part1_search_choice_r2']) # if self.round_number == 3: self.participant.vars['part1_payoff_r3'] = self.player.payoff_int self.participant.vars['part1_content_purple_r3'] = self.player.content_purple self.participant.vars['part1_content_orange_r3'] = self.player.content_orange self.participant.vars['part1_search_cost_r3'] = self.player.search_cost self.participant.vars['part1_first_box_r3'] = self.player.first_box self.participant.vars['part1_search_choice_r3'] = self.player.decision self.player.part1_payoff_r3 = int(self.participant.vars['part1_payoff_r3']) self.player.part1_content_purple_r3 = int(self.participant.vars['part1_content_purple_r3']) self.player.part1_content_orange_r3 = int(self.participant.vars['part1_content_orange_r3']) self.player.part1_search_cost_r3 = int(self.participant.vars['part1_search_cost_r3']) self.player.part1_first_box_r3 = self.participant.vars['part1_first_box_r3'] self.player.part1_search_choice_r3 = int(self.participant.vars['part1_search_choice_r3']) # class Part1screen3of3(Page): def vars_for_template(self): subs = self.subsession return dict( search_yes=self.player.decision == 1, # content_purple_5=subs.content_purple == 5, content_purple_9=subs.content_purple == 9, content_purple_19=subs.content_purple == 19, content_orange_5=subs.content_orange == 5, content_orange_9=subs.content_orange == 9, content_orange_19=subs.content_orange == 19, # search_cost_low=self.player.search_cost == 1, search_cost_high=self.player.search_cost == 5, # # FIRST BOX OPENED: LEFT (Box 1) == Purple vs. RIGHT (Box 2) == Orange first_box_LTpurple=self.player.first_box == "left", first_box_RTorange=self.player.first_box == "right", # payoff_int=self.player.payoff_int ) class Part1end(Page): timeout_seconds = 10 def is_displayed(self): if self.round_number == self.subsession.num_last_round: return True else: return False page_sequence = [ Part1intro, Part1screen1of3, Part1screen2of3, Part1screen3of3, Part1end ]