from . import models from ._builtin import Page, WaitPage from .models import Constants import random class Decision(Page): form_model = models.Player form_fields = ['decision_taken'] def vars_for_template(self): self.player.random_number_generated = round(random.random(), 2) return { 'round_number': self.round_number } class PeriodWaitPage(WaitPage): bot_personality=random.randint(0,1) def after_all_players_arrive(self): self.group.loss_probability = Constants.loss_probabilities_list[self.round_number-1] if self.bot_personality==0: self.group.bot_advice = self.group.calculate_advice() else: self.group.bot_advice=self.group.calculate_random_advice() class Results(Page): def vars_for_template(self): self.player.set_payoffs() if self.round_number == Constants.num_rounds: self.player.paying_round = random.randint(1, Constants.num_rounds - 1) self.player.investment_outcome = random.choice(['Good', 'Bad']) return { 'round_number': self.round_number } class FinalResultWaitPage(WaitPage): def after_all_players_arrive(self): pass class FinalResult(Page): def is_displayed(self): return self.round_number == Constants.num_rounds def vars_for_template(self): self.player.total_payoffs() return { 'payoff': self.player.payoff, 'round_pay': self.player.in_round(self.player.paying_round).amount_won_in_round } class BotAdvice(Page): pass class Investment(Page): form_model = models.Player form_fields = ['investment_chosen'] def is_displayed(self): return self.round_number == Constants.num_rounds class Introduction(Page): def is_displayed(self): return self.round_number == 1 page_sequence = [ Introduction, PeriodWaitPage, BotAdvice, Decision, Results, Investment, FinalResultWaitPage, FinalResult ]