from otree.api import *
##from otree.api import GroupTV
c = cu
doc = ''
class C(BaseConstants):
NAME_IN_URL = 'introduction'
PLAYERS_PER_GROUP = None
NUM_ROUNDS = 1
THRESHOLD = 48
class Subsession(BaseSubsession):
pass
def creating_session(subsession: Subsession):
session = subsession.session
group = subsession.get_groups()
for g in group:
g.treatment_g = session.config['name']
players = g.get_players()
for p in players:
p.treatment = g.treatment_g
class Group(BaseGroup):
treatment_g = models.StringField()
class Player(BasePlayer):
num_failed_attempts = models.IntegerField(initial=0)
treatment = models.StringField()
answer1 = models.IntegerField(
label='Wie hoch ist der Bonus, den Spieler*in 1 erhält, wenn die '
'Gruppe den Schwellenwert mit den Beiträgen erreicht?')
answer2 = models.IntegerField(
label='Alle Spieler*innen halten sich an die Regeln und tragen den Mindestwert bei. '
'Was ist der Gewinn von Spieler*in 2?')
answer3 = models.IntegerField(
label='Spieler*in 3 trägt 2 Tokens mehr bei als vorgegeben. Alle anderen Spieler*innen tragen den von der Regel benannten Mindestwert an Tokens bei. '
'Was ist der Gewinn von Spieler*in 3?')
answer4 = models.IntegerField(
label='Alle Spieler tragen den vorgegebenen Betrag bei, bis auf Spieler 2, welcher 2 Tokens weniger beiträgt. '
'Was ist der Gewinn von Spieler*in 4?')
answer5 = models.IntegerField(
label='Spieler*in 4 trägt keine Tokens bei. Insgesamt wird der Schwellenwert nicht erreicht. '
'Was ist der Gewinn von Spieler*in 4?')
answer2c = models.IntegerField(
label='Alle Spieler*innen tragen die Hälfte ihrer Tokens bei. Was ist der Gewinn von Spieler*in 2')
answer3c = models.IntegerField(
label='Spieler*in 3 trägt 14 Tokens bei, alle anderen Spieler*innen tragen 12 Tokens bei. '
'Was ist der Gewinn von Spieler*in 3?')
answer4c = models.IntegerField(
label='Spieler*in 2 trägt 10 Tokens bei, alle anderen Spieler*innen tragen 12 Tokens bei. '
'Was ist der Gewinn von Spieler*in 4?')
##variant = models.IntegerField()
def custom_export(players):
yield ['participant_code', 'id_in_group']
for p in players:
##p.variant = p.participant.variant
pp = p.participant
yield [pp.code, p.id_in_group]
class Intro(Page):
form_model = 'player'
class Explanation(Page):
#form_model = 'player'
@staticmethod
def vars_for_template(player: Player):
return dict(
bonus=48
)
class Continue(Page):
form_model = 'player'
@staticmethod
def is_displayed(player: Player):
return player.round_number == 1
return True
class ControlQuestion(Page):
form_model = 'player'
@staticmethod
def get_form_fields(player):
if player.treatment != 'Control_1' and player.treatment != 'Control_2':
return ['answer1', 'answer2', 'answer3', 'answer4', 'answer5']
else:
return ['answer1', 'answer2c', 'answer3c', 'answer4c', 'answer5']
@staticmethod
def is_displayed(player: Player):
return player.round_number == 1
return True
@staticmethod
def vars_for_template(player: Player):
group = player.group
return dict(
bonus=int(2*C.THRESHOLD)
)
def error_message(player: Player, values):
if player.treatment == 'Treatment_1':
solutions = dict(answer1=24, answer2=36, answer3=34, answer4=12, answer5=24)
elif player.treatment == 'Treatment_2':
solutions = dict(answer1=24, answer2=40, answer3=30, answer4=8, answer5=24)
elif player.treatment == 'Treatment_3':
solutions = dict(answer1=16, answer2=28, answer3=42, answer4=12, answer5=24)
elif player.treatment == 'Treatment_4':
solutions = dict(answer1=16, answer2=32, answer3=38, answer4=8, answer5=24)
elif player.treatment == 'Control_1':
solutions = dict(answer1=24, answer2c=36, answer3c=34, answer4c=12, answer5=24)
elif player.treatment == 'Control_2':
solutions = dict(answer1=16, answer2c=28, answer3c=42, answer4c=12, answer5=24)
errors = {name: 'Falsch' for name in solutions if values[name] != solutions[name]}
if errors:
player.num_failed_attempts += 1
return errors
class ContinueWait(WaitPage):
wait_for_all_groups = True
@staticmethod
def is_displayed(player: Player):
return player.round_number == 1
return True
#class ContinueWait(WaitPage):
# wait_for_all_groups = True
page_sequence = [Intro, ControlQuestion, Continue, ContinueWait]