from otree.api import Currency as c, currency_range from statistics import mean from . import UnderstandingCheck, Instructions from ._builtin import Page, WaitPage from .models import Constants class Contribute(Page): form_model = 'player' form_fields = ['contribution'] class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): group = self.group players = group.get_players() contributions = [p.contribution for p in players] group.total_contribution = sum(contributions) group.individual_share = group.total_contribution * Constants.multiplier / Constants.players_per_group for p in players: p.payoff = Constants.endowment - p.contribution + group.individual_share class Results(Page): def after_all_players_arrive(self): # Calculate the average contribution of all the players in each round for round in self.subsession.get_rounds(): players = self.subsession.group_by_arrival_time()[round] contributions = [player.contribution for player in players] round_avg_contribution = mean(contributions) # Save the average contribution in the Group model self.group.round_avg_contribution = round_avg_contribution class Survey(Page): form_model = 'player' form_fields = ['open_question_1', 'open_question_2', 'mcq_1', 'mcq_2', 'mcq_3'] page_sequence = [ Instructions, UnderstandingCheck, Contribute, ResultsWaitPage, Results, Survey ]