from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants, WaitingPeriod, GainedAmount from random import randint import random class Questionnaire(Page): form_model = 'player' form_fields = [ 'waiting_period', 'sooner_period', 'treatment_method', 'switch_point', ] def generate_questionnaire_parameters(self): shuffled_waiting_period = WaitingPeriod.list random.shuffle(shuffled_waiting_period) # 打亂順序 return shuffled_waiting_period def setup_questionaire_parameters_pairs(self): # 如果還不存在,就現在產生「週數和金額的組合」並存起來 # 如果已經存在,就取出 if Constants.key_params not in self.participant.vars: shuffled_waiting_period = self.generate_questionnaire_parameters() self.participant.vars[Constants.key_params] = shuffled_waiting_period params = self.participant.vars[Constants.key_params] # 設定每一 round 的參數,並寫入 db idx = self.round_number - 1 # list 從0開始 但 round_bnumber 從1開始 self.player.waiting_period = int(params[idx] / 10) sooner_period = int(params[idx] % 10) if sooner_period == 0: self.player.sooner_period = '今天' elif sooner_period == 4: self.player.sooner_period = '4星期後' def is_displayed(self): # 一定會跑的 # 設定每一 round 的參數(如週數和金額) self.setup_questionaire_parameters_pairs() return True page_sequence = [Questionnaire]