from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Introduction1(Page): def is_displayed(self): player = self.player if player.timeIntro1 == 0: import time current_time = time.time() player.TimePlaceholder = round(current_time, 4) return True def before_next_page(self): player = self.player import random # preBeliefFlag player.preBeliefsFlag = random.randint(0,1) # interruptionsFlag #player.interruptionsFlag = random.randint(1,3) player.interruptionsFlag = 1 player.participant.vars['interruptionsFlag'] = player.interruptionsFlag import time current_time = time.time() player.timeIntro1 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) player.participant.vars['interval6'] = 0 player.participant.vars['interval5'] = 0 player.participant.vars['interval4'] = 0 player.participant.vars['interval3'] = 0 player.participant.vars['interval2'] = 0 player.participant.vars['interval1'] = 0 player.participant.vars["barcodesInterval6"] = 0 player.participant.vars["barcodesInterval5"] = 0 player.participant.vars["barcodesInterval4"] = 0 player.participant.vars["barcodesInterval3"] = 0 player.participant.vars["barcodesInterval2"] = 0 player.participant.vars["barcodesInterval1"] = 0 player.participant.vars['error6'] = 0 player.participant.vars['error5'] = 0 player.participant.vars['error4'] = 0 player.participant.vars['error3'] = 0 player.participant.vars['error2'] = 0 player.participant.vars['error1'] = 0 player.participant.vars["errorInterval6"] = 0 player.participant.vars["errorInterval5"] = 0 player.participant.vars["errorInterval4"] = 0 player.participant.vars["errorInterval3"] = 0 player.participant.vars["errorInterval2"] = 0 player.participant.vars["errorInterval1"] = 0 player.participant.vars['correct6'] = 0 player.participant.vars['correct5'] = 0 player.participant.vars['correct4'] = 0 player.participant.vars['correct3'] = 0 player.participant.vars['correct2'] = 0 player.participant.vars['correct1'] = 0 player.participant.vars["correctInterval6"] = 0 player.participant.vars["correctInterval5"] = 0 player.participant.vars["correctInterval4"] = 0 player.participant.vars["correctInterval3"] = 0 player.participant.vars["correctInterval2"] = 0 player.participant.vars["correctInterval1"] = 0 player.participant.vars['earningFromInterruptions'] = 0 player.participant.vars['earningFromInterruptions_2'] = 0 player.participant.vars['mainList'] = list(range(1,181)) player.participant.vars['secondList'] = list(range(181, 226)) player.participant.vars['emailMessages'] = ['Please confirm that I have received all your data by replying', 'Please confirm that you are making progress by replying', 'Please confirm that you are currently transcribing barcodes by replying', 'Please confirm that you are in front of a PC/laptop/tablet/phone by replying'] player.participant.vars['emailResponse'] = ["Correct", "Indeed", "True", "Right"] player.participant.vars['earningFromTask'] = 0 player.participant.vars['earningFromTask_alt'] = 0 player.participant.vars['mistakesTally'] = 0 player.participant.vars['correctsTally'] = 0 player.participant.vars['mistakesTallyFirst'] = 0 player.participant.vars['correctsTallyFirst'] = 0 player.participant.vars['mistakesTallyLast'] = 0 player.participant.vars['correctsTallyLast'] = 0 unit = 60 player.participant.vars['whichHalf'] = random.randint(1,2) player.whichHalfFlag = player.participant.vars['whichHalf'] """ if player.participant.vars['whichHalf'] == 1: a = random.randint((unit*5),(unit*10)) b = random.randint((unit*10),(unit*15)) c = random.randint((unit*15),(unit*20)) d = random.randint((unit*20),(unit*25)) player.participant.vars['firstHalfTimeInc'] = 30 player.participant.vars['secondHalfTimeInc'] = 0 else: a = random.randint((unit*35),(unit*40)) b = random.randint((unit*40),(unit*45)) c = random.randint((unit*45),(unit*50)) d = random.randint((unit*50),(unit*55)) player.participant.vars['firstHalfTimeInc'] = 0 player.participant.vars['secondHalfTimeInc'] = 30 """ a = random.randint((unit * 5), (unit * 10)) b = random.randint((unit * 10), (unit * 15)) c = random.randint((unit * 15), (unit * 20)) d = random.randint((unit * 20), (unit * 25)) player.whenToInterrupt = str(a) + "," + str(b) + "," + str(c) + "," + str(d) player.participant.vars['ipts_list'] = [a, b, c, d] a = random.randint((unit * 3), (unit * 7)) b = random.randint((unit * 8), (unit * 12)) player.whenToInterrupt_second = str(a) + "," + str(b) player.participant.vars['ipts_list_second'] = [a, b] class Introduction2(Page): def before_next_page(self): player = self.player import time current_time = time.time() player.timeIntro2 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class Introduction3(Page): def before_next_page(self): player = self.player import time current_time = time.time() player.timeIntro3 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class Introduction4A(Page): def is_displayed(self): player = self.player return player.interruptionsFlag == 1 def before_next_page(self): player = self.player if player.interruptionsFlag == 1: import time current_time = time.time() player.timeIntro4 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class Introduction4B(Page): def is_displayed(self): player = self.player return player.interruptionsFlag == 2 def before_next_page(self): player = self.player if player.interruptionsFlag == 2: import time current_time = time.time() player.timeIntro4 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class Introduction4C(Page): def is_displayed(self): player = self.player return player.interruptionsFlag == 3 def before_next_page(self): player = self.player if player.interruptionsFlag == 3: import time current_time = time.time() player.timeIntro4 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class Introduction5(Page): def before_next_page(self): player = self.player import time current_time = time.time() player.timeIntro5 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class Captcha(Page): form_model='player' form_fields =['captcha1'] class Captcha2(Page): form_model='player' form_fields =['captcha2'] def is_displayed(self): player = self.player return player.captcha1 != "9tR3iG" class ErrorPage(Page): def is_displayed(self): player = self.player return (player.captcha1 != "9tR3iG" and player.captcha2 != "Fj5E27") class Practice(Page): form_model='player' form_fields =['practiceUserInput'] def before_next_page(self): player = self.player player.practiceUserInput = 'P' + player.practiceUserInput """ @staticmethod def error_message(values): if not(values["practiceUserInput"].isdecimal()): return "Please enter only numeric values" """ class Example1(Page): form_model='player' form_fields =['exampleAnswer1'] class Example2(Page): form_model='player' form_fields =['exampleAnswer2'] def vars_for_template(self): player = self.player if player.exampleAnswer1 == '9': image = "intro/correct.jpg" else: image = "intro/incorrect.jpg" return dict( image = image ) class Example3(Page): def vars_for_template(self): player = self.player if player.exampleAnswer2 == '3': image = "intro/correct.jpg" else: image = "intro/incorrect.jpg" return dict( image = image ) def before_next_page(self): player = self.player import time current_time = time.time() player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage1A(Page): form_model = 'player' form_fields = ['beliefp1q1', 'beliefp1q2'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 1 def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 1: import time current_time = time.time() player.timeOnPreBeliefs1 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage2A(Page): form_model = 'player' form_fields = ['beliefp2q1a', 'beliefp2q2a', 'beliefp2q3a', 'beliefp2q4a', 'beliefp2q5a', 'beliefp2q6a', 'beliefp2q7a', 'beliefp2q8a', 'beliefp2q9a', 'beliefp2q1b', 'beliefp2q2b', 'beliefp2q3b', 'beliefp2q4b', 'beliefp2q5b', 'beliefp2q6b', 'beliefp2q7b', 'beliefp2q8b', 'beliefp2q9b'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 1 @staticmethod def error_message(values): if (values["beliefp2q1a"] > values["beliefp2q7a"]) or (values["beliefp2q2a"] > values["beliefp2q8a"])\ or (values["beliefp2q3a"] > values["beliefp2q9a"])\ or (values["beliefp2q1b"] > values["beliefp2q7b"]) or (values["beliefp2q2b"] > values["beliefp2q8b"])\ or (values["beliefp2q3b"] > values["beliefp2q9b"]): return "Minimum barcodes cannot be higher than maximum barcodes" def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 1: import time current_time = time.time() player.timeOnPreBeliefs2 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage3A(Page): form_model = 'player' form_fields = ['beliefp3q1a', 'beliefp3q2a', 'beliefp3q3a', 'beliefp3q4a', 'beliefp3q5a', 'beliefp3q6a', 'beliefp3q7a', 'beliefp3q8a', 'beliefp3q9a', 'beliefp3q1b', 'beliefp3q2b', 'beliefp3q3b', 'beliefp3q4b', 'beliefp3q5b', 'beliefp3q6b', 'beliefp3q7b', 'beliefp3q8b', 'beliefp3q9b'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 1 @staticmethod def error_message(values): if (values["beliefp3q1a"] > values["beliefp3q7a"]) or (values["beliefp3q2a"] > values["beliefp3q8a"])\ or (values["beliefp3q3a"] > values["beliefp3q9a"])\ or (values["beliefp3q1b"] > values["beliefp3q7b"]) or (values["beliefp3q2b"] > values["beliefp3q8b"])\ or (values["beliefp3q3b"] > values["beliefp3q9b"]): return "Minimum error rate cannot be higher than maximum error rate" def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 1: import time current_time = time.time() player.timeOnPreBeliefs3 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage4A(Page): form_model = 'player' form_fields = ['beliefp4q1'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 1 def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 1: import time current_time = time.time() player.timeOnPreBeliefs4 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage1B(Page): form_model = 'player' form_fields = ['beliefp1q1', 'beliefp1q2'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 2 def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 2: import time current_time = time.time() player.timeOnPreBeliefs1 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage2B(Page): form_model = 'player' form_fields = ['beliefp2q1a', 'beliefp2q2a', 'beliefp2q3a', 'beliefp2q4a', 'beliefp2q5a', 'beliefp2q6a', 'beliefp2q7a', 'beliefp2q8a', 'beliefp2q9a', 'beliefp2q1b', 'beliefp2q2b', 'beliefp2q3b', 'beliefp2q4b', 'beliefp2q5b', 'beliefp2q6b', 'beliefp2q7b', 'beliefp2q8b', 'beliefp2q9b'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 2 @staticmethod def error_message(values): if (values["beliefp2q1a"] > values["beliefp2q7a"]) or (values["beliefp2q2a"] > values["beliefp2q8a"])\ or (values["beliefp2q3a"] > values["beliefp2q9a"])\ or (values["beliefp2q1b"] > values["beliefp2q7b"]) or (values["beliefp2q2b"] > values["beliefp2q8b"])\ or (values["beliefp2q3b"] > values["beliefp2q9b"]): return "Minimum barcodes cannot be higher than maximum barcodes" def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 2: import time current_time = time.time() player.timeOnPreBeliefs2 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage3B(Page): form_model = 'player' form_fields = ['beliefp3q1a', 'beliefp3q2a', 'beliefp3q3a', 'beliefp3q4a', 'beliefp3q5a', 'beliefp3q6a', 'beliefp3q7a', 'beliefp3q8a', 'beliefp3q9a', 'beliefp3q1b', 'beliefp3q2b', 'beliefp3q3b', 'beliefp3q4b', 'beliefp3q5b', 'beliefp3q6b', 'beliefp3q7b', 'beliefp3q8b', 'beliefp3q9b'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 2 @staticmethod def error_message(values): if (values["beliefp3q1a"] > values["beliefp3q7a"]) or (values["beliefp3q2a"] > values["beliefp3q8a"])\ or (values["beliefp3q3a"] > values["beliefp3q9a"])\ or (values["beliefp3q1b"] > values["beliefp3q7b"]) or (values["beliefp3q2b"] > values["beliefp3q8b"])\ or (values["beliefp3q3b"] > values["beliefp3q9b"]): return "Minimum error rate cannot be higher than maximum error rate" def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 2: import time current_time = time.time() player.timeOnPreBeliefs3 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage4B(Page): form_model = 'player' form_fields = ['beliefp4q1'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 2 def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 2: import time current_time = time.time() player.timeOnPreBeliefs4 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage1C(Page): form_model = 'player' form_fields = ['beliefp1q1', 'beliefp1q2'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 3 def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 3: import time current_time = time.time() player.timeOnPreBeliefs1 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage2C(Page): form_model = 'player' form_fields = ['beliefp2q1a', 'beliefp2q2a', 'beliefp2q3a', 'beliefp2q4a', 'beliefp2q5a', 'beliefp2q6a', 'beliefp2q7a', 'beliefp2q8a', 'beliefp2q9a', 'beliefp2q1b', 'beliefp2q2b', 'beliefp2q3b', 'beliefp2q4b', 'beliefp2q5b', 'beliefp2q6b', 'beliefp2q7b', 'beliefp2q8b', 'beliefp2q9b'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 3 @staticmethod def error_message(values): if (values["beliefp2q1a"] > values["beliefp2q7a"]) or (values["beliefp2q2a"] > values["beliefp2q8a"])\ or (values["beliefp2q3a"] > values["beliefp2q9a"])\ or (values["beliefp2q1b"] > values["beliefp2q7b"]) or (values["beliefp2q2b"] > values["beliefp2q8b"])\ or (values["beliefp2q3b"] > values["beliefp2q9b"]): return "Minimum barcodes cannot be higher than maximum barcodes" def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 3: import time current_time = time.time() player.timeOnPreBeliefs2 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage3C(Page): form_model = 'player' form_fields = ['beliefp3q1a', 'beliefp3q2a', 'beliefp3q3a', 'beliefp3q4a', 'beliefp3q5a', 'beliefp3q6a', 'beliefp3q7a', 'beliefp3q8a', 'beliefp3q9a', 'beliefp3q1b', 'beliefp3q2b', 'beliefp3q3b', 'beliefp3q4b', 'beliefp3q5b', 'beliefp3q6b', 'beliefp3q7b', 'beliefp3q8b', 'beliefp3q9b'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 3 @staticmethod def error_message(values): if (values["beliefp3q1a"] > values["beliefp3q7a"]) or (values["beliefp3q2a"] > values["beliefp3q8a"])\ or (values["beliefp3q3a"] > values["beliefp3q9a"])\ or (values["beliefp3q1b"] > values["beliefp3q7b"]) or (values["beliefp3q2b"] > values["beliefp3q8b"])\ or (values["beliefp3q3b"] > values["beliefp3q9b"]): return "Minimum error rate cannot be higher than maximum error rate" def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 3: import time current_time = time.time() player.timeOnPreBeliefs3 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class PreBeliefsPage4C(Page): form_model = 'player' form_fields = ['beliefp4q1'] def is_displayed(self): player = self.player return player.preBeliefsFlag == 1 and player.interruptionsFlag == 3 def before_next_page(self): player = self.player if player.preBeliefsFlag == 1 and player.interruptionsFlag == 3: import time current_time = time.time() player.timeOnPreBeliefs4 = round(current_time - player.TimePlaceholder, 2) player.TimePlaceholder = round(current_time, 4) class HeadsUp(Page): pass page_sequence = [Introduction1, Introduction2, Introduction3, Introduction4A, Introduction4B, Introduction4C, Introduction5, Captcha, Captcha2, ErrorPage, Practice, Example1, Example2, Example3, PreBeliefsPage1A, PreBeliefsPage2A, PreBeliefsPage3A, PreBeliefsPage4A, PreBeliefsPage1B, PreBeliefsPage2B, PreBeliefsPage3B, PreBeliefsPage4B, PreBeliefsPage1C, PreBeliefsPage2C, PreBeliefsPage3C, PreBeliefsPage4C, HeadsUp]