from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'intro' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): read1 = models.BooleanField(widget=widgets.CheckboxInput) agree1 = models.BooleanField() code1 = models.CharField() def read1_error_message(self, value): #print('value is', value) if value == False: return 'You must confirm that you have read the consent.' def personal_code(self): letters = ['A','B','C','D','E','F','G','H','I','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] if self.code1 is None: a = random.choice(letters) b = random.choice(letters) c = random.choice(letters) d = random.randint(100,999) self.code1 = a + b + c + '-' + str(d) else: return "done"