from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import random class ShuffleWaitPage(WaitPage): def is_displayed(self): return self.round_number ==1 wait_for_all_groups = True after_all_players_arrive = 'do_shuffle' class Round3(Page): def is_displayed(self): return self.round_number ==1 class StartingIncome(Page): def is_displayed(self): return self.round_number ==1 class Income_Tax(Page): def is_displayed(self): return self.round_number ==1 form_model = 'player' form_fields = ['income_tax'] class Income_Tax2(Page): def is_displayed(self): return self.round_number ==2 form_model = 'player' form_fields = ['income_tax'] class StartTime(Page): def is_displayed(self): return self.round_number ==2 def before_next_page(self): import time self.participant.vars['expiry'] = time.time() + 10 class Q1(Page): form_model = 'player' form_fields = ['Q1'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): return self.round_number ==2 def before_next_page(self): if self.player.Q1 == 1: self.player.score = self.player.score +1 class Q2(Page): form_model = 'player' form_fields = ['Q2'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q2 == 3: self.player.score = self.player.score +1 class Q3(Page): form_model = 'player' form_fields = ['Q3'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q3 == 1: self.player.score = self.player.score +1 class Q4(Page): form_model = 'player' form_fields = ['Q4'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q4 == 4: self.player.score = self.player.score +1 class Q5(Page): form_model = 'player' form_fields = ['Q5'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q5 == 3: self.player.score = self.player.score +1 class Q6(Page): form_model = 'player' form_fields = ['Q6'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q6 == 4: self.player.score = self.player.score +1 class Q7(Page): form_model = 'player' form_fields = ['Q7'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q7 == 2: self.player.score = self.player.score +1 class Q8(Page): form_model = 'player' form_fields = ['Q8'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q8 == 4: self.player.score = self.player.score +1 class Q9(Page): form_model = 'player' form_fields = ['Q9'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q9 == 3: self.player.score = self.player.score +1 class Q10(Page): form_model = 'player' form_fields = ['Q10'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q10 == 1: self.player.score = self.player.score +1 class Q11(Page): form_model = 'player' form_fields = ['Q11'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q11 == 4: self.player.score = self.player.score +1 class Q12(Page): form_model = 'player' form_fields = ['Q12'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q12 == 2: self.player.score = self.player.score +1 class Q13(Page): form_model = 'player' form_fields = ['Q13'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q13 == 2: self.player.score = self.player.score +1 class Q14(Page): form_model = 'player' form_fields = ['Q14'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q14 == 1: self.player.score = self.player.score +1 class Q15(Page): form_model = 'player' form_fields = ['Q15'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q15 == 1: self.player.score = self.player.score +1 class Q16(Page): form_model = 'player' form_fields = ['Q16'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q16 == 3: self.player.score = self.player.score +1 class Q17(Page): form_model = 'player' form_fields = ['Q17'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q17 == 1: self.player.score = self.player.score +1 class Q18(Page): form_model = 'player' form_fields = ['Q18'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q18 == 2: self.player.score = self.player.score +1 class Q19(Page): form_model = 'player' form_fields = ['Q19'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q19 == 4: self.player.score = self.player.score +1 class Q20(Page): form_model = 'player' form_fields = ['Q20'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q20 == 3: self.player.score = self.player.score +1 class Q21(Page): form_model = 'player' form_fields = ['Q21'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q21 == 1: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q22(Page): form_model = 'player' form_fields = ['Q22'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q22 == 3: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q23(Page): form_model = 'player' form_fields = ['Q23'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q23 == 2: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q24(Page): form_model = 'player' form_fields = ['Q24'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q24 == 3: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q25(Page): form_model = 'player' form_fields = ['Q25'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q25 == 1: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q26(Page): form_model = 'player' form_fields = ['Q26'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q26 == 3: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q27(Page): form_model = 'player' form_fields = ['Q27'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q27 == 3: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q28(Page): form_model = 'player' form_fields = ['Q28'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q28 == 1: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q29(Page): form_model = 'player' form_fields = ['Q29'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q29 == 2: self.player.score = self.player.score +1 self.player.Hscore = self.player.Hscore + 1 class Q30(Page): form_model = 'player' form_fields = ['Q30'] def get_timeout_seconds(self): import time return self.participant.vars['expiry'] - time.time() def is_displayed(self): import time return self.round_number ==2 and self.get_timeout_seconds() > 1 def before_next_page(self): if self.player.Q30 == 3: self.player.score = self.player.score + 1 self.player.Hscore = self.player.Hscore + 1 class ResultsWaitPage(WaitPage): after_all_players_arrive = 'income_tax_median' body_text = "Waiting for other participants to contribute." class ResultsWaitPageMath(WaitPage): def is_displayed(self): return self.round_number ==2 after_all_players_arrive = 'redistribute_incomes' body_text = "Waiting for other participants to finish." class MathResults(Page): def is_displayed(self): return self.round_number ==2 class RedistributedIncome(Page): def is_displayed(self): return self.round_number ==2 # class Results1(Page): # def is_displayed(self): # return self.round_number ==1 # class Results2(Page): # def is_displayed(self): # return self.round_number ==2 # def before_next_page(self): # self.player.round3_payoff = random.choice([self.player.in_round(1).redistributed_income, self.player.in_round(2).redistributed_income]) # self.player.payoff = self.player.payoff + self.player.round3_payoff # self.participant.vars['round3_payoffs'] = self.player.round3_payoff class EndRound3(Page): def is_displayed(self): return self.round_number ==2 def before_next_page(self): self.player.round3_payoff = random.choice([self.player.in_round(1).redistributed_income, self.player.in_round(2).redistributed_income]) self.player.payoff = self.player.payoff + self.player.round3_payoff self.participant.vars['round3_payoffs'] = self.player.round3_payoff self.player.total = self.player.payoff if self.player.round3_payoff == self.player.in_round(1).redistributed_income: self.player.round3_stage = 1 elif self.player.round3_payoff == self.player.in_round(2).redistributed_income: self.player.round3_stage = 2 self.participant.vars['round3_stage'] = self.player.round3_stage # class PayoffDisplay(Page): # def is_displayed(self): # return self.round_number ==1 # def vars_for_template(self): # self.player.round1_payoff = self.participant.vars['round1_payoffs'] page_sequence = [ ShuffleWaitPage, #PayoffDisplay, Round3, StartTime, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, MathResults, ResultsWaitPageMath, StartingIncome, RedistributedIncome, Income_Tax, Income_Tax2, ResultsWaitPage, EndRound3, # Results1, # Results2, ]