from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class Introduction(Page): def is_displayed(self): return self.round_number == 1 class Lottery(Page): def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['lottery_choice'] def before_next_page(self): self.player.get_lottery() print('lottery choice', self.player.lottery_choice) print('lottery draw', self.player.lottery_draw) print('lottery bonus', self.player.lottery_bonus) class Instructions(Page): def is_displayed(self): return self.round_number == 1 form_model = 'player' form_fields = ['stdchoice'] def stdchoice_error_message(self, value): # print('lottery_choice', self.player.in_round(1).lottery_choice) print('value is', value) if value != 2: return "Your answer is incorrect. Please try again." class Question(Page): timeout_seconds = 45 form_model = 'player' form_fields = ['submitted_answer'] def submitted_answer_choices(self): qd = self.player.current_question() return [ qd['choice1'], qd['choice2'], qd['choice3'], qd['choice4'], ] def before_next_page(self): print('lottery_choice', self.player.in_round(1).lottery_choice) self.player.check_correct() # if self.round_number > 1: # self.player.in_round(self.round_number).lottery_choice = self.player.in_round(self.round_number - 1).lottery_choice # else: # self.player.in_round(self.round_number).lottery_choice = self.player.in_round(1).lottery_choice # previous_player = self.player.in_previous_rounds() # self.player.lottery_choice = previous_player.lottery_choice # self.player.lottery_choice = p.lottery_choice for p in self.player.in_previous_rounds() class Probability(Page): form_model = 'player' form_fields = ['probability'] def before_next_page(self): print('probability', self.player.probability) class BeliefsPrior1(Page): form_model = 'player' form_fields = ['prior_num_guess', 'practice_guess1'] def is_displayed(self): return self.round_number == Constants.num_rounds def practice_guess1_error_message(self, value): print('value is', value) if value != 4: return "Your answer is incorrect. Please try again." class BeliefsPrior2(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): # if self.player.prior_prob_guess1 is None: # self.player.prior_prob_guess1 = 0 # else: # self.player.prior_prob_guess1 = self.player.prior_prob_guess1 # # if self.player.prior_prob_guess2 is None: # self.player.prior_prob_guess2 = 0 # else: # self.player.prior_prob_guess2 = self.player.prior_prob_guess2 # # if self.player.prior_prob_guess3 is None: # self.player.prior_prob_guess3 = 0 # else: # self.player.prior_prob_guess3 = self.player.prior_prob_guess3 # # if self.player.prior_prob_guess4 is None: # self.player.prior_prob_guess4 = 0 # else: # self.player.prior_prob_guess4 = self.player.prior_prob_guess4 # # if self.player.prior_prob_guess5 is None: # self.player.prior_prob_guess5 = 0 # else: # self.player.prior_prob_guess5 = self.player.prior_prob_guess5 # # print('prob_guess1', self.player.prior_prob_guess1) # print('prob_guess2', self.player.prior_prob_guess2) # print('prob_guess3', self.player.prior_prob_guess3) # print('prob_guess4', self.player.prior_prob_guess4) # print('prob_guess5', self.player.prior_prob_guess5) return{ 'prior_number_correct': self.player.prior_num_guess, 'prior_number_correct_minus5': self.player.prior_num_guess - 5, 'prior_number_correct_minus4': self.player.prior_num_guess - 4, 'prior_number_correct_minus2': self.player.prior_num_guess - 2, 'prior_number_correct_minus1': self.player.prior_num_guess - 1, 'prior_number_correct_plus1': self.player.prior_num_guess + 1, 'prior_number_correct_plus2': self.player.prior_num_guess + 2, 'prior_number_correct_plus4': self.player.prior_num_guess + 4, 'prior_number_correct_plus5': self.player.prior_num_guess + 5, } form_model = 'player' form_fields = [ 'prior_prob_guess1', 'prior_prob_guess2', 'prior_prob_guess3', 'prior_prob_guess4', 'prior_prob_guess5', ] def error_message(self, values): if self.player.prior_num_guess <= 1: if values['prior_prob_guess3'] \ + values['prior_prob_guess4'] \ + values['prior_prob_guess5'] != 100: return 'The probabilities of the events must add up to 100.' elif self.player.prior_num_guess > 1 and self.player.prior_num_guess <= 4: if values['prior_prob_guess2'] \ + values['prior_prob_guess3'] \ + values['prior_prob_guess4'] \ + values['prior_prob_guess5'] != 100: return 'The probabilities of the events must add up to 100.' elif self.player.prior_num_guess > 4 and self.player.prior_num_guess < 16: if values['prior_prob_guess1'] \ + values['prior_prob_guess2'] \ + values['prior_prob_guess3'] \ + values['prior_prob_guess4'] \ + values['prior_prob_guess5'] != 100: return 'The probabilities of the events must add up to 100.' elif self.player.prior_num_guess >= 16 and self.player.prior_num_guess < 19: if values['prior_prob_guess1'] \ + values['prior_prob_guess2'] \ + values['prior_prob_guess3'] \ + values['prior_prob_guess4'] != 100: return 'The probabilities of the events must add up to 100.' else: if values['prior_prob_guess1'] \ + values['prior_prob_guess2'] \ + values['prior_prob_guess3'] != 100: return 'The probabilities of the events must add up to 100.' def before_next_page(self): self.player.get_random_questions() class Request(Page): form_model = 'player' form_fields = [ 'practice1', 'practice2', ] def is_displayed(self): return self.round_number == Constants.num_rounds def error_message(self, values): if values['practice1'] != 2 or values['practice2'] != 1: return "Your answer for at least one of the practice questions is incorrect. Please try again." def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() orig_correct = sum([p.orig_grading for p in player_in_all_rounds]) orig_correct0 = orig_correct - 3 orig_correct1 = orig_correct - 2 orig_correct2 = orig_correct - 1 orig_correct3 = orig_correct - 0 orig_correct4 = orig_correct + 1 orig_correct5 = orig_correct + 2 orig_correct6 = orig_correct + 3 self.player.num_correct = orig_correct print('num_correct', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff', payoff) print('bonus', bonus) print('comp', comp) self.player.orig_payoff = payoff print('player orig payoff', self.player.orig_payoff) self.player.orig_bonus = bonus print('player orig bonus', self.player.orig_bonus) self.player.orig_comp = comp print('player orig comp', self.player.orig_comp) self.player.num_correct = orig_correct0 print('num_correct0', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff0', payoff) print('bonus0', bonus) print('comp0', comp) self.player.orig_payoff0 = payoff print('player orig payoff0', self.player.orig_payoff0) self.player.orig_bonus0 = bonus print('player orig bonus0', self.player.orig_bonus0) self.player.orig_comp0 = comp print('player orig comp1', self.player.orig_comp0) self.player.num_correct = orig_correct1 print('num_correct1', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff1', payoff) print('bonus1', bonus) print('comp1', comp) self.player.orig_payoff1 = payoff print('player orig payoff1', self.player.orig_payoff1) self.player.orig_bonus1 = bonus print('player orig bonus1', self.player.orig_bonus1) self.player.orig_comp1 = comp print('player orig comp1', self.player.orig_comp1) self.player.num_correct = orig_correct2 print('num_correct2', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff2', payoff) print('bonus2', bonus) print('comp2', comp) self.player.orig_payoff2 = payoff print('player orig payoff2', self.player.orig_payoff2) self.player.orig_bonus2 = bonus print('player orig bonus2', self.player.orig_bonus2) self.player.orig_comp2 = comp print('player orig comp2', self.player.orig_comp2) self.player.num_correct = orig_correct3 print('num_correct3', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff3', payoff) print('bonus3', bonus) print('comp3', comp) self.player.orig_payoff3 = payoff print('player orig payoff3', self.player.orig_payoff3) self.player.orig_bonus3 = bonus print('player orig bonus3', self.player.orig_bonus3) self.player.orig_comp3 = comp print('player orig comp3', self.player.orig_comp3) self.player.num_correct = orig_correct4 print('num_correct4', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff4', payoff) print('bonus4', bonus) print('comp4', comp) self.player.orig_payoff4 = payoff print('player orig payoff4', self.player.orig_payoff4) self.player.orig_bonus4 = bonus print('player orig bonus4', self.player.orig_bonus4) self.player.orig_comp4 = comp print('player orig comp4', self.player.orig_comp4) self.player.num_correct = orig_correct5 print('num_correct5', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff5', payoff) print('bonus5', bonus) print('comp5', comp) self.player.orig_payoff5 = payoff print('player orig payoff5', self.player.orig_payoff5) self.player.orig_bonus5 = bonus print('player orig bonus5', self.player.orig_bonus5) self.player.orig_comp5 = comp print('player orig comp5', self.player.orig_comp5) self.player.num_correct = orig_correct6 print('num_correct6', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff6', payoff) print('bonus6', bonus) print('comp6', comp) self.player.orig_payoff6 = payoff print('player orig payoff6', self.player.orig_payoff6) self.player.orig_bonus6 = bonus print('player orig bonus6', self.player.orig_bonus6) self.player.orig_comp6 = comp print('player orig comp6', self.player.orig_comp6) player_in_all_rounds = self.player.in_all_rounds() return { 'player_in_all_rounds': player_in_all_rounds, 'orig_correct': sum([p.orig_grading for p in player_in_all_rounds]), 'possible0': sum([p.orig_grading for p in player_in_all_rounds]) - 3, 'possible1': sum([p.orig_grading for p in player_in_all_rounds]) - 2, 'possible2': sum([p.orig_grading for p in player_in_all_rounds]) - 1, 'possible3': sum([p.orig_grading for p in player_in_all_rounds]) - 0, 'possible4': sum([p.orig_grading for p in player_in_all_rounds]) + 1, 'possible5': sum([p.orig_grading for p in player_in_all_rounds]) + 2, 'possible6': sum([p.orig_grading for p in player_in_all_rounds]) + 3, 'orig_payoff': self.player.orig_payoff, 'orig_payoff0': self.player.orig_payoff0, 'orig_payoff1': self.player.orig_payoff1, 'orig_payoff2': self.player.orig_payoff2, 'orig_payoff3': self.player.orig_payoff3, 'orig_payoff4': self.player.orig_payoff4, 'orig_payoff5': self.player.orig_payoff5, 'orig_payoff6': self.player.orig_payoff6, 'orig_bonus': self.player.orig_bonus, 'orig_bonus0': self.player.orig_bonus0, 'orig_bonus1': self.player.orig_bonus1, 'orig_bonus2': self.player.orig_bonus2, 'orig_bonus3': self.player.orig_bonus3, 'orig_bonus4': self.player.orig_bonus4, 'orig_bonus5': self.player.orig_bonus5, 'orig_bonus6': self.player.orig_bonus6, 'orig_comp': self.player.orig_comp, 'orig_comp0': self.player.orig_comp0, 'orig_comp1': self.player.orig_comp1, 'orig_comp2': self.player.orig_comp2, 'orig_comp3': self.player.orig_comp3, 'orig_comp4': self.player.orig_comp4, 'orig_comp5': self.player.orig_comp5, 'orig_comp6': self.player.orig_comp6, } class Request2(Page): form_model = 'player' form_fields = [ 's0', 's1', 's2', 's3', 's4', 's5', 's6', 's7', 's8', 's9', ] def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() orig_correct = sum([p.orig_grading for p in player_in_all_rounds]) orig_correct0 = orig_correct - 3 orig_correct1 = orig_correct - 2 orig_correct2 = orig_correct - 1 orig_correct3 = orig_correct - 0 orig_correct4 = orig_correct + 1 orig_correct5 = orig_correct + 2 orig_correct6 = orig_correct + 3 self.player.num_correct = orig_correct print('num_correct', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff', payoff) print('bonus', bonus) print('comp', comp) self.player.orig_payoff = payoff print('player orig payoff', self.player.orig_payoff) self.player.orig_bonus = bonus print('player orig bonus', self.player.orig_bonus) self.player.orig_comp = comp print('player orig comp', self.player.orig_comp) self.player.num_correct = orig_correct0 print('num_correct0', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff0', payoff) print('bonus0', bonus) print('comp0', comp) self.player.orig_payoff0 = payoff print('player orig payoff0', self.player.orig_payoff0) self.player.orig_bonus0 = bonus print('player orig bonus0', self.player.orig_bonus0) self.player.orig_comp0 = comp print('player orig comp1', self.player.orig_comp0) self.player.num_correct = orig_correct1 print('num_correct1', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff1', payoff) print('bonus1', bonus) print('comp1', comp) self.player.orig_payoff1 = payoff print('player orig payoff1', self.player.orig_payoff1) self.player.orig_bonus1 = bonus print('player orig bonus1', self.player.orig_bonus1) self.player.orig_comp1 = comp print('player orig comp1', self.player.orig_comp1) self.player.num_correct = orig_correct2 print('num_correct2', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff2', payoff) print('bonus2', bonus) print('comp2', comp) self.player.orig_payoff2 = payoff print('player orig payoff2', self.player.orig_payoff2) self.player.orig_bonus2 = bonus print('player orig bonus2', self.player.orig_bonus2) self.player.orig_comp2 = comp print('player orig comp2', self.player.orig_comp2) self.player.num_correct = orig_correct3 print('num_correct3', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff3', payoff) print('bonus3', bonus) print('comp3', comp) self.player.orig_payoff3 = payoff print('player orig payoff3', self.player.orig_payoff3) self.player.orig_bonus3 = bonus print('player orig bonus3', self.player.orig_bonus3) self.player.orig_comp3 = comp print('player orig comp3', self.player.orig_comp3) self.player.num_correct = orig_correct4 print('num_correct4', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff4', payoff) print('bonus4', bonus) print('comp4', comp) self.player.orig_payoff4 = payoff print('player orig payoff4', self.player.orig_payoff4) self.player.orig_bonus4 = bonus print('player orig bonus4', self.player.orig_bonus4) self.player.orig_comp4 = comp print('player orig comp4', self.player.orig_comp4) self.player.num_correct = orig_correct5 print('num_correct5', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff5', payoff) print('bonus5', bonus) print('comp5', comp) self.player.orig_payoff5 = payoff print('player orig payoff5', self.player.orig_payoff5) self.player.orig_bonus5 = bonus print('player orig bonus5', self.player.orig_bonus5) self.player.orig_comp5 = comp print('player orig comp5', self.player.orig_comp5) self.player.num_correct = orig_correct6 print('num_correct6', self.player.num_correct) payoff, bonus, comp = self.player.set_orig_payoff() print('payoff6', payoff) print('bonus6', bonus) print('comp6', comp) self.player.orig_payoff6 = payoff print('player orig payoff6', self.player.orig_payoff6) self.player.orig_bonus6 = bonus print('player orig bonus6', self.player.orig_bonus6) self.player.orig_comp6 = comp print('player orig comp6', self.player.orig_comp6) player_in_all_rounds = self.player.in_all_rounds() return { 'player_in_all_rounds': player_in_all_rounds, 'orig_correct': sum([p.orig_grading for p in player_in_all_rounds]), 'possible0': sum([p.orig_grading for p in player_in_all_rounds]) - 3, 'possible1': sum([p.orig_grading for p in player_in_all_rounds]) - 2, 'possible2': sum([p.orig_grading for p in player_in_all_rounds]) - 1, 'possible3': sum([p.orig_grading for p in player_in_all_rounds]) - 0, 'possible4': sum([p.orig_grading for p in player_in_all_rounds]) + 1, 'possible5': sum([p.orig_grading for p in player_in_all_rounds]) + 2, 'possible6': sum([p.orig_grading for p in player_in_all_rounds]) + 3, 'orig_payoff': self.player.orig_payoff, 'orig_payoff0': self.player.orig_payoff0, 'orig_payoff1': self.player.orig_payoff1, 'orig_payoff2': self.player.orig_payoff2, 'orig_payoff3': self.player.orig_payoff3, 'orig_payoff4': self.player.orig_payoff4, 'orig_payoff5': self.player.orig_payoff5, 'orig_payoff6': self.player.orig_payoff6, 'orig_bonus': self.player.orig_bonus, 'orig_bonus0': self.player.orig_bonus0, 'orig_bonus1': self.player.orig_bonus1, 'orig_bonus2': self.player.orig_bonus2, 'orig_bonus3': self.player.orig_bonus3, 'orig_bonus4': self.player.orig_bonus4, 'orig_bonus5': self.player.orig_bonus5, 'orig_bonus6': self.player.orig_bonus6, 'orig_comp': self.player.orig_comp, 'orig_comp0': self.player.orig_comp0, 'orig_comp1': self.player.orig_comp1, 'orig_comp2': self.player.orig_comp2, 'orig_comp3': self.player.orig_comp3, 'orig_comp4': self.player.orig_comp4, 'orig_comp5': self.player.orig_comp5, 'orig_comp6': self.player.orig_comp6, } def before_next_page(self): self.player.get_random_scenario() self.player.set_fn_payoff() class BeliefsPost1(Page): form_model = 'player' form_fields = ['post_num_guess'] def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() return { 'orig_correct': sum([p.orig_grading for p in player_in_all_rounds]), 'possible0': sum([p.orig_grading for p in player_in_all_rounds]) - 3, 'possible1': sum([p.orig_grading for p in player_in_all_rounds]) - 2, 'possible2': sum([p.orig_grading for p in player_in_all_rounds]) - 1, 'possible3': sum([p.orig_grading for p in player_in_all_rounds]) - 0, 'possible4': sum([p.orig_grading for p in player_in_all_rounds]) + 1, 'possible5': sum([p.orig_grading for p in player_in_all_rounds]) + 2, 'possible6': sum([p.orig_grading for p in player_in_all_rounds]) + 3, } class BeliefsPost2(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() # possible1 = sum([p.orig_grading for p in player_in_all_rounds]) - 2 # possible2 = sum([p.orig_grading for p in player_in_all_rounds]) - 1 # possible3 = sum([p.orig_grading for p in player_in_all_rounds]) - 0 # possible4 = sum([p.orig_grading for p in player_in_all_rounds]) + 1 # possible5 = sum([p.orig_grading for p in player_in_all_rounds]) + 2 # if self.player.post_prob_guess1 is None: # self.player.post_prob_guess1 = 0 # else: # self.player.post_prob_guess1 = self.player.post_prob_guess1 # # if self.player.post_prob_guess2 is None: # self.player.post_prob_guess2 = 0 # else: # self.player.post_prob_guess2 = self.player.post_prob_guess2 # # if self.player.post_prob_guess3 is None: # self.player.post_prob_guess3 = 0 # else: # self.player.post_prob_guess3 = self.player.post_prob_guess3 # # if self.player.post_prob_guess4 is None: # self.player.post_prob_guess4 = 0 # else: # self.player.post_prob_guess4 = self.player.post_prob_guess4 # # if self.player.post_prob_guess5 is None: # self.player.post_prob_guess5 = 0 # else: # self.player.post_prob_guess5 = self.player.post_prob_guess5 # print('prob_post_guess1', self.player.post_prob_guess1) # print('prob_post_guess2', self.player.post_prob_guess2) # print('prob_post_guess3', self.player.post_prob_guess3) # print('prob_post_guess4', self.player.post_prob_guess4) # print('prob_post_guess5', self.player.post_prob_guess5) return{ 'orig_correct': sum([p.orig_grading for p in player_in_all_rounds]), 'possible0': sum([p.orig_grading for p in player_in_all_rounds]) - 3, 'possible1': sum([p.orig_grading for p in player_in_all_rounds]) - 2, 'possible2': sum([p.orig_grading for p in player_in_all_rounds]) - 1, 'possible3': sum([p.orig_grading for p in player_in_all_rounds]) - 0, 'possible4': sum([p.orig_grading for p in player_in_all_rounds]) + 1, 'possible5': sum([p.orig_grading for p in player_in_all_rounds]) + 2, 'possible6': sum([p.orig_grading for p in player_in_all_rounds]) + 3, 'post_number_correct': self.player.post_num_guess, # 'post_number_correct_minus5': self.player.post_num_guess - 5, # 'post_number_correct_minus4': self.player.post_num_guess - 4, # 'post_number_correct_minus2': self.player.post_num_guess - 2, # 'post_number_correct_minus1': self.player.post_num_guess - 1, # 'post_number_correct_plus1': self.player.post_num_guess + 1, # 'post_number_correct_plus2': self.player.post_num_guess + 2, # 'post_number_correct_plus4': self.player.post_num_guess + 4, # 'post_number_correct_plus5': self.player.post_num_guess + 5, } form_model = 'player' form_fields = [ 'post_prob_guess0', 'post_prob_guess1', 'post_prob_guess2', 'post_prob_guess3', 'post_prob_guess4', 'post_prob_guess5', 'post_prob_guess6', ] def error_message(self, values): player_in_all_rounds = self.player.in_all_rounds() orig_correct = sum([p.orig_grading for p in player_in_all_rounds]) if orig_correct == 0: if values['post_prob_guess3'] \ + values['post_prob_guess4'] \ + values['post_prob_guess5'] \ + values['post_prob_guess6'] != 100: return 'The probabilities of the events must add up to 100.' elif orig_correct == 1: if values['post_prob_guess2'] \ + values['post_prob_guess3'] \ + values['post_prob_guess4'] \ + values['post_prob_guess5'] \ + values['post_prob_guess6'] != 100: return 'The probabilities of the events must add up to 100.' elif orig_correct == 2: if values['post_prob_guess1'] \ + values['post_prob_guess2'] \ + values['post_prob_guess3'] \ + values['post_prob_guess4'] \ + values['post_prob_guess5'] \ + values['post_prob_guess6'] != 100: return 'The probabilities of the events must add up to 100.' elif orig_correct > 2 and orig_correct <= 17: if values['post_prob_guess0'] \ + values['post_prob_guess1'] \ + values['post_prob_guess2'] \ + values['post_prob_guess3'] \ + values['post_prob_guess4'] \ + values['post_prob_guess5'] \ + values['post_prob_guess6'] != 100: return 'The probabilities of the events must add up to 100.' elif orig_correct == 18: if values['post_prob_guess0'] \ + values['post_prob_guess1'] \ + values['post_prob_guess2'] \ + values['post_prob_guess3'] \ + values['post_prob_guess4'] \ + values['post_prob_guess5'] != 100: return 'The probabilities of the events must add up to 100.' elif orig_correct == 19: if values['post_prob_guess0'] \ + values['post_prob_guess1'] \ + values['post_prob_guess2'] \ + values['post_prob_guess3'] \ + values['post_prob_guess4'] != 100: return 'The probabilities of the events must add up to 100.' else: if values['post_prob_guess0'] \ + values['post_prob_guess1'] \ + values['post_prob_guess2'] \ + values['post_prob_guess3'] != 100: return 'The probabilities of the events must add up to 100.' def before_next_page(self): self.player.get_guess_bonus() self.player.set_payoff() class Results(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): player_in_all_rounds = self.player.in_all_rounds() orig_correct = sum([p.orig_grading for p in player_in_all_rounds]) self.player.orig_correct = orig_correct print('orig_correct', self.player.orig_correct) fn_correct = sum([p.fn_grading for p in player_in_all_rounds]) self.player.num_correct = fn_correct print('fn_correct', self.player.num_correct) return { 'player_in_all_rounds': player_in_all_rounds, 'answers_correct': sum([p.is_correct for p in player_in_all_rounds]), 'orig_correct': sum([p.orig_grading for p in player_in_all_rounds]), 'fn_correct': sum([p.fn_grading for p in player_in_all_rounds]), # 'rand_scenario': self.player.rand_scenario, 'request': self.player.request, 'cost': self.player.cost, 'regrade_cost': self.player.regrade_cost, 'fn_payoff': self.player.fn_payoff, 'fn_bonus': self.player.fn_bonus, 'prior_bonus1': self.player.prior_guess_bonus1, 'prior_bonus2': self.player.prior_guess_bonus2, 'post_bonus1': self.player.post_guess_bonus1, 'post_bonus2': self.player.post_guess_bonus2, 'lottery_draw': self.player.in_round(1).lottery_draw, 'lottery_bonus': self.player.in_round(1).lottery_bonus, 'prior_num_guess': self.player.prior_num_guess, 'post_num_guess': self.player.post_num_guess, 'rand_guess': self.player.rand_guess, 'guess_bonus': self.player.guess_bonus, 'total_payoff': self.player.total_payoff, 'lottery_choice': self.player.in_round(1).lottery_choice, 'prior_prob_true': self.player.prior_prob_true, 'post_prob_true': self.player.post_prob_true, 'probability': self.player.session.vars['probability'], 'pick': self.session.vars['pick'], 'fn_extra': self.session.vars['fn_extra'], 'rand_correct': self.session.vars['rand_correct'], } class Survey(Page): def is_displayed(self): return self.round_number == Constants.num_rounds page_sequence = [ Introduction, Lottery, Instructions, Question, Probability, BeliefsPrior1, BeliefsPrior2, Request, Request2, BeliefsPost1, BeliefsPost2, Survey, # Results, ]