from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import numpy as np author = 'Alexander Schneeberger' doc = """ Krupka & Weber Task (2013) - Applied to the Group Rule Following Task """ class Constants(BaseConstants): name_in_url = 'NE' players_per_group = None num_rounds = 1 # Load additional HTML files RFT_Box = 'NE/Box_RFT.html' Pay_Box = 'NE/Box_Pay.html' Match_Box = 'NE/Box_Match.html' Rating_Box = 'NE/Box_Rating.html' # Define Ratings ratings = [ [3, 'Very socially appropriate'], [2, 'Socially appropriate'], [1, 'Somewhat socially appropriate'], [-1, 'Somewhat socially inappropriate'], [-2, 'Socially inappropriate'], [-3, 'Very socially inappropriate'], ] class Subsession(BaseSubsession): def creating_session(self): for p in self.get_players(): p.NE_bonus = c(self.session.config['NE_bonus']) p.RFT_blue_bonus = c(self.session.config['RFT_blue_bonus']) p.RFT_yellow_bonus = c(self.session.config['RFT_yellow_bonus']) class Group(BaseGroup): pass class Player(BasePlayer): # Choices appropriateness_rating_20_blue = models.IntegerField(choices=Constants.ratings) appropriateness_rating_15_blue = models.IntegerField(choices=Constants.ratings) appropriateness_rating_10_blue = models.IntegerField(choices=Constants.ratings) appropriateness_rating_5_blue = models.IntegerField(choices=Constants.ratings) appropriateness_rating_0_blue = models.IntegerField(choices=Constants.ratings) # Background Variables NE_bonus = models.CurrencyField() RFT_blue_bonus = models.CurrencyField() RFT_yellow_bonus = models.CurrencyField()