from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'dictator' PLAYERS_PER_GROUP = 2 NUM_ROUNDS = 1 ENDOWMENT = cu(1000) class Subsession(BaseSubsession): pass class Group(BaseGroup): decision = models.CurrencyField(label='Amount dictator decided to keep for himself', max=C.ENDOWMENT, min=0) def set_payoffs(group: Group): dictator = group.get_player_by_id(1) receiver = group.get_player_by_id(2) dictator.payoff = C.ENDOWMENT - group.decision receiver.payoff = group.decision class Player(BasePlayer): pass class Introduction(Page): form_model = 'group' class Decision(Page): form_model = 'player' timeout_seconds = 60 @staticmethod def is_displayed(player: Player): group = player.group return player.id_in_group == 1 class WaitResults(WaitPage): after_all_players_arrive = set_payoffs @staticmethod def is_displayed(player: Player): group = player.group return player.id_in_group == 2 class Results(Page): form_model = 'player' @staticmethod def vars_for_template(player: Player): group = player.group others = player.get_others_in_group() return dict( other_payoff =others[0].payoff ) page_sequence = [Introduction, Decision, WaitResults, Results]