from otree.api import * c = cu doc = '' class Constants(BaseConstants): name_in_url = 'verdens_enkleste_forhandling' players_per_group = 2 num_rounds = 5 start_money = cu(100) def creating(subsession): session = subsession.session subsession.group_randomly() class Subsession(BaseSubsession): pass def random(group): group.set_players() def my_function(group): for player in group.get_players(): player.payoff = 0 class Group(BaseGroup): offer = models.CurrencyField(initial=0, label='Hvor mye vil du betale for pensumboka?', max=100, min=0) accept = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nei']], label='Aksepterer du dette budet?') def set_payoffs(player): group = player.group p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) p1.payoff = (Constants.start_money - player.bargain) p2.payoff = player.bargain class Player(BasePlayer): pass class Introduction(Page): form_model = 'player' @staticmethod def is_displayed(player): return player.round_number == 1 class IntroRound(Page): form_model = 'player' class MyWaitPage(WaitPage): wait_for_all_groups = True after_all_players_arrive = 'creating' class Bargain(Page): form_model = 'group' form_fields = ['offer'] @staticmethod def is_displayed(player): group = player.group return player.id_in_group == 1 class WaitForP1(WaitPage): after_all_players_arrive = 'my_function' class Accept(Page): form_model = 'group' form_fields = ['accept'] @staticmethod def is_displayed(player): group = player.group return player.id_in_group == 2 class ResultsWaitPage(WaitPage): wait_for_all_groups = True class Results(Page): form_model = 'player' @staticmethod def vars_for_template(player): group = player.group return dict( result = Constants.start_money - group.offer ) page_sequence = [Introduction, IntroRound, MyWaitPage, Bargain, WaitForP1, Accept, ResultsWaitPage, Results]