from otree.api import Currency as c, currency_range import grading_app.models import grading_task_end.models from ._builtin import Page, WaitPage from .models import Constants class MyPage(Page): pass class ThisPage(Page): form_model = 'player' form_fields = ['english', 'german', 'french', 'spanish', 'italian', 'chinese'] class InformationTreatment(Page): def vars_for_template(self): player = self.player earnedAmount = player.CalculateAmount() if earnedAmount is None: earnedAmount = 0 if earnedAmount < 0: earnedAmount = 0 if earnedAmount != 0: earnedAmount = round(earnedAmount, 2) player.earam = earnedAmount filename = "yaxis" + str(player.id_in_group) + ".txt" yaxis = open(filename, "r") yaxis = yaxis.read() return dict( earAm = earnedAmount ) def is_displayed(self): import random num = random.randint(0,1) player = self.player player.postBeliefFlag = num return player.postBeliefFlag == 0 def before_next_page(self): player = self.player filename = "mistakes" + str(player.id_in_group) + ".txt" misses = open(filename, "r") misses = misses.read() player.MistakesPerScreen = misses filename = "TimePerScreen" + str(player.id_in_group) + ".txt" tps = open(filename, "r") tps = tps.read() tps = tps.split(",") var = "0" try: for i in range(1, len(tps)): x = round(float(tps[i]) - float(tps[i - 1]), 3) var = var + "," + str(x) except: nothing = "nothing" player.ScreenTimeString = var class InformationChart(Page): def vars_for_template(self): player = self.player earnedAmount = player.CalculateAmount() try: int(earnedAmount) except: earnedAmount = 0 if earnedAmount < 0: earnedAmount = 0 if earnedAmount != 0: earnedAmount = round(earnedAmount, 2) player.earam = earnedAmount filename = "yaxis" + str(player.id_in_group) + ".txt" yaxis = open(filename, "r") yaxis = yaxis.read() yaxis = yaxis.split(",") if len(yaxis) != 5: for i in range(5): try: float(yaxis[i]) except: try: yaxis[i] = 0 except: yaxis.append(0) if yaxis[0] == 0: A = 0 else: A = float(yaxis[0]) if yaxis[1] == 0: B = 0 else: B=float(yaxis[1]) - float(yaxis[0]) if yaxis[2] == 0: C = 0 else: C = float(yaxis[2]) - float(yaxis[1]) if yaxis[3] == 0: D = 0 else: D=float(yaxis[3]) - float(yaxis[2]) return dict( earAm = earnedAmount, yA = yaxis, a=A, b=B, c=C, d=D ) def is_displayed(self): player = self.player return player.postBeliefFlag != 0 def before_next_page(self): player = self.player filename = "mistakes" + str(player.id_in_group) + ".txt" misses = open(filename, "r") misses = misses.read() player.MistakesPerScreen = misses filename = "TimePerScreen" + str(player.id_in_group) + ".txt" tps = open(filename, "r") tps = tps.read() tps = tps.split(",") var = "0" try: for i in range(1, len(tps)): x = round(float(tps[i]) - float(tps[i - 1]), 3) var = var + "," + str(x) except: nothing = "nothing" player.ScreenTimeString = var class PostBeliefsPage1(Page): form_model = 'player' form_fields = ['postbeliefp1q1', 'postbeliefp1q2', 'postbeliefp1q3', 'postbeliefp1q4', 'postbeliefp1q5', 'postbeliefp1q6', 'postbeliefp1q7', 'postbeliefp1q8'] def is_displayed(self): player =self.player return player.earam > 0 def before_next_page(self): player = self.player filename = "numImages" + str(player.id_in_group) + ".txt" rounds = open(filename, "r") rounds = rounds.read() rounds = rounds.split(",") try: player.numImages1 = int(rounds[0]) x = 0.25 - 1 * (( 1 - player.postbeliefp1q1/player.numImages1)**2) if x < 0: x = 0 player.earam += x except: nothing = "nothing" try: player.numImages2 = int(rounds[1]) - player.numImages1 x = 0.25 - 1 * ((1 - player.postbeliefp1q2 / player.numImages2) ** 2) if x < 0: x = 0 player.earam += x except: nothing = "nothing" try: player.numImages3 = int(rounds[2]) - player.numImages2 x = 0.25 - 1 * ((1 - player.postbeliefp1q3 / player.numImages3) ** 2) if x < 0: x = 0 player.earam += x except: nothing = "nothing" try: player.numImages4 = int(rounds[3]) - player.numImages3 x = 0.25 - 1 * ((1 - player.postbeliefp1q4 / player.numImages4) ** 2) if x < 0: x = 0 player.earam += x except: nothing = "nothing" """ x = 0.25 - 1 * (( 1 - player.postbeliefp1q1/player.numImages1)**2) if x < 0: x = 0 player.earam += x x = 0.25 - 1 * ((1 - player.postbeliefp1q2 / player.numImages2) ** 2) if x < 0: x = 0 player.earam += x x = 0.25 - 1 * ((1 - player.postbeliefp1q3 / player.numImages3) ** 2) if x < 0: x = 0 player.earam += x x = 0.25 - 1 * ((1 - player.postbeliefp1q4 / player.numImages4) ** 2) if x < 0: x = 0 player.earam += x """ class PostBeliefsPage2(Page): form_model = 'player' form_fields = ['postbeliefp2q1', 'postbeliefp2q2', 'postbeliefp2q3', 'postbeliefp2q4', 'postbeliefp2q5', 'postbeliefp2q6', 'postbeliefp2q7', 'postbeliefp2q8', 'postbeliefp2q9', 'postbeliefp2q10', 'postbeliefp2q11', 'postbeliefp2q12', 'postbeliefp2q13', 'postbeliefp2q14', 'postbeliefp2q15', 'postbeliefp2q16'] def is_displayed(self): player =self.player return player.earam > 0 @staticmethod def error_message(values): #print("values is", values) if (values["postbeliefp2q1"] > values["postbeliefp2q5"]) or (values["postbeliefp2q2"] > values["postbeliefp2q6"])\ or (values["postbeliefp2q3"] > values["postbeliefp2q7"]) or (values["postbeliefp2q4"] > values["postbeliefp2q8"]): return "Minimum lines cannot be higher than maximum lines" if (values["postbeliefp2q9"] > values["postbeliefp2q13"]) or (values["postbeliefp2q10"] > values["postbeliefp2q14"])\ or (values["postbeliefp2q11"] > values["postbeliefp2q15"]) or (values["postbeliefp2q12"] > values["postbeliefp2q16"]): return "Minimum mistakes cannot be higher than maximum mistakes" """ class InformationChartAlternate(Page): def vars_for_template(self): player = self.player earnedAmount = player.CalculateAmount() earnedAmount += 2 if earnedAmount < 0: earnedAmount = 0 filename = "yaxis" + str(player.id_in_group) + ".txt" yaxis = open(filename, "r") yaxis = yaxis.read() x = grading_app.models.Player num = x.beliefp2q1 return dict( earAm = earnedAmount, yA = yaxis, n = num ) class Trial1(Page): def vars_for_template(self): return dict( num = -10 ) """ class OtherQuestions(Page): form_model = 'player' form_fields = ['oq1', 'oq2', 'oq3', 'oq4', 'oq5', 'oq6', 'oq7', 'oq8', 'oq10', 'oq11', 'oq12', 'oq13', 'oq14', 'oq15', 'oq16', 'oq17', 'oq18', 'oq19', 'oq20', 'oq20b', 'oq21', 'oq22', 'oq24', 'oq25', 'oq26'] def vars_for_template(self): player =self.player x = player.earam return dict( y = x ) def is_displayed(self): player =self.player return player.earam > 0 def before_next_page(self): player = self.player player.payoff = round(player.earam, 3) #filename = "mistakes" + str(player.id_in_group) + ".txt" #misses = open(filename, "r") #misses = misses.read() #player.MistakesPerScreen = misses """ filename = "TimePerScreen" + str(player.id_in_group) + ".txt" tps = open(filename, "r") tps = tps.read() tps = tps.split(",") var = "0" try: for i in range(1, len(tps)): x = round(float(tps[i]) - float(tps[i - 1]), 3) var = var + "," + str(x) except: nothing = "nothing" player.ScreenTimeString = var """ class OtherQuestions2(Page): form_model = 'player' form_fields = ['oq9a','oq9b','oq9c','oq9d','oq9e','oq9f','oq9g','oq9h','oq9i','oq9j','oq9k', 'oq23a','oq23b','oq23c','oq23d','oq23e','oq23f','oq23g','oq23h','oq23i','oq23j', 'oq27', 'oq28'] def is_displayed(self): player =self.player return player.earam > 0 class Completion(Page): form_model = 'player' form_fields = ['completion_code'] def before_next_page(self): player = self.player class ResultsWaitPage(WaitPage): pass class Results(Page): pass page_sequence = [InformationTreatment, InformationChart, PostBeliefsPage1, PostBeliefsPage2, OtherQuestions, OtherQuestions2,Completion]