# -*- coding: utf-8 -*- from __future__ import division from otree.api import ( models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer, Currency as c, currency_range ) from . import models from ._builtin import Page, WaitPage from .models import Constants from django.utils.safestring import mark_safe class Introduction(Page): def is_displayed(self): return self.subsession.round_number == 1 class Treatment2(Page): def is_displayed(self): return self.subsession.round_number == 2 class Treatment3(Page): def is_displayed(self): return self.subsession.round_number == 3 class Treatment4(Page): def is_displayed(self): return self.subsession.round_number == 4 class Treatment5(Page): def is_displayed(self): return self.subsession.round_number == 5 class Treatment6(Page): def is_displayed(self): return self.subsession.round_number == 6 class Treatment7(Page): def is_displayed(self): return self.subsession.round_number == 7 class Treatment8(Page): def is_displayed(self): return self.subsession.round_number == 8 class Treatment9(Page): def is_displayed(self): return self.subsession.round_number == 9 class Decision(Page): form_model = models.Player form_fields = ['withdraw'] def vars_for_template(self): return { 'round_number':self.subsession.round_number } class ResultsWaitPage(WaitPage): def after_all_players_arrive(self): self.group.set_payoffs() class Results(Page): def vars_for_template(self): self.group.set_payoffs() return { 'num_runs': len([ p for p in self.group.get_players() if p.withdraw]), 'total_runs': self.group.total_runs, 'run_percentage': (self.group.total_runs*100)/len(self.group.get_players()), 'round_number': self.subsession.round_number, 'bank_run': self.group.bank_run } class FinalResults(Page): def is_displayed(self): return self.subsession.round_number == Constants.num_rounds def vars_for_template(self): bank_run = [] to_return = {} categories = ['100%', '85%', '75%', '60%', '50%', '40%', '25%', '15%', '0%'] for round in self.group.in_all_rounds(): bank_run.append(round.bank_run) to_return['name'] = 'Bank run if 1, 0 otherwise' to_return['series'] = bank_run to_return['categories'] = categories return to_return page_sequence = [Introduction, Treatment2, Treatment3, Treatment4, Treatment5, Treatment6, Treatment7, Treatment8, Treatment9, Decision, ResultsWaitPage, Results, FinalResults ]