from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Task(Page): form_model = 'player' form_fields = ['count_v', 'test_skip', 'stop_button', 'stop_button_active'] timer_text = 'Verfügbare Zeit für Stufe 2:' def vars_for_template(self): self.player.deleteLastPicture() self.player.generateTask() if self.round_number > 1: if (self.player.is_number_p()): minusone = self.player.previous_count_v - 1 plusone = self.player.previous_count_v + 1 else: minusone = 999 plusone = 999 solvedvar = False if (self.player.previous_count_v == self.player.previous_amount_v or minusone == self.player.previous_amount_v or plusone == self.player.previous_amount_v): solvedvar = True else: solvedvar = False payoffstr_tmp = str(float(self.participant.payoff)) payoffstr_tmp = payoffstr_tmp.replace(",", ".") return dict( img = self.player.randomStringimg, amount_v = self.player.amount_v, solved = solvedvar, solvedcount = self.participant.vars["solvedcount"], payrate = self.participant.vars["payrate"], payoffstr = payoffstr_tmp, treatment = self.session.config['treatment'] ) def before_next_page(self): if (self.player.is_number()): minusone = self.player.count_v - 1 plusone = self.player.count_v + 1 else: minusone = 999 plusone = 999 if (self.player.count_v == self.player.amount_v or minusone == self.player.amount_v or plusone == self.player.amount_v): self.player.payoff += self.participant.vars["payrate"] print("Player payoff:", self.player.payoff, "\nPayrate: ", self.participant.vars["payrate"]) if (self.player.count_v == self.player.amount_v): self.player.solved_correctly = True else: self.player.solved_correctly = False if (minusone == self.player.amount_v or plusone == self.player.amount_v): self.player.solved_almost_correctly = True else: self.player.solved_almost_correctly = False def get_timeout_seconds(self): import time #Zu Testzwecken: Section kann übersprungen werden: if self.round_number > 1: for rd in self.player.in_previous_rounds(): if rd.test_skip or rd.stop_button: return 0 return self.participant.vars['expiry'] - time.time() else: #Diese Zeile muss erhalten bleiben return self.participant.vars['expiry'] - time.time() def app_after_this_page(self, upcoming_apps): if self.get_timeout_seconds() <= 0: return upcoming_apps[0] page_sequence = [Task]