from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) import random author = 'Your name here' doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'contest_ASym1stage_ENG3' players_per_group = 3 NUM_ROUNDS = 20 num_rounds = 20 endowment = 60000 #subgroup = [1,1,1,2,2,2] marginal_cost = [1,3,6] award1 = 30000 award2 = 0 rate = 1/3600 class Subsession(BaseSubsession): def creating_session(self): self.group_randomly() for g in self.get_groups(): for i, p in enumerate(g.get_players()): p.marginal_cost = Constants.marginal_cost[i] class Group(BaseGroup): #winner = models.IntegerField() pass class Player(BasePlayer): random_round = models.IntegerField() selected_round = models.IntegerField() selected_round_payoff = models.IntegerField() effort = models.IntegerField(min=0, max=100) effort2 = models.IntegerField(min=0, max=100) total_effort1 = models.IntegerField(min=0, max=300) total_effort2 = models.IntegerField(min=0, max=300) subgroup = models.IntegerField() is_winner1 = models.StringField() is_winner2 = models.StringField() marginal_cost = models.IntegerField() competitor_cost = models.IntegerField() other_cost1 = models.IntegerField() other_cost2 = models.IntegerField() weight1 = models.FloatField() weight2 = models.FloatField() subgroup_name = models.StringField() cost_info_string = models.StringField() income_info_string = models.StringField() income_info_string2 = models.StringField() expenditure_stage1 = models.IntegerField() expenditure_stage2 = models.IntegerField() round_payoff = models.IntegerField() Monetary_payoff = models.IntegerField() total_payoff = models.IntegerField() rate = models.FloatField() expenditure_stage1_string = models.StringField() expenditure_stage2_string = models.StringField()