from ._builtin import Page, WaitPage from .models import Constants ############################################################ # WELCOME ############################################################ # general instructions and only shown in round 1 class Introduction(Page): def is_displayed(self): return self.round_number == 1 ############################################################ # INTRODUCTION MARKET GAME ############################################################ class InformationNewRound(Page): after_all_players_arrive = 'creating_session' ############################################################ # MARKET PHASE 1 ############################################################ # first market phase # there are no prior results to be shown # random determination of expert opinions # TBD: expert opinions random yet the same in a given round? # might increase comparability by a lot # DECISION class Market1(Page): timeout_seconds = 120 # decisions form_model = 'player' form_fields = [ 'choice_1' ] def vars_for_template(self): return dict( exp11=self.group.expert_1_1, exp21=self.group.expert_2_1, exp31=self.group.expert_3_1, exp41=self.group.expert_4_1, pred=self.group.prediction_1 ) def before_next_page(self): if self.timeout_happened: self.player.time_out_1 = True class ResultsWaitPage1(WaitPage): after_all_players_arrive = 'set_payoffs' class Results1(Page): timeout_seconds = 30 def vars_for_template(self): return dict( exp1=self.group.expert_1_1, exp2=self.group.expert_2_1, exp3=self.group.expert_3_1, exp4=self.group.expert_4_1, pred=self.group.prediction_1, payoff=self.group.payoff_1, choice=self.player.choice_1, income=self.player.income_1 ) ############################################################ # MARKET PHASE 2 ############################################################ # DECISION class Market2(Page): timeout_seconds = 120 # decisions form_model = 'player' form_fields = [ 'choice_2' ] def vars_for_template(self): return dict( exp11=self.group.expert_1_2, exp21=self.group.expert_2_2, exp31=self.group.expert_3_2, exp41=self.group.expert_4_2, pred=self.group.prediction_2, exp1_1=self.group.expert_1_1, exp2_1=self.group.expert_2_1, exp3_1=self.group.expert_3_1, exp4_1=self.group.expert_4_1, pred1=self.group.prediction_1, payoff_1=self.group.payoff_1 ) def before_next_page(self): if self.timeout_happened: self.player.time_out_2 = True class ResultsWaitPage2(WaitPage): after_all_players_arrive = 'set_payoffs' class Results2(Page): timeout_seconds = 30 def vars_for_template(self): return dict( exp1=self.group.expert_1_2, exp2=self.group.expert_2_2, exp3=self.group.expert_3_2, exp4=self.group.expert_4_2, pred=self.group.prediction_2, payoff=self.group.payoff_2, choice=self.player.choice_2, income=self.player.income_2 ) ############################################################ # MARKET PHASE 3 ############################################################ # DECISION class Market3(Page): timeout_seconds = 120 # decisions form_model = 'player' form_fields = [ 'choice_3' ] def vars_for_template(self): return dict( exp11=self.group.expert_1_3, exp21=self.group.expert_2_3, exp31=self.group.expert_3_3, exp41=self.group.expert_4_3, pred=self.group.prediction_3, exp1_2=self.group.expert_1_2, exp2_2=self.group.expert_2_2, exp3_2=self.group.expert_3_2, exp4_2=self.group.expert_4_2, pred2=self.group.prediction_2, payoff_2=self.group.payoff_2, exp1_1=self.group.expert_1_1, exp2_1=self.group.expert_2_1, exp3_1=self.group.expert_3_1, exp4_1=self.group.expert_4_1, pred1=self.group.prediction_1, payoff_1=self.group.payoff_1 ) def before_next_page(self): if self.timeout_happened: self.player.time_out_3 = True class ResultsWaitPage3(WaitPage): after_all_players_arrive = 'set_payoffs' class Results3(Page): timeout_seconds = 30 def vars_for_template(self): return dict( exp1=self.group.expert_1_3, exp2=self.group.expert_2_3, exp3=self.group.expert_3_3, exp4=self.group.expert_4_3, pred=self.group.prediction_3, payoff=self.group.payoff_3, choice=self.player.choice_3, income=self.player.income_3 ) ############################################################ # MARKET PHASE 4 ############################################################ # DECISION class Market4(Page): timeout_seconds = 120 # decisions form_model = 'player' form_fields = [ 'choice_4' ] def vars_for_template(self): return dict( exp11=self.group.expert_1_4, exp21=self.group.expert_2_4, exp31=self.group.expert_3_4, exp41=self.group.expert_4_4, pred=self.group.prediction_4, exp1_3=self.group.expert_1_3, exp2_3=self.group.expert_2_3, exp3_3=self.group.expert_3_3, exp4_3=self.group.expert_4_3, pred3=self.group.prediction_3, payoff_3=self.group.payoff_3, exp1_2=self.group.expert_1_2, exp2_2=self.group.expert_2_2, exp3_2=self.group.expert_3_2, exp4_2=self.group.expert_4_2, pred2=self.group.prediction_2, payoff_2=self.group.payoff_2, exp1_1=self.group.expert_1_1, exp2_1=self.group.expert_2_1, exp3_1=self.group.expert_3_1, exp4_1=self.group.expert_4_1, pred1=self.group.prediction_1, payoff_1=self.group.payoff_1 ) def before_next_page(self): if self.timeout_happened: self.player.time_out_4 = True class ResultsWaitPage4(WaitPage): after_all_players_arrive = 'set_payoffs' class Results4(Page): timeout_seconds = 30 def vars_for_template(self): return dict( exp1=self.group.expert_1_4, exp2=self.group.expert_2_4, exp3=self.group.expert_3_4, exp4=self.group.expert_4_4, pred=self.group.prediction_4, payoff=self.group.payoff_4, choice=self.player.choice_4, income=self.player.income_4 ) ############################################################ # MARKET PHASE 5 ############################################################ # DECISION class Market5(Page): timeout_seconds = 120 # decisions form_model = 'player' form_fields = [ 'choice_5' ] def vars_for_template(self): return dict( exp11=self.group.expert_1_5, exp21=self.group.expert_2_5, exp31=self.group.expert_3_5, exp41=self.group.expert_4_5, pred=self.group.prediction_5, exp1_4=self.group.expert_1_4, exp2_4=self.group.expert_2_4, exp3_4=self.group.expert_3_4, exp4_4=self.group.expert_4_4, pred4=self.group.prediction_4, payoff_4=self.group.payoff_4, exp1_3=self.group.expert_1_3, exp2_3=self.group.expert_2_3, exp3_3=self.group.expert_3_3, exp4_3=self.group.expert_4_3, pred3=self.group.prediction_3, payoff_3=self.group.payoff_3, exp1_2=self.group.expert_1_2, exp2_2=self.group.expert_2_2, exp3_2=self.group.expert_3_2, exp4_2=self.group.expert_4_2, pred2=self.group.prediction_2, payoff_2=self.group.payoff_2, exp1_1=self.group.expert_1_1, exp2_1=self.group.expert_2_1, exp3_1=self.group.expert_3_1, exp4_1=self.group.expert_4_1, pred1=self.group.prediction_1, payoff_1=self.group.payoff_1 ) def before_next_page(self): if self.timeout_happened: self.player.time_out_5 = True class ResultsWaitPage5(WaitPage): after_all_players_arrive = 'set_payoffs' class Results5(Page): timeout_seconds = 120 def vars_for_template(self): return dict( exp1=self.group.expert_1_5, exp2=self.group.expert_2_5, exp3=self.group.expert_3_5, exp4=self.group.expert_4_5, pred=self.group.prediction_5, payoff=self.group.payoff_5, choice=self.player.choice_5, income=self.player.income_5 ) ############################################################ # FINAL OVERVIEW ############################################################ class Reliance(Page): form_model = 'player' form_fields = [ 'q_reliance_1' ] class OverviewWaitPage(WaitPage): after_all_players_arrive = 'set_income' class Overview(Page): timeout_seconds = 90 def vars_for_template(self): return dict( exp1_5=self.group.expert_1_5, exp2_5=self.group.expert_2_5, exp3_5=self.group.expert_3_5, exp4_5=self.group.expert_4_5, pred5=self.group.prediction_5, payoff_5=self.group.payoff_5, exp1_4=self.group.expert_1_4, exp2_4=self.group.expert_2_4, exp3_4=self.group.expert_3_4, exp4_4=self.group.expert_4_4, pred4=self.group.prediction_4, payoff_4=self.group.payoff_4, exp1_3=self.group.expert_1_3, exp2_3=self.group.expert_2_3, exp3_3=self.group.expert_3_3, exp4_3=self.group.expert_4_3, pred3=self.group.prediction_3, payoff_3=self.group.payoff_3, exp1_2=self.group.expert_1_2, exp2_2=self.group.expert_2_2, exp3_2=self.group.expert_3_2, exp4_2=self.group.expert_4_2, pred2=self.group.prediction_2, payoff_2=self.group.payoff_2, exp1_1=self.group.expert_1_1, exp2_1=self.group.expert_2_1, exp3_1=self.group.expert_3_1, exp4_1=self.group.expert_4_1, pred1=self.group.prediction_1, payoff_1=self.group.payoff_1, state=self.group.random_state ) #page_sequence = [Instructions, Market5, ResultsWaitPage3, Results5, # OverviewWaitPage, Overview] class IncomePage(Page): def is_displayed(self): return self.round_number == Constants.num_rounds timeout_seconds = 30 def vars_for_template(self): return dict(income=self.player.over_all_payoff, money=int(self.player.over_all_payoff)*0.03) page_sequence = [Introduction, InformationNewRound, Market1, ResultsWaitPage1, Results1, Market2, ResultsWaitPage2, Results2, Market3, ResultsWaitPage3, Results3, Market4, ResultsWaitPage3, Results4, Market5, ResultsWaitPage3, Results5, Reliance, OverviewWaitPage, Overview, IncomePage]