from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import re author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'referrals' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): pass class Group(BaseGroup): names1 = models.StringField(initial="") class Player(BasePlayer): name_week1 = models.StringField() ref1_1 = models.StringField(blank=True) ref1_1_phone = models.StringField(blank=True) ref1_1_email = models.StringField(blank=True) ref1_2 = models.StringField(blank=True) ref1_2_phone = models.StringField(blank=True) ref1_2_email = models.StringField(blank=True) ref1_3 = models.StringField(blank=True) ref1_3_phone = models.StringField(blank=True) ref1_3_email = models.StringField(blank=True) ref1_4 = models.StringField(blank=True) ref1_4_phone = models.StringField(blank=True) ref1_4_email = models.StringField(blank=True) ref1_5 = models.StringField(blank=True) ref1_5_phone = models.StringField(blank=True) ref1_5_email = models.StringField(blank=True) ref1_6 = models.StringField(blank=True) ref1_6_phone = models.StringField(blank=True) ref1_6_email = models.StringField(blank=True) ref1_7 = models.StringField(blank=True) ref1_7_phone = models.StringField(blank=True) ref1_7_email = models.StringField(blank=True) ref1_8 = models.StringField(blank=True) ref1_8_phone = models.StringField(blank=True) ref1_8_email = models.StringField(blank=True) ref2_1 = models.StringField(blank=True) ref2_1_phone = models.StringField(blank=True) ref2_1_email = models.StringField(blank=True) ref2_2 = models.StringField(blank=True) ref2_2_phone = models.StringField(blank=True) ref2_2_email = models.StringField(blank=True) ref2_3 = models.StringField(blank=True) ref2_3_phone = models.StringField(blank=True) ref2_3_email = models.StringField(blank=True) ref2_4 = models.StringField(blank=True) ref2_4_phone = models.StringField(blank=True) ref2_4_email = models.StringField(blank=True) ref2_5 = models.StringField(blank=True) ref2_5_phone = models.StringField(blank=True) ref2_5_email = models.StringField(blank=True) ref2_6 = models.StringField(blank=True) ref2_6_phone = models.StringField(blank=True) ref2_6_email = models.StringField(blank=True) ref2_7 = models.StringField(blank=True) ref2_7_phone = models.StringField(blank=True) ref2_7_email = models.StringField(blank=True) ref2_8 = models.StringField(blank=True) ref2_8_phone = models.StringField(blank=True) ref2_8_email = models.StringField(blank=True) ref3_1 = models.StringField(blank=True) ref3_1_phone = models.StringField(blank=True) ref3_1_email = models.StringField(blank=True) ref3_2 = models.StringField(blank=True) ref3_2_phone = models.StringField(blank=True) ref3_2_email = models.StringField(blank=True) ref3_3 = models.StringField(blank=True) ref3_3_phone = models.StringField(blank=True) ref3_3_email = models.StringField(blank=True) ref3_4 = models.StringField(blank=True) ref3_4_phone = models.StringField(blank=True) ref3_4_email = models.StringField(blank=True) ref3_5 = models.StringField(blank=True) ref3_5_phone = models.StringField(blank=True) ref3_5_email = models.StringField(blank=True) ref3_6 = models.StringField(blank=True) ref3_6_phone = models.StringField(blank=True) ref3_6_email = models.StringField(blank=True) ref3_7 = models.StringField(blank=True) ref3_7_phone = models.StringField(blank=True) ref3_7_email = models.StringField(blank=True) ref3_8 = models.StringField(blank=True) ref3_8_phone = models.StringField(blank=True) ref3_8_email = models.StringField(blank=True) ref4_1 = models.StringField(blank=True) ref4_1_phone = models.StringField(blank=True) ref4_1_email = models.StringField(blank=True) ref4_2 = models.StringField(blank=True) ref4_2_phone = models.StringField(blank=True) ref4_2_email = models.StringField(blank=True) ref4_3 = models.StringField(blank=True) ref4_3_phone = models.StringField(blank=True) ref4_3_email = models.StringField(blank=True) ref4_4 = models.StringField(blank=True) ref4_4_phone = models.StringField(blank=True) ref4_4_email = models.StringField(blank=True) ref4_5 = models.StringField(blank=True) ref4_5_phone = models.StringField(blank=True) ref4_5_email = models.StringField(blank=True) ref4_6 = models.StringField(blank=True) ref4_6_phone = models.StringField(blank=True) ref4_6_email = models.StringField(blank=True) ref4_7 = models.StringField(blank=True) ref4_7_phone = models.StringField(blank=True) ref4_7_email = models.StringField(blank=True) ref4_8 = models.StringField(blank=True) ref4_8_phone = models.StringField(blank=True) ref4_8_email = models.StringField(blank=True) def ref1_1_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_1 +" is invalid." def ref1_2_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_2 +" is invalid." def ref1_3_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_3 +" is invalid." def ref1_4_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_4 +" is invalid." def ref1_5_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_5 +" is invalid." def ref1_6_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_6 +" is invalid." def ref1_7_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_7 +" is invalid." def ref1_8_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_8 +" is invalid." def ref2_1_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_1 +" is invalid." def ref2_2_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_2 +" is invalid." def ref2_3_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_3 +" is invalid." def ref2_4_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_4 +" is invalid." def ref2_5_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_5 +" is invalid." def ref2_6_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_6 +" is invalid." def ref2_7_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_7 +" is invalid." def ref2_8_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref2_8 +" is invalid." def ref1_1_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_1 +" is invalid." def ref1_2_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_2 +" is invalid." def ref1_3_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_3 +" is invalid." def ref1_4_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_4 +" is invalid." def ref1_5_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_5 +" is invalid." def ref1_6_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_6 +" is invalid." def ref1_7_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_7 +" is invalid." def ref1_8_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_8 +" is invalid." def ref1_1_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_1 +" is invalid." def ref1_2_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_2 +" is invalid." def ref1_3_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_3 +" is invalid." def ref1_4_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_4 +" is invalid." def ref1_5_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_5 +" is invalid." def ref1_6_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_6 +" is invalid." def ref1_7_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_7 +" is invalid." def ref1_8_email_error_message(self, value): if value is not None: if not re.match(r"[^@]+@[^@]+\.[^@]+",value): return "The email address for "+self.ref1_8 +" is invalid." def live_names1(self, name): group = self.group print(group.names1.split("%%")) if ''.join(name.split()) and (''.join(name.split()).lower() not in [''.join(x.lower().split()) for x in group.names1.split("%%")]): group.names1 = group.names1 + ' '.join(str(name).strip().split()) + "%%" response = dict(name=name) return {0: response} print(group.names1) # def live_names2(self, name): # group = self.group # if ''.join(name.split()) and (''.join(name.split()).lower() not in [''.join(x.lower().split()) for x in group.names1.split(",")]): # group.names2 = group.names1 + ' '.join(str(name).strip().split()) + "," # response = dict(name=name) # return {0: response} # print(group.names2) # def live_names3(self, name): # group = self.group # if ''.join(name.split()) and (''.join(name.split()).lower() not in [''.join(x.lower().split()) for x in group.names1.split(",")]): # group.names3 = group.names1 + ' '.join(str(name).strip().split()) + "," # response = dict(name=name) # return {0: response} # print(group.names3) # def live_names4(self, name): # group = self.group # if ''.join(name.split()) and (''.join(name.split()).lower() not in [''.join(x.lower().split()) for x in group.names1.split(",")]): # group.names4 = group.names1 + ' '.join(str(name).strip().split()) + "," # response = dict(name=name) # return {0: response} # print(group.names4) def names_to_vars(self,names): name_list = names.split(",") self.player.name_week1 = name_list[0]