from otree.api import * c = cu doc = '' class C(BaseConstants): NAME_IN_URL = 'payment_round' PLAYERS_PER_GROUP = None NUM_ROUNDS = 1 LANGUAGE = 'PL' PAYING_ROUND = 0 DALEJ_TEMPLATE = 'payment_round/dalej.html' class Subsession(BaseSubsession): pass def creating_session(subsession: Subsession): session = subsession.session import random if subsession.round_number == 1: paying_round = random.randint(1, 8) session.vars['paying_round'] = paying_round Subsession.creating_session = creating_session class Group(BaseGroup): pass class Player(BasePlayer): pass def custom_export(players): yield ['participant_code', 'id_in_group', 'payoff_r1', 'payoff_r2','payoff_r3','payoff_r4','payoff_r5','payoff_r6', 'payoff_r7', 'payoff_r8' 'paying_round'] for p in players: pp = p.participant session = p.session yield [pp.code, p.id_in_group, pp.vars['r1'], pp.vars['r2'], pp.vars['r3'], pp.vars['r4'], pp.vars['r5'], pp.vars['r6'], pp.vars['r7'], pp.vars['r8'], pp.vars['paying_round']] class RandomRound1(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 1 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 1: player.payoff = participant.vars["r1"] class RandomRound2(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 2 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 2: player.payoff = participant.vars["r2"] class RandomRound3(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 3 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 3: player.payoff = participant.vars["r3"] class RandomRound4(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 4 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 4: player.payoff = participant.vars["r4"] class RandomRound5(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 5 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 5: player.payoff = participant.vars["r5"] class RandomRound6(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 6 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 6: player.payoff = participant.vars["r6"] class RandomRound7(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 7 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 7: player.payoff = participant.vars["r7"] class RandomRound8(Page): form_model = 'player' @staticmethod def is_displayed(player: Player): session = player.session return session.vars['paying_round'] == 8 @staticmethod def vars_for_template(player: Player): session = player.session return dict( paying_round=session.vars['paying_round'], participation_fee=session.config['participation_fee'] ) @staticmethod def before_next_page(player: Player, timeout_happened): session = player.session participant = player.participant if session.vars['paying_round'] == 8: player.payoff = participant.vars["r8"] page_sequence = [RandomRound1, RandomRound2, RandomRound3, RandomRound4, RandomRound5, RandomRound6, RandomRound7, RandomRound8]