# -*- 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 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment1(Page): def is_displayed(self): return self.subsession.round_number == 1 def vars_for_template(self): #self.player.set_signals() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment2(Page): def is_displayed(self): return self.subsession.round_number == 2 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment3(Page): def is_displayed(self): return self.subsession.round_number == 3 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment4(Page): def is_displayed(self): return self.subsession.round_number == 4 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment5(Page): def is_displayed(self): return self.subsession.round_number == 5 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment6(Page): def is_displayed(self): return self.subsession.round_number == 6 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment7(Page): def is_displayed(self): return self.subsession.round_number == 7 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment8(Page): def is_displayed(self): return self.subsession.round_number == 8 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment9(Page): def is_displayed(self): return self.subsession.round_number == 9 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment10(Page): def is_displayed(self): return self.subsession.round_number == 10 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment11(Page): def is_displayed(self): return self.subsession.round_number == 11 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Treatment12(Page): def is_displayed(self): return self.subsession.round_number == 12 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment13(Page): def is_displayed(self): return self.subsession.round_number == 13 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment14(Page): def is_displayed(self): return self.subsession.round_number == 14 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment15(Page): def is_displayed(self): return self.subsession.round_number == 15 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment16(Page): def is_displayed(self): return self.subsession.round_number == 16 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment17(Page): def is_displayed(self): return self.subsession.round_number == 17 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment18(Page): def is_displayed(self): return self.subsession.round_number == 18 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment19(Page): def is_displayed(self): return self.subsession.round_number == 19 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal': self.player.signal, 'signal_payoff': self.player.type * self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal - Constants.gamma * 1, 'signal_payoff_2': self.player.type * self.player.signal - Constants.gamma * 2, 'signal_payoff_3': self.player.type * self.player.signal - Constants.gamma * 3, 'signal_payoff_4': self.player.type * self.player.signal - Constants.gamma * 4, 'signal_payoff_5': self.player.type * self.player.signal - Constants.gamma * 5, 'signal_payoff_6': self.player.type * self.player.signal - Constants.gamma * 6, 'signal_payoff_7': self.player.type * self.player.signal - Constants.gamma * 7, 'signal_payoff_8': self.player.type * self.player.signal - Constants.gamma * 8, 'signal_payoff_9': self.player.type * self.player.signal - Constants.gamma * 9, 'epsilon': Constants.e, 'type': self.player.type } class Treatment20(Page): def is_displayed(self): return self.subsession.round_number == 20 def vars_for_template(self): self.player.set_signals() self.player.set_types() return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class Decision(Page): form_model = models.Player form_fields = ['go'] def vars_for_template(self): return { 'round_number': self.subsession.round_number, 'signal':self.player.signal, 'signal_payoff': self.player.type*self.player.signal, 'signal_payoff_1': self.player.type * self.player.signal-Constants.gamma*1, 'signal_payoff_2': self.player.type * self.player.signal-Constants.gamma*2, 'signal_payoff_3': self.player.type * self.player.signal-Constants.gamma*3, 'signal_payoff_4': self.player.type * self.player.signal-Constants.gamma*4, 'signal_payoff_5': self.player.type * self.player.signal-Constants.gamma*5, 'signal_payoff_6': self.player.type * self.player.signal-Constants.gamma*6, 'signal_payoff_7': self.player.type * self.player.signal-Constants.gamma*7, 'signal_payoff_8': self.player.type * self.player.signal-Constants.gamma*8, 'signal_payoff_9': self.player.type * self.player.signal-Constants.gamma*9, 'epsilon':Constants.e, 'type': self.player.type } class ResultsWaitPage(WaitPage): #wait_for_all_players = True #def after_all_players_arrive(self): #self.player.set_payoffs() body_text = "Waiting for other participants." class Results(Page): def vars_for_template(self): self.player.set_payoffs() return { 'num_go': len([ p for p in self.group.get_players() if p.go]), 'payoff': self.player.payoff, 'round_number': self.subsession.round_number, 'signal': self.player.signal } page_sequence = [Introduction, #Treatment1, Treatment2, Treatment3, Treatment4, Treatment5, Treatment6, Treatment7, Treatment8, Treatment9, Treatment10, Treatment11, Treatment12, Treatment13, Treatment14, Treatment15, Treatment16, Treatment17, Treatment18, Treatment19, Treatment20, Decision, ResultsWaitPage, Results ]