from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import re import string import random author = 'Magnus Strobel' doc = """ End """ def id_generator(size=6, chars=string.ascii_uppercase + string.digits): code = "Stellenbosch-" + ''.join(random.choice(chars) for _ in range(size)) return code class Constants(BaseConstants): name_in_url = 'end' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): def creating_session(self): count = 1 for p in self.get_players(): created_code = str(id_generator()) + str(count) p.participation_code = created_code count += 1 class Group(BaseGroup): pass class Player(BasePlayer): email = models.StringField(label="") # https://stackoverflow.com/questions/8022530/how-to-check-for-valid-email-address # https://stackoverflow.com/questions/201323/how-to-validate-an-email-address-using-a-regular-expression def email_error_message(self, email): if not re.match(r"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$", email): return 'Please provide a valid email address!' participation_code = models.StringField()