from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) author = 'Maren & Mounir' doc = """ Cognitive Reflection Test as proposed by Frederick (2005) """ class Constants(BaseConstants): name_in_url = 'cog' players_per_group = None num_rounds = 1 bonus = 50 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): # functions to calculate crt-score and if crt-questions are correct def set_is_crt_bat_correct(self): self.crt_bat_correct = self.crt_bat == 4 # self.crt_bat_correct = self.crt_bat == 10 def set_is_crt_widget_correct(self): self.crt_widget_correct = self.crt_widget == 10 # self.crt_widget_correct = self.crt_widget == 5 def set_is_crt_lake_correct(self): self.crt_lake_correct = self.crt_lake == 11 # self.crt_lake_correct = self.crt_lake == 47 def set_crt_score(self): self.crt_score = getattr(self, 'crt_bat_correct') + \ getattr(self, 'crt_widget_correct') + \ getattr(self, 'crt_lake_correct') # boolean variables to check for crt-questions crt_bat_correct = models.BooleanField(initial=None) crt_widget_correct = models.BooleanField(initial=None) crt_lake_correct = models.BooleanField(initial=None) crt_score = models.PositiveIntegerField() # formfields for input crt_bat = models.PositiveIntegerField() crt_widget = models.PositiveIntegerField() crt_lake = models.PositiveIntegerField() def set_payoff(self): self.payoff = self.crt_score*Constants.bonus