# -*- 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 == 4 class Treatment3(Page): def is_displayed(self): return self.subsession.round_number == 7 class Treatment4(Page): def is_displayed(self): return self.subsession.round_number == 10 class Treatment5(Page): def is_displayed(self): return self.subsession.round_number == 13 class Treatment6(Page): def is_displayed(self): return self.subsession.round_number == 16 class Treatment7(Page): def is_displayed(self): return self.subsession.round_number == 19 class Treatment8(Page): def is_displayed(self): return self.subsession.round_number == 22 class Treatment9(Page): def is_displayed(self): return self.subsession.round_number == 25 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)/Constants.players_per_group, 'round_number': self.subsession.round_number } class FinalResults(Page): def is_displayed(self): return self.subsession.round_number == Constants.num_rounds def vars_for_template(self): total_runs = [] to_return = {} categories = ['Round {}'.format(i) for i in range(1, 28)] for round in self.group.in_all_rounds(): total_runs.append(round.total_runs) to_return['name'] = 'Number of customers who ran on the bank' to_return['series'] = total_runs to_return['categories'] = categories return to_return page_sequence = [Introduction, Treatment2, Treatment3, Treatment4, Treatment5, Treatment6, Treatment7, Treatment8, Treatment9, Decision, ResultsWaitPage, Results, FinalResults ]