from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants import random class Introduction(Page): """Description of the game: How to play and returns expected""" 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 == 3: 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 == 1: 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 == 3: 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 == 2: 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 == 2: 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 == 3: 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 == 1: 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 == 4: 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 == 4: 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 == 1: 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 == 4: 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 == 3: 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 == 2: 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 == 2: 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 == 4: 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 == 1: 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 == 2: 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 == 4: 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 == 4: self.player.score = self.player.score +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 == 1: self.player.score = self.player.score +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 == 4: self.player.score = self.player.score +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 == 1: self.player.score = self.player.score +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 == 3: self.player.score = self.player.score +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 == 4: self.player.score = self.player.score +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 == 1: self.player.score = self.player.score +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 == 4: self.player.score = self.player.score +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 == 3: self.player.score = self.player.score +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 == 1: self.player.score = self.player.score +1 class ResultsWaitPage(WaitPage): after_all_players_arrive = 'income_tax_median' body_text = "Waiting for other participants to make a decision." 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.round1_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.round1_payoff # class DefiningPayoff(Page): # def is_displayed(self): # return self.round_number ==2 # def before_next_page(self): # self.participant.vars['round1_payoffs'] = self.player.round1_payoff # after_all_players_arrive = 'Define_Payoff' # def before_next_page(self): # self.player.payoff = self.player.payoff + self.player.round1_payoff class EndRound1(Page): def is_displayed(self): return self.round_number ==2 def before_next_page(self): self.player.round1_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.round1_payoff self.participant.vars['round1_payoffs'] = self.player.round1_payoff if self.player.round1_payoff == self.player.in_round(1).redistributed_income: self.player.round1_stage = 1 elif self.player.round1_payoff == self.player.in_round(2).redistributed_income: self.player.round1_stage = 2 self.participant.vars['round1_stage'] = self.player.round1_stage page_sequence = [ Introduction, StartTime, Q1, Q2, Q3, Q4, Q5, Q6, Q7, Q8, Q9, Q10, Q11, Q12, Q13, Q14, Q15, Q16, Q17, Q18, Q19, Q20, Q21, Q22, Q23, Q24, Q25, Q26, Q27, Q28, Q29, Q30, MathResults, ResultsWaitPageMath, StartingIncome, RedistributedIncome, Income_Tax, Income_Tax2, ResultsWaitPage, EndRound1, # Results1, # Results2, # DefiningPayoff, ]