from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) author = 'Aaron Lob' doc = """ Simpsons Paradoxon """ class Constants(BaseConstants): name_in_url = 'Consent' players_per_group = 3 num_rounds = 1 class Subsession(BaseSubsession): codes = models.LongStringField() def creating_session(self): # give players labels for p in self.get_players(): p.participant.vars["label"] = "Spieler {}".format(p.participant.id_in_session) # player receives name "Spieler" + his id self.group_randomly(fixed_id_in_group = True) self.session.vars["codeList"] = [] players = self.get_players() for p in players: import random from random import shuffle import string # zufälligen Code generieren def random_string(stringLenth=8): letters=string.ascii_uppercase return "".join(random.choice(letters) for i in range(stringLenth)) randomString = random_string(8) # Player den Code zuweisen und ind. Code an Session-list anhängen p.participant.vars["generatedCode"] = randomString self.session.vars["codeList"].append(randomString) # Session-list durchmischen shuffle(self.session.vars["codeList"]) self.codes=str(self.session.vars["codeList"]) # ausgeglichene und zufällige Gruppen import random self.session.vars["conditionList"]=["11.02.","12.02.","13.02.","14.02."] self.session.vars["conditionsShuffeld"]=random.sample(self.session.vars["conditionList"],4) self.session.vars["conditionCounter"]=0 self.session.vars["conditionsShuffeldSingleplayer"]=random.sample(self.session.vars["conditionList"],4) self.session.vars["conditionCounterSingleplayer"]=0 class Group(BaseGroup): pass class Player(BasePlayer): # Testing participantVars = models.LongStringField() test = models.StringField(label = "Testfrage") #codes = models.LongStringField() timeoutProduced = models.BooleanField(initial=False) # Consent consent = models.BooleanField(label = "Stimmen Sie der anonymisierten Verarbeitung der mit dieser Studie erhobenen Daten und der davon getrennten Speicherung ihrer Personenbezogenen Daten zu?", choices = [[True, "Ja"], [False, "Nein, ich beende die Studie jetzt (Dies ist können Sie nicht rückgängig machen)"]]) consentRefused = models.LongStringField(blank=True, initial="")