from otree.api import * c = cu doc = '' class Constants(BaseConstants): name_in_url = 'forhandling_forenklet' players_per_group = 2 num_rounds = 3 start_money = cu(100) budgiver_role = 'budgiver' selger_role = 'selger' class Subsession(BaseSubsession): pass def my_function(group): p1 = group.get_player_by_id(1) p2 = group.get_player_by_id(2) if group.accept == True: p1.payoff = Constants.start_money - group.offer p2.payoff = group.offer elif group.accept == False: p1.payoff = 0 p2.payoff = 0 def set_payoffs(group): for player in group.get_players(): player.payoff = 0 class Group(BaseGroup): offer = models.CurrencyField(initial=Constants.start_money, label='Hvor mye vil du by?', max=Constants.start_money, min=0) accept = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nei']]) results = models.CurrencyField() class Player(BasePlayer): offer = models.CurrencyField(initial=Constants.start_money, label='Hvor mye vil du by?', max=Constants.start_money, min=0) accept = models.BooleanField(choices=[[True, 'Ja'], [False, 'Nei']], label='Godtar du budet?') def custom_export(players): yield ['participant_code', 'id_in_group'] for p in players: pp = p.participant yield [pp.code, p.id_in_group] class Introduction(Page): form_model = 'player' @staticmethod def is_displayed(player): return player.round_number == 1 class Introduksjon_2(Page): form_model = 'player' class Bargain(Page): form_model = 'group' form_fields = ['offer'] @staticmethod def is_displayed(player): return player.role == Constants.budgiver_role class MyWaitPage(WaitPage): wait_for_all_groups = True title_text = 'Venteside' body_text = 'Vent på den andre spilleren' class Accept(Page): form_model = 'group' form_fields = ['accept'] @staticmethod def is_displayed(player): return player.role == Constants.selger_role class Wait_for_result(WaitPage): after_all_players_arrive = 'my_function' title_text = 'Venteside' body_text = 'Vennligst vent på den andre spilleren.' class Results(Page): form_model = 'player' @staticmethod def vars_for_template(player): return dict() class Final_results(Page): form_model = 'player' @staticmethod def is_displayed(player): return player.round_number == Constants.num_rounds return True page_sequence = [Introduction, Introduksjon_2, Bargain, MyWaitPage, Accept, Wait_for_result, Results, Final_results]