# -*- coding: utf-8 -*- from __future__ import division from . import models from ._builtin import Page, WaitPage from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) from .models import Player from .models import Constants from otree.common import safe_json def vars_for_all_templates(self): return {'total_capacity': Constants.total_capacity, 'max_units_per_player': Constants.max_units_per_player, 'total_q': 1} class Introduction(Page): def is_displayed(self): return self.subsession.round_number == 1 template_name = 'cournot_class2/Introduction.html' class Question1(Page): def is_displayed(self): return self.subsession.round_number == 1 template_name = 'cournot_class2/Question.html' form_model = Player form_fields = ['training_question_1'] def vars_for_template(self): return {'num_q': 1} class Feedback1(Page): def is_displayed(self): return self.subsession.round_number == 1 template_name = 'cournot_class/Feedback.html' def vars_for_template(self): return {'num_q': 1} class Decide(Page): form_model = Player form_fields = ['units'] class ResultsWaitPage(WaitPage): body_text = "Waiting for the other participant to decide." def after_all_players_arrive(self): self.group.set_payoffs() class Results(Page): def vars_for_template(self): return {'total_plus_base': self.player.payoff + Constants.base_points} class FinalResults(Page): def is_displayed(self): return self.subsession.round_number == Constants.num_rounds def vars_for_template(self): average_units = [] to_return = {} categories = ['Round {}'.format(i) for i in range(1, 16)] for round in self.group.in_all_rounds(): average_units.append(round.average_units) to_return['name'] = 'Average quantity produced' to_return['series'] = average_units to_return['categories'] = categories return to_return page_sequence = [Introduction, Question1, Feedback1, Decide, ResultsWaitPage, Results, FinalResults ]