from . import models from ._builtin import Page, WaitPage from otree.api import Currency as c, currency_range from .models import Constants class Introduction(Page): """Description of the game: How to play and returns expected""" def vars_for_template(self): return {'round_num': self.round_number} class Contribute(Page): """Player: Choose how much to contribute""" form_model = 'player' form_fields = ['contribution'] + ['punish_{}'.format(i) for i in range(1, 5)] + \ ['reward_{}'.format(i) for i in range(1, 5)] timeout_submission = {'contribution': c(Constants.endowment / 2)} def vars_for_template(self): contributions = [p.contribution for p in self.player.in_all_rounds()] return { 'round_num': self.round_number, } class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() body_text = "Waiting for other participants to contribute." class Results(Page): """Players payoff: How much each has earned""" def vars_for_template(self): return { 'total_earnings': self.group.total_contribution * Constants.multiplier, 'round_num': self.round_number } page_sequence = [ # Introduction, Contribute, ResultsWaitPage # Results ]