from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range, ) import random import csv import numpy doc = """ Results (END): Final Results summary """ SUPERGROUP_NUM_ERR = 'Wrong number of players per supergroup' class Constants(BaseConstants): name_in_url = 'code_results_final' players_per_group = 2 players_per_supergroup = 2 # assert players_per_supergroup % players_per_group == 0, \ # SUPERGROUP_NUM_ERR num_rounds = 1 class Subsession(BaseSubsession): task1_order = models.IntegerField() task2_order = models.IntegerField() conversion_rate_eur = models.FloatField() show_up_fee = models.IntegerField() payments_ddl = models.IntegerField() quest_fee = models.FloatField() def creating_session(self): self.task1_order = self.session.config['task1_order'] self.task2_order = self.session.config['task2_order'] self.conversion_rate_eur = self.session.config['conversion_rate_eur'] self.show_up_fee = self.session.config['show_up_fee'] self.payments_ddl = self.session.config['payments_ddl'] self.quest_fee = self.session.config['quest_fee'] for p in self.get_players(): p.num_supergames = self.session.config['num_supergames'] p.continuation_prob = self.session.config['continuation_prob'] p.delta_limit = self.session.config['delta_limit'] p.conversion_rate = self.session.config['points100_value_eur'] # Payoff from mutual cooperation (Reward Payoff) p.payoff_R = self.session.config['payoff_R'] # Payoff from mutual cooperation (Punishment Payoff) p.payoff_P = self.session.config['payoff_P'] # Payoff from unilateral cooperation (Sucker Payoff) p.payoff_S = self.session.config['payoff_S'] # Payoff from unilateral defection (Temptation Payoff) p.payoff_T = self.session.config['payoff_T'] p.delta_limit = self.session.config['delta_limit'] p.conversion_rate_eur = self.session.config['conversion_rate_eur'] p.show_up_fee = self.session.config['show_up_fee'] p.payments_ddl = self.session.config['payments_ddl'] p.quest_fee = self.session.config['quest_fee'] class Group(BaseGroup): pass class Player(BasePlayer): num_supergames = models.IntegerField() continuation_prob = models.CharField() delta_limit = models.IntegerField() conversion_rate = models.StringField() payoff_R = models.IntegerField() payoff_P = models.IntegerField() payoff_S = models.IntegerField() payoff_T = models.IntegerField() conversion_rate_eur = models.FloatField() quest_fee = models.FloatField() id_random = models.IntegerField() task1_supergroup = models.IntegerField() task2_supergroup = models.IntegerField() show_up_fee = models.IntegerField() payments_ddl = models.IntegerField() task1_payoff_final_PD = models.FloatField() task2_payoff_final_PD = models.FloatField() payoff_final_PD = models.FloatField() payoff_final_PD_to_show = models.FloatField() payoff_overall = models.FloatField() payoff_overall_to_show = models.FloatField()