from otree.api import * c = cu doc = '' class Constants(BaseConstants): name_in_url = 'Prueba1' players_per_group = 3 num_rounds = 3 equal = (0.333, 0.333, 0.333) E = 20 W = 120 prod = (6, 3, 2) class Subsession(BaseSubsession): pass def S1calculation(group): group = group players = group.get_players() for p in players : p.total_aporte = round(5 + p.aporte) if p.total_aporte == 0 : p.water_available = 0 if p.total_aporte == 5 : p.water_available = 3 if p.total_aporte == 10 : p.water_available = 6 if p.total_aporte == 15 : p.water_available = 9 if p.total_aporte == 20 : p.water_available = 12 if p.total_aporte == 25 : p.water_available = 36 if p.total_aporte == 30 : p.water_available = 42 if p.total_aporte == 35 : p.water_available = 45 if p.total_aporte == 40 : p.water_available = 51 if p.total_aporte == 45 : p.water_available = 105 if p.total_aporte == 50 : p.water_available = 108 if p.total_aporte == 55 : p.water_available = 114 if p.total_aporte == 60 : p.water_available = 120 p.water_share = round(p.water_available*3*0.333) p.left = Constants.E-p.aporte p.benefits = round(p.left+p.water_share) class Group(BaseGroup): S1calculation = S1calculation class Player(BasePlayer): aporte = models.IntegerField(choices=[[0, '0'], [5, '5'], [10, '10'], [15, '15'], [20, '20']], initial=0, max=Constants.E, min=0) total_aporte = models.FloatField() water_available = models.FloatField() water_share = models.FloatField() left = models.IntegerField() benefits = models.FloatField() acumulated = models.FloatField(initial=0) acumulated_global = models.FloatField() type = models.IntegerField() type2 = models.StringField() class StagePruebaintro(Page): form_model = 'player' form_fields = ['aporte'] class StagePruebacalculation(WaitPage): after_all_players_arrive = S1calculation class StagePruebaresults(Page): form_model = 'player' page_sequence = [StagePruebaintro, StagePruebacalculation, StagePruebaresults]