import random from otree.api import * class C(BaseConstants): NAME_IN_URL = 'deontology2' PLAYERS_PER_GROUP = None NUM_ROUNDS = 4 ENDOWMENT_PAIRS = [(60, 80), (80, 80), (60, 150), (150, 60)] def assign_random_endowments(subsession): for player in subsession.get_players(): endowment_pairs = C.ENDOWMENT_PAIRS.copy() random.shuffle(endowment_pairs) participant = player.participant if 'endowment_pairs_2' not in participant.vars: participant.vars['endowment_pairs_2'] = endowment_pairs.copy() assigned_endowment = participant.vars['endowment_pairs_2'].pop(0) player.endowment = assigned_endowment[0] player.endowment2 = assigned_endowment[1] def creating_session(subsession): assign_random_endowments(subsession) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): Frage_1 = models.IntegerField( choices=[ [1, "Alternative a"], [2, "Alternative b"], [3, "Alternative c"], [4, "Alternative d"], [5, "Alternative e"], [6, "Alternative f"], [7, "Alternative g"], [8, "Alternative h"], [9, "Alternative i"], [10, "Alternative j"], [11, "Alternative k"]] ) endowment = models.CurrencyField() endowment2 = models.IntegerField() class Define2(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Beginn2(Page): @staticmethod def is_displayed(player: Player): return player.round_number == 1 class Deontology2(Page): form_model = 'player' form_fields = ['Frage_1'] @staticmethod def vars_for_template(player: Player): auszahlung = { 0: player.endowment + 20, 1: player.endowment + 36, 2: player.endowment + 47, 3: player.endowment + 56, 4: player.endowment + 62, 5: player.endowment + 67, 6: player.endowment + 70, 7: player.endowment + 73, 8: player.endowment + 75, 9: player.endowment + 76, 10: player.endowment + 77, } auszahlung2 = {i: player.endowment2 - 4 * i for i in range(11)} auszahlung_total = {i: auszahlung[i] + auszahlung2[i] for i in range(11)} return dict(auszahlung=auszahlung, auszahlung2=auszahlung2, auszahlung_total=auszahlung_total) page_sequence = [Define2, Beginn2, Deontology2]