from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Welcome(Page): form_model = 'player' form_fields = ['mturk_id', 'female', 'age', 'education', 'employment', 'experience', 'state', 'income', 'ethnicity'] class Attention(Page): form_model = 'player' form_fields = ['attention'] def before_next_page(self): self.player.participant.vars['mturk_id'] = self.player.mturk_id if self.player.attention != 3: self.player.active = False class Introduction(Page): def is_displayed(self): return self.player.active class Intro2(Page): def is_displayed(self): return self.player.active class Intro3(Page): def is_displayed(self): return self.player.active def before_next_page(self): self.player.participant.vars['treatment'] = 0 class NumberOne(Page): def is_displayed(self): return self.player.active class SliderOne(Page): form_model = 'player' form_fields = ['historyA1', 'historyB1', 'currentA1', 'currentB1'] def is_displayed(self): return self.player.active class EndOneA(Page): def is_displayed(self): return self.player.active class NumberTwo(Page): def is_displayed(self): return self.player.active timeout_seconds = 25 timer_text = 'Time left before negotiation starts:' def before_next_page(self): import time self.player.arrival = str(int(time.time()*1000)) class SliderTwo(Page): form_model = 'player' form_fields = ['historyA2', 'historyB2', 'currentA2', 'currentB2', 'time_final2', 'final_offer2', ] def is_displayed(self): return self.player.active timeout_seconds = 60 timer_text = 'Negotiation time:' def vars_for_template(self): return dict( arrival=self.player.arrival, ) def before_next_page(self): if self.timeout_happened: self.player.failed2 = True class EndTwoA(Page): def is_displayed(self): return self.player.active def vars_for_template(self): return dict( payoffB = 100 - self.player.final_offer2, ) class NumberThree(Page): def is_displayed(self): return self.player.active timeout_seconds = 10 timer_text = 'Time left before negotiation starts:' def before_next_page(self): import time self.player.arrival = str(int(time.time()*1000)) class SliderThree(Page): form_model = 'player' form_fields = ['historyA3', 'historyB3', 'currentA3', 'currentB3', 'time_final3', 'final_offer3'] def is_displayed(self): return self.player.active timeout_seconds = 60 timer_text = 'Negotiation time:' def vars_for_template(self): return dict( arrival=self.player.arrival, ) def before_next_page(self): import time self.player.arrival = str(int(time.time() * 1000)) if self.timeout_happened: self.player.failed3 = True class EndThreeA(Page): def is_displayed(self): return self.player.active def vars_for_template(self): return dict( payoffB = 100 - self.player.final_offer3, arrival=self.player.arrival, ) timeout_seconds = 30 class NumberFour(Page): def is_displayed(self): return self.player.active timeout_seconds = 10 timer_text = 'Time left before negotiation starts:' def before_next_page(self): import time self.player.arrival = str(int(time.time()*1000)) class SliderFour(Page): form_model = 'player' form_fields = ['historyA4', 'historyB4', 'currentA4', 'currentB4', 'time_final4', 'final_offer4'] def is_displayed(self): return self.player.active timeout_seconds = 60 def vars_for_template(self): return dict( arrival=self.player.arrival, ) def before_next_page(self): import time self.player.arrival = str(int(time.time() * 1000)) if self.timeout_happened: self.player.failed4 = True class EndFourA(Page): def is_displayed(self): return self.player.active def vars_for_template(self): return dict( payoffB = 100 - self.player.final_offer4, arrival=self.player.arrival, ) timeout_seconds = 30 class NumberFive(Page): def is_displayed(self): return self.player.active timeout_seconds = 10 timer_text = 'Time left before negotiation starts:' def before_next_page(self): import time self.player.arrival = str(int(time.time()*1000)) class SliderFive(Page): form_model = 'player' form_fields = ['historyA5', 'historyB5', 'currentA5', 'currentB5', 'time_final5', 'final_offer5'] def is_displayed(self): return self.player.active timeout_seconds = 60 def vars_for_template(self): return dict( arrival=self.player.arrival, ) def before_next_page(self): import time self.player.arrival = str(int(time.time() * 1000)) if self.timeout_happened: self.player.failed5 = True class EndFiveA(Page): def is_displayed(self): return self.player.active def vars_for_template(self): return dict( payoffB = 100 - self.player.final_offer5, arrival=self.player.arrival, ) timeout_seconds = 30 class Control(Page): form_model = 'player' form_fields = ['control1', 'control2', 'control3', 'control4', 'control5', 'control6', ] def is_displayed(self): return self.player.active def before_next_page(self): counter = 0 if self.player.control1 == 4: counter += 1 if self.player.control2 == 1: counter += 1 if self.player.control3 == 5: counter += 1 if self.player.control4 == 2: counter += 1 if self.player.control5 == 3: counter += 1 if self.player.control6 == 4: counter += 1 if counter < 5: self.player.active = False class Out(Page): form_model = 'player' def get_form_fields(self): if self.player.active: return ['returning'] else: return[] class End(Page): def is_displayed(self): return self.player.active page_sequence = [Intro2, Intro3, Control, NumberOne, SliderOne, EndOneA, NumberTwo, SliderTwo, EndTwoA, NumberThree, SliderThree, EndThreeA, NumberFour, SliderFour, EndFourA, NumberFive, SliderFive, EndFiveA, Out, End]