from .models import * class Instructions_and_Proposed_extraction(Page): form_model = 'player' form_fields = ['extraction'] class ExtractWaitPage(WaitPage): after_all_players_arrive = 'set_extractions' class HpayoffWaitPage(WaitPage): after_all_players_arrive = 'set_hypothetical_payoffs' class Proposed_extractions(Page): form_model = 'player' def vars_for_template(self): group = self.group player = self.player contrib_of_others = [p.extraction for p in player.get_others_in_group()] return dict(extractions_others=contrib_of_others) class Hpayoff_and_vote(Page): form_model = 'player' form_fields = ['vote'] def vars_for_template(self): group = self.group player = self.player hgain_of_others = [p.hpayoff for p in player.get_others_in_group()] return dict(hpayoffs_others=hgain_of_others) class ResultsWaitPage(WaitPage): after_all_players_arrive = 'set_payoffs' class Real_extractions_Waitpage(WaitPage): after_all_players_arrive = 'set_real_extractions' class Dictator_WaitPage(WaitPage): after_all_players_arrive = 'set_dictator' class Dictator_decision(Page): form_model = 'group' form_fields = ['Dict_extraction_P1', 'Dict_extraction_P2', 'Dict_extraction_P3'] def is_displayed(self): group = self.group player = self.player return player.id_in_group == player.group.dictator and group.decision == 'against' def vars_for_template(self): group = self.group player = self.player contrib_of_others = [p.extraction for p in player.get_others_in_group()] return dict(extractions_others=contrib_of_others) class Payoff_dictator_WaitPage(WaitPage): after_all_players_arrive = 'set_payoff_dictator_extractions' def is_displayed(self): group = self.group return group.decision == 'against' class Results_If_Agreement(Page): form_model = 'player' def is_displayed(self): group = self.group return group.decision == 'in favour of' def vars_for_template(self): group = self.group player = self.player players = group.get_players() extractions = [p.extraction for p in players] max_proposed = sum(extractions) return dict(extractions_proposed=max_proposed) class Payoffs_others(Page): form_model = 'player' def is_displayed(self): group = self.group return group.decision == 'in favour of' def vars_for_template(self): group = self.group player = self.player payoff_of_others = [p.payoff for p in player.get_others_in_group()] return dict(gains_others=payoff_of_others) class Results_if_No_Agreement(Page): form_model = 'player' def is_displayed(self): group = self.group return group.decision == 'against' def vars_for_template(self): group = self.group player = self.player players = group.get_players() extractions = [p.extraction for p in players] max_proposed = sum(extractions) return dict(extractions_proposed=max_proposed) page_sequence = [Instructions_and_Proposed_extraction, ExtractWaitPage, HpayoffWaitPage, Proposed_extractions, Hpayoff_and_vote, ResultsWaitPage, Real_extractions_Waitpage, Dictator_WaitPage, Dictator_decision, Payoff_dictator_WaitPage, Results_If_Agreement, Payoffs_others, Results_if_No_Agreement]