from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants # from django.contrib import messages class Task(Page): form_model = 'player' form_fields = ['solution_guess'] def is_displayed(self): return self.player.has_more_attempts def vars_for_template(self): player = self.player x = player.matrix_id_in_round return_vars = { 'matrix_id': x, 'image_path': player.matrix_path, 'solution': player.matrix_solution, 'matrix_number': player.correct_guesses + 1, 'correct_guesses': player.correct_guesses, 'tasks_for_current_session': player.total_tasks, 'hard_tasks': player.required_hard_tasks, 'normal_tasks': player.total_tasks - player.required_hard_tasks, 'wrong_guesses': player.wrong_guesses, 'max_wrong_guesses_reached': player.reached_max_wrong_guesses, 'search_character': player.matrix_character, } if self.round_number > 1: return_vars['previous_correct'] = player.in_round(self.round_number - 1).guess_is_correct return return_vars def before_next_page(self): p = self.participant self.player.guess_is_correct = (self.player.solution_guess == self.player.matrix_solution) return class FinalPage(Page): def is_displayed(self): player = self.player return not player.has_more_attempts and not player.has_seen_final def vars_for_template(self): player = self.player # TODO self.is_displayed() is probably redundant if self.is_displayed() and player.correct_guesses == player.total_tasks: player.set_finished_successfully() player.increase_payoffs_on_hit() if self.is_displayed() and player.reached_max_wrong_guesses: player.set_finished_unsuccessfully() return { 'max_wrong_reached': player.reached_max_wrong_guesses, 'max_wrong': player.total_tasks, 'session2_day': 'the day after tomorrow' } class ExtraQuestion(Page): form_model = 'player' form_fields = [ 'for_how_much_do_extra_10_easy', 'for_how_much_do_extra_10_hard' ] def is_displayed(self): player = self.player return not player.has_more_attempts and not player.has_seen_final and self.session.config['period'] == 2 page_sequence = [ Task, FinalPage, ExtraQuestion, ]