from otree.api import Currency as c, currency_range from . import models from ._builtin import Page, WaitPage from .models import Constants from .functions import slider import random import time class WaitPage0(WaitPage): def after_all_players_arrive(self): pass class _Intro(Page): pass class raven_Intro(Page): def is_displayed(self): return self.round_number == 1 class raven(Page): timeout_seconds = Constants.minutes_given*60 form_model = 'player' form_fields = ['answer1_1', 'answer1_2', 'answer1_3', 'answer1_4', 'answer1_5', 'answer1_6', 'answer1_7', 'answer1_8', 'answer1_9', 'answer1_10', 'answer1_11', 'answer1_12'] def before_next_page(self): self.player.set_payoff_raven() class crt(Page): timeout_seconds = 180 form_model = 'player' form_fields = ['CRT1', 'CRT2', 'CRT3'] def before_next_page(self): self.player.set_payoff_crt() class SliderEntry(Page): def is_displayed(self): return self.subsession.round_number == 1 class SliderPrimaryContinuous(Page): form_model = 'player' form_fields = ['slider1', 'slider2', 'slider3', 'slider4', 'slider5', 'slider6', ] def vars_for_template(self): return {'slider_items': [1, 2, 3, 4, 5, 6]} def before_next_page(self): chosen_values = { 'item1': self.player.slider1, 'item2': self.player.slider2, 'item3': self.player.slider3, 'item4': self.player.slider4, 'item5': self.player.slider5, 'item6': self.player.slider6 } mean_allocations = slider.mean_allocations_continuous(chosen_values) svo_slider_angle = slider.svo_angle(mean_allocations['self'], mean_allocations['other']) self.player.slider_angle = svo_slider_angle self.player.slider_classification = slider.svo_classification(svo_slider_angle) def is_displayed(self): return self.subsession.round_number == 1 class EthicalApproval(Page): form_model = 'player' form_fields = ['belief'] def is_displayed(self): return self.subsession.round_number == 1 def vars_for_template(self): return {'angle': self.player.slider_angle, 'classification_slider': self.player.slider_classification} def before_next_page(self): self.participant.vars['slider'] = self.player.slider_classification class DebugDisplayPage(Page): def vars_for_template(self): return {'angle': self.player.slider_angle, 'classification_slider': self.player.slider_classification} def is_displayed(self): return self.subsession.round_number == 1 def before_next_page(self): self.participant.vars['slider'] = self.player.slider_classification class risk(Page): form_model = 'player' form_fields = ['questionnaire_19', 'questionnaire_20', 'questionnaire_21'] class Locus_of_control(Page): form_model = 'player' form_fields = ['questionnaire_6', 'questionnaire_7', 'questionnaire_8', 'questionnaire_9', 'questionnaire_10', 'questionnaire_11', 'questionnaire_12', 'questionnaire_13', 'questionnaire_14', 'questionnaire_15', 'questionnaire_16', 'questionnaire_17', 'questionnaire_18'] def is_displayed(self): return self.subsession.round_number == Constants.num_rounds class Questionnaire(Page): form_model = 'player' form_fields = ['questionnaire_1', 'questionnaire_2', 'questionnaire_3', 'questionnaire_32', 'questionnaire_4', 'questionnaire_5'] class WaitResult(WaitPage): def after_all_players_arrive(self): for player in self.subsession.get_players(): player.trans() class Result(Page): def vars_for_template(self): return { 'total_answer': self.participant.vars['total_answer_trans'], 'crt_payoff': self.participant.vars['crt_payoff_trans'], 'total_correct': self.participant.vars['total_correct_trans'], 'ravens_payoff': self.participant.vars['ravens_payoff_trans'], } page_sequence = [ WaitPage0, _Intro, raven_Intro, raven, crt, SliderEntry, SliderPrimaryContinuous, EthicalApproval, # DebugDisplayPage, risk, Locus_of_control, Questionnaire, WaitResult, # Result, ]