from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random import time class Questions(Page): form_model = 'player' form_fields = ['submitted_answer1', 'place_in_line1', 'submitted_answer2', 'place_in_line2', 'submitted_answer3', 'place_in_line3', 'own_belief_number' ] def vars_for_template(self): if self.player.gender == 'Female' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png'} elif self.player.gender == 'Female' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png'} elif self.player.gender == 'Female' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png'} elif self.player.gender == 'Female' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png'} if self.player.gender == 'Male' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png'} elif self.player.gender == 'Male' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png'} elif self.player.gender == 'Male' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png'} elif self.player.gender == 'Male' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png'} else: return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png'} def submitted_answer1_choices(self): qd = self.player.current_question_set() return [ qd[0]['choice1'], qd[0]['choice2'], qd[0]['choice3'], qd[0]['choice4'], ] def submitted_answer2_choices(self): qd = self.player.current_question_set() return [ qd[1]['choice1'], qd[1]['choice2'], qd[1]['choice3'], qd[1]['choice4'], ] def submitted_answer3_choices(self): qd = self.player.current_question_set() return [ qd[2]['choice1'], qd[2]['choice2'], qd[2]['choice3'], qd[2]['choice4'], ] def before_next_page(self): self.player.check_correct() self.player.set_payoff() # if self.subsession.round_number == self.session.vars['paying_round_a']: # self.participant.vars['total_payoff'] = self.participant.vars.get('total_payoff') + self.player.payoff # if self.subsession.round_number == self.session.vars['paying_round_b']: # self.participant.vars['total_payoff'] = self.participant.vars.get('total_payoff') + self.player.payoff_belief pass class ExplanationWaitPage(WaitPage): def after_all_players_arrive(self): pass class Explanation(Page): form_model = 'player' form_fields = ['quiz_player1', 'quiz_player2' ] def vars_for_template(self): self.player.gender = self.participant.vars.get('gender') label1 = 'Player 1 chooses 5 as her place in line. ' \ 'Player 2 chooses 3 as her place in line. ' \ 'Player 3 chooses 4 as his place in line. ' \ 'Which player will provide the group answer?' label2 = 'Player 1 chooses 2 as his place in line. ' \ 'Player 2 chooses 4 as her place in line. ' \ 'Player 3 chooses 5 as his place in line. ' \ 'Which player will provide the group answer?' return {'label1': label1, 'label2': label2} def is_displayed(self): return self.round_number == 1 def before_next_page(self): pass class Test(Page): def before_next_page(self): self.player.gender = self.participant.vars.get('gender') self.player.get_other_partners_info() pass class IntroductionGroup(Page): def vars_for_template(self): r = self.player.round_number r2 = r + 1 # group_gender = [self.player.gender, self.player.gender_partner1, self.player.gender_partner2] if self.player.gender == 'Female' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png', 'round': r, 'round2': r2} elif self.player.gender == 'Female' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png', 'round': r, 'round2': r2} elif self.player.gender == 'Female' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png', 'round': r, 'round2': r2} elif self.player.gender == 'Female' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/woman_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png', 'round': r, 'round2': r2} if self.player.gender == 'Male' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png', 'round': r, 'round2': r2} elif self.player.gender == 'Male' and self.player.gender_partner1 == 'Female' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/woman_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png', 'round': r, 'round2': r2} elif self.player.gender == 'Male' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Male': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png', 'round': r, 'round2': r2} elif self.player.gender == 'Male' and self.player.gender_partner1 == 'Male' and \ self.player.gender_partner2 == 'Female': return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/woman_alternative.png', 'round': r, 'round2': r2} else: return {'image_path_me': 'group_knowledge/man_alternative.png', 'image_partner1': 'group_knowledge/man_alternative.png', 'image_partner2': 'group_knowledge/man_alternative.png', 'round': r, 'round2': r2 } def is_displayed(self): return (self.round_number % 2) == 1 pass class Comprehension(Page): def is_displayed(self): return self.round_number == 1 def vars_for_template(self): label1 = 'Player 1 chooses 5 as her place in line. ' \ 'Player 2 chooses 3 as her place in line. ' \ 'Player 3 chooses 4 as his place in line. ' \ 'Which player will provide the group answer?' label2 = 'Player 1 chooses 2 as his place in line. ' \ 'Player 2 chooses 4 as her place in line. ' \ 'Player 3 chooses 5 as his place in line. ' \ 'Which player will provide the group answer?' return {'label1': label1, 'label2': label2} pass class EndCompilePayoff(Page): def is_displayed(self): return self.round_number == 10 def before_next_page(self): pass class ComprehensionWaitPage(WaitPage): def after_all_players_arrive(self): pass class IntroductionGroupWaitPage(WaitPage): pass class QuestionsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_contributor() self.group.pick_group_answer() self.group.check_group_answer() self.group.set_group_bonus() pass class Belonging(Page): form_model = 'player' form_fields = ['belonging1', 'belonging2', 'belonging3'] def is_displayed(self): return (self.round_number % 2) == 0 pass page_sequence = [ Explanation, ExplanationWaitPage, Comprehension, ComprehensionWaitPage, Test, IntroductionGroup, IntroductionGroupWaitPage, Questions, QuestionsWaitPage, Belonging, EndCompilePayoff ]