import statistics as stats from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'group_identity' players_per_group = None num_rounds = 1 class Subsession(BaseSubsession): Kandisky_med = models.FloatField() Kandisky_count = models.FloatField() def set_groups(self, Ka=[], Ke=[]): players = self.get_players() n = len(players) for p in players: p.Kandisky = p.Preferencia1 + p.Preferencia2 + p.Preferencia3 + p.Preferencia4 + p.Preferencia5 Ka.append(p.Kandisky) Kandisky_med = stats.median(Ka) for p in players: if p.Kandisky >= Kandisky_med: p.participant.vars['grupo'] = "Kandisky" p.grupo = "Kandisky" else: p.participant.vars['grupo'] = "Klee" p.grupo = "Klee" Ke.append(p.grupo) Kandisky_count = Ke.count("Kandisky") if n/2 > Kandisky_count: i = 0 while i < n/2-Kandisky_count: for p in players: if p.participant.vars['grupo'] == "Klee": p.participant.vars['grupo'] = "Kandisky" p.grupo = "Kandisky" i = i+1 if i == n/2-Kandisky_count: break if Kandisky_count > n/2: i = 0 while i < Kandisky_count-n/2: for p in players: if p.participant.vars['grupo'] == "Kandisky": p.participant.vars['grupo'] = "Klee" p.grupo = "Klee" i += 1 if i == Kandisky_count-n/2: break pass class Group(BaseGroup): pass class Player(BasePlayer): Preferencia1 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [0, 'Pintura de la Izquierda'], [1, 'Pintura de la Derecha'], ] ) Preferencia2 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [0, 'Pintura de la Izquierda'], [1, 'Pintura de la Derecha'], ] ) Preferencia3 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [1, 'Pintura de la Izquierda'], [0, 'Pintura de la Derecha'], ] ) Preferencia4 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [1, 'Pintura de la Izquierda'], [0, 'Pintura de la Derecha'], ] ) Preferencia5 = models.IntegerField(label="Cúal pintura prefiere?", choices=[ [0, 'Pintura de la Izquierda'], [1, 'Pintura de la Derecha'], ] ) Artista1 = models.StringField(label="Qué artista cree que hizo la obra de la izquierda?", choices=['Kandinsky', 'Klee'], ) Artista2 = models.StringField(label="Qué artista cree que hizo la obra de la derecha?", choices=['Kandinsky', 'Klee'], ) Kandisky = models.FloatField() Kandisky_med = models.FloatField() Kandisky_count = models.FloatField() grupo = models.StringField() Numero = models.IntegerField(label="Cúal numero prefiere?", choices=[ [1, 1], [2, 2], [3, 3], [4, 4], ] ) # ************ Informed Consent ************ city_3 = models.StringField() day_3 = models.IntegerField(max=31, min=1) month_3 = models.IntegerField(min=1, max=12) year_3 = models.IntegerField(max=2021, min=2021, default=2021) hour_3 = models.IntegerField(min=1, max=12) minutes_3 = models.IntegerField(min=0, max=59) ampm = models.IntegerField( choices=[ [0, 'AM'], [1, 'PM'] ] ) name_3 = models.StringField() signature_3 = models.StringField() idcard_3 = models.StringField() citycard_3 = models.StringField() pass