from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants from otree.api import Currency as c, currency_range from ._builtin import Page from .models import Constants import datetime, json, time import random import math import numpy as np def choices(): choice00000 = (4, 2, 6) return choice00000 def percentage(): percentage00000 = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100) return percentage00000 def question(): #question_choice = 2 question_choice = random.randint(1, 11) return question_choice class intro_survey(Page): form_model = 'player' def vars_for_template(self): self.player.lottery = question() self.participant.vars['lottery'] = self.player.lottery return dict( lottery = self.participant.vars['lottery'] ) def js_vars(self): return { 'lottery': self.participant.vars['lottery'] } class intro_lottery(Page): form_model = 'player' class lottery(Page): form_model = 'player' form_fields = ['lottery1', 'lottery2', 'lottery3', 'lottery4', 'lottery5', 'lottery6', 'lottery7', 'lottery8', 'lottery9', 'lottery10', 'lottery11', ] class survey(Page): form_model = 'player' form_fields = ['age', 'sex', 'nationality', 'program_language', 'first_language', 'nonogram_before', 'others_before', 'education_level'] def before_next_page(self): if self.participant.vars['lottery'] == 1: if self.player.get_lottery1_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery1_display() == str(percentage()[0]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[10]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): self.player.lottery_payoff = 2 self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 2: if self.player.get_lottery2_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery2_display() == str(percentage()[1]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[9]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a1 = (2, 2, 2, 2, 2, 2, 2, 2, 2, 6) b1 = random.choices(a1) self.player.lottery_payoff = b1[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 3: if self.player.get_lottery3_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery3_display() == str(percentage()[2]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[8]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a2 = (2, 2, 2, 2, 2, 2, 2, 2, 6, 6) b2 = random.choices(a2) self.player.lottery_payoff = b2[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 4: if self.player.get_lottery4_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery4_display() == str(percentage()[3]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[7]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a3 = (2, 2, 2, 2, 2, 2, 2, 6, 6, 6) b3 = random.choices(a3) self.player.lottery_payoff = b3[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 5: if self.player.get_lottery5_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery5_display() == str(percentage()[4]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[6]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a4 = (2, 2, 2, 2, 2, 2, 6, 6, 6, 6) b4 = random.choices(a4) self.player.lottery_payoff = b4[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 6: if self.player.get_lottery6_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery6_display() == str(percentage()[5]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[5]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a5 = (2, 2, 2, 2, 2, 6, 6, 6, 6, 6) b5 = random.choices(a5) self.player.lottery_payoff = b5[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 7: if self.player.get_lottery7_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery7_display() == str(percentage()[6]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[4]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a6 = (2, 2, 2, 2, 6, 6, 6, 6, 6, 6) b6 = random.choices(a6) self.player.lottery_payoff = b6[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 8: if self.player.get_lottery8_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery8_display() == str(percentage()[7]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[3]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a7 = (2, 2, 2, 6, 6, 6, 6, 6, 6, 6) b7 = random.choices(a7) self.player.lottery_payoff = b7[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 9: if self.player.get_lottery9_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery9_display() == str(percentage()[8]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[2]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a8 = (2, 2, 6, 6, 6, 6, 6, 6, 6, 6) b8 = random.choices(a8) self.player.lottery_payoff = b8[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 10: if self.player.get_lottery10_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery10_display() == str(percentage()[9]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[1]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): a9 = (2, 6, 6, 6, 6, 6, 6, 6, 6, 6) b9 = random.choices(a9) self.player.lottery_payoff = b9[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.participant.vars['lottery'] == 11: if self.player.get_lottery11_display() == '\N{euro sign}' + str(choices()[0]) + ' for sure': self.player.lottery_payoff = choices()[0] self.participant.vars['lottery_payoff'] = self.player.lottery_payoff if self.player.get_lottery11_display() == str(percentage()[10]) + '% probability of receiving \N{euro sign}' + str(choices()[2]) + ' and ' + str(percentage()[0]) + '% probability of receiving \N{euro sign}' + str(choices()[1]): self.player.lottery_payoff = 6 self.participant.vars['lottery_payoff'] = self.player.lottery_payoff class lottery_chosen(Page): form_model = 'player' form_fields = ['lottery_payoff'] def js_vars(self): return { 'lottery': self.participant.vars['lottery'], 'lottery_payoff': self.participant.vars['lottery_payoff'], } def vars_for_template(self): return dict( lottery = self.participant.vars['lottery'], lottery_payoff = self.participant.vars['lottery_payoff'], choose1=self.player.get_lottery1_display(), choose2=self.player.get_lottery2_display(), choose3=self.player.get_lottery3_display(), choose4=self.player.get_lottery4_display(), choose5=self.player.get_lottery5_display(), choose6=self.player.get_lottery6_display(), choose7=self.player.get_lottery7_display(), choose8=self.player.get_lottery8_display(), choose9=self.player.get_lottery9_display(), choose10=self.player.get_lottery10_display(), choose11=self.player.get_lottery11_display(), ) page_sequence = [ intro_survey, intro_lottery, lottery, survey, lottery_chosen, ]