from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants import random class Player1(Page): form_model = 'player' form_fields = ['p1sel'] timeout_seconds = Constants.totime timeout_submission = {'p1sel': 'Do not delete any link'} # def before_next_page(self): # if self.timeout_happened: # self.player.timeout += 1 def p1sel_choices(self): if self.participant.vars['count'] < 50: lremain = [] if self.participant.vars['AB'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p2']); if self.participant.vars['AC'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p3']); if self.participant.vars['AD'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p4']); lremain.append('Do not delete any link'); return lremain elif self.participant.vars['count'] >= 50: lremain = [] if self.participant.vars['DA'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p1']); if self.participant.vars['DB'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p2']); if self.participant.vars['DC'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p3']); if self.participant.vars['DE'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p5']); if self.participant.vars['DF'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p6']); if self.participant.vars['DG'] == 1: lremain.append('Delete the link with Participant ' + self.participant.vars['p7']); lremain.append('Do not delete any link'); return lremain def before_next_page(self): self.player.set_var_1() def is_displayed(self): return self.participant.vars['count'] < Constants.rnend def vars_for_template(self): return { 'init': self.participant.vars['init'], 'AB': self.participant.vars['AB'], 'AC': self.participant.vars['AC'], 'AD': self.participant.vars['AD'], 'BA': self.participant.vars['BA'], 'BC': self.participant.vars['BC'], 'BD': self.participant.vars['BD'], 'CA': self.participant.vars['CA'], 'CB': self.participant.vars['CB'], 'CD': self.participant.vars['CD'], 'CE': self.participant.vars['CE'], 'DA': self.participant.vars['DA'], 'DB': self.participant.vars['DB'], 'DC': self.participant.vars['DC'], 'DE': self.participant.vars['DE'], 'EC': self.participant.vars['EC'], 'ED': self.participant.vars['ED'], 'DF': self.participant.vars['DF'], 'EG': self.participant.vars['EG'], 'DG': self.participant.vars['DG'], 'FG': self.participant.vars['FG'], 'AF': self.participant.vars['AF'], 'count': self.participant.vars['count'], 'score': self.participant.vars['score'], 'pr1': self.participant.vars['paying_round_1'], 'pr2': self.participant.vars['paying_round_2'], 'choices': self.participant.vars['choices'] } class Results(Page): timeout_seconds = 20 def is_displayed(self): return self.participant.vars['showresult'] == 1 \ and self.participant.vars['count'] <= Constants.rnend \ and self.participant.vars['done'] == 0 def before_next_page(self): if self.participant.vars['count'] == Constants.rnend: self.player.set_payoff() def vars_for_template(self): return { 'done': self.participant.vars['done'], 'choices': self.participant.vars['choices'], 'AB': self.participant.vars['AB'], 'AC': self.participant.vars['AC'], 'AD': self.participant.vars['AD'], 'BA': self.participant.vars['BA'], 'BC': self.participant.vars['BC'], 'BD': self.participant.vars['BD'], 'CA': self.participant.vars['CA'], 'CB': self.participant.vars['CB'], 'CD': self.participant.vars['CD'], 'CE': self.participant.vars['CE'], 'DA': self.participant.vars['DA'], 'DB': self.participant.vars['DB'], 'DC': self.participant.vars['DC'], 'DE': self.participant.vars['DE'], 'EC': self.participant.vars['EC'], 'ED': self.participant.vars['ED'], 'DF': self.participant.vars['DF'], 'EG': self.participant.vars['EG'], 'DG': self.participant.vars['DG'], 'FG': self.participant.vars['FG'], 'AF': self.participant.vars['AF'], 'count': self.participant.vars['count'], 'conut': self.participant.vars['conut'], 'p1payoff': self.participant.vars['p1payoff'], } class FinalResults(Page): def is_displayed(self): return self.participant.vars['showresult'] == 1 \ and self.participant.vars['count'] == Constants.rnend \ and self.participant.vars['done'] == 0 def vars_for_template(self): return { 'done': self.participant.vars['done'], 'AB': self.participant.vars['AB'], 'AC': self.participant.vars['AC'], 'AD': self.participant.vars['AD'], 'BA': self.participant.vars['BA'], 'BC': self.participant.vars['BC'], 'BD': self.participant.vars['BD'], 'CA': self.participant.vars['CA'], 'CB': self.participant.vars['CB'], 'CD': self.participant.vars['CD'], 'CE': self.participant.vars['CE'], 'DA': self.participant.vars['DA'], 'DB': self.participant.vars['DB'], 'DC': self.participant.vars['DC'], 'DE': self.participant.vars['DE'], 'EC': self.participant.vars['EC'], 'ED': self.participant.vars['ED'], 'DF': self.participant.vars['DF'], 'EG': self.participant.vars['EG'], 'DG': self.participant.vars['DG'], 'FG': self.participant.vars['FG'], 'AF': self.participant.vars['AF'], 'count': self.participant.vars['count'], 'pr1': self.participant.vars['paying_round_1'], 'pr2': self.participant.vars['paying_round_2'], 'payoff1': self.participant.vars['score'][self.participant.vars['paying_round_1']-1], 'payoff2': self.participant.vars['score'][self.participant.vars['paying_round_2']-1], 'T3payoff': self.participant.vars['T3payoff'], 'choices': self.participant.vars['choices'] } def before_next_page(self): self.participant.vars['done'] = 1 class PreComputer(Page): def before_next_page(self): self.player.setup() def is_displayed(self): return self.participant.vars['count'] < Constants.rnend class Computer(Page): def is_displayed(self): return self.participant.vars['count'] < Constants.rnend def vars_for_template(self): return { 'count': self.participant.vars['count'], } class EndofTask2(Page): def is_displayed(self): return self.participant.vars['init'] == 0 def vars_for_template(self): return { #UNCOMMENT THIS PART OUT 'pr1': self.participant.vars['T1_paying_round'], 'payoff1': self.participant.vars['T2payoff'], 'rpayoff8': self.participant.vars['rpayoff8'], 'rpayoff5': self.participant.vars['rpayoff5'], 'rpayoff7': self.participant.vars['rpayoff7'] } class Comp_Instructions(Page): def is_displayed(self): return self.participant.vars['init'] == 0 def before_next_page(self): self.participant.vars['init'] = 1 page_sequence = [ Comp_Instructions, PreComputer, Player1, Computer, Results, FinalResults ]