from otree.api import * import numpy as np c = Currency doc = """ Your app description """ class Constants(BaseConstants): name_in_url = "test_survey" players_per_group = None num_rounds = 1 imgur_dict = dict( demo_risk="https://i.imgur.com/jsfWD38.png", risk1="https://i.imgur.com/Fb6A3hQ.png", risk2="https://i.imgur.com/nwtmyST.png", risk3="https://i.imgur.com/IrSX0Bm.png", risk4="https://i.imgur.com/yzSXsMy.png", risk5="https://i.imgur.com/ngo9Cyd.png", risk6="https://i.imgur.com/mSDszxv.png", risk7="https://i.imgur.com/OOMhsQp.png", risk8="https://i.imgur.com/rqEpGDt.png", risk9="https://i.imgur.com/LIRWa7L.png", risk10="https://i.imgur.com/gfnD8ZE.png", risk11="https://i.imgur.com/yNgf4l9.png", risk12="https://i.imgur.com/b0WarGP.png", risk13="https://i.imgur.com/QtJeTXX.png", risk14="https://i.imgur.com/lVwsEcY.png", risk15="https://i.imgur.com/heIfJZ7.png", risk16="https://i.imgur.com/nJNsCko.png", risk17="https://i.imgur.com/UcHa5BJ.png", risk18="https://i.imgur.com/oO8NaVx.png", risk19="https://i.imgur.com/ZzYiMXu.png", risk20="https://i.imgur.com/smMGHos.png", risk21="https://i.imgur.com/UHW1oZa.png", risk22="https://i.imgur.com/SkyUWWL.png", risk23="https://i.imgur.com/iuJalE4.png", risk24="https://i.imgur.com/8ORxHaJ.png", risk25="https://i.imgur.com/LQdfiNw.png", risk26="https://i.imgur.com/DHjHRuc.png", risk27="https://i.imgur.com/9wNarxA.png", risk28="https://i.imgur.com/BbgJTLY.png", risk29="https://i.imgur.com/f7sUhlL.png", risk30="https://i.imgur.com/Jl0iiEO.png", risk31="https://i.imgur.com/yxvskaM.png", risk32="https://i.imgur.com/SRtjv6y.png", risk33="https://i.imgur.com/1pVDKd9.png", risk34="https://i.imgur.com/lwVJf1m.png", risk35="https://i.imgur.com/L22am4Z.png", risk36="https://i.imgur.com/Juy99AE.png", risk37="https://i.imgur.com/nPPoOmD.png", risk38="https://i.imgur.com/W8LrhI0.png", risk39="https://i.imgur.com/tCq75oS.png", risk40="https://i.imgur.com/0328DFC.png", risk41="https://i.imgur.com/3esawas.png", risk42="https://i.imgur.com/XuLOGIr.png", risk43="https://i.imgur.com/ng8NQ0N.png", risk44="https://i.imgur.com/ZAS7ycQ.png", risk45="https://i.imgur.com/m2LFZ9V.png", risk46="https://i.imgur.com/icgJJUz.png", risk47="https://i.imgur.com/rFutC7i.png", risk48="https://i.imgur.com/IqBhUWu.png", risk49="https://i.imgur.com/TcasD27.png", risk50="https://i.imgur.com/KUdj1KP.png", risk51="https://i.imgur.com/igEqHcy.png", risk52="https://i.imgur.com/LevwH7y.png", risk53="https://i.imgur.com/bFVXoTh.png", risk54="https://i.imgur.com/5XiB1Hv.png", risk55="https://i.imgur.com/Zxgw3tX.png", risk56="https://i.imgur.com/YaR36qP.png", risk57="https://i.imgur.com/Pw0g6BG.png", risk58="https://i.imgur.com/sHj6Kie.png", risk59="https://i.imgur.com/Dc46OEm.png", risk60="https://i.imgur.com/Dj7XJfD.png", ) class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): treatment = models.StringField() payoff_a1 = models.CurrencyField() payoff_b1 = models.CurrencyField() payoff_a2 = models.CurrencyField() payoff_b2 = models.CurrencyField() payoff2 = models.CurrencyField() payoff_final = models.CurrencyField() payoff_final_usd = models.CurrencyField() def set_payoff(self, pay): self.payoff = pay def set_payoff2(self, pay): self.payoff2 = pay def set_payoff_final(self): payoff_final = self.payoff + self.payoff2 self.payoff_final = payoff_final self.payoff_final_usd = cu(payoff_final).to_real_world_currency(self.session) # feedback1_words = models.TextField( # label="""Был ли Вам понятен интерфейс и инструкции в заданиях со словами? Что бы Вы предложили улучшить или изменить?""" # ) # feedback2_ball = models.TextField( # label="""Был ли Вам понятен интерфейс и инструкции в заданиях с шариком? Что бы Вы предложили улучшить или изменить?""" # ) # feedback3_gen = models.TextField( # label="""Опишите в общих чертах Вашу стратегию в заданиях с шариком: как Вы выбирали сектор, # изменяли ли свою стратегию в зависимости от результатов и т.д.""" # ) # feedback4_succ = models.TextField( # label="""Как менялась Ваша стратегия в заданиях с шариком после успехов?""" # ) # feedback5_fail = models.TextField( # label="""Как менялась Ваша стратегия в заданиях с шариком после неудач?""" # ) # feedback6_money = models.TextField( # label="""Если бы Вам платили за каждое правильное решение с шариками по 1000 рублей, Вы бы изменили свою стратегию? # Если да, то каким образом?""" # ) gender = models.BooleanField( initial=None, choices=[[0, "Мужской"], [1, "Женский"]], label="Ваш пол", widget=widgets.RadioSelect(), ) age = models.PositiveIntegerField( label="Ваш возраст (полных лет)", min=13, max=95, initial=None ) height = models.PositiveIntegerField( label="Ваш рост (в сантиметрах)", min=100, max=240, initial=None ) marriage = models.PositiveIntegerField( label="Ваше семейное положение", choices=[ [1, "Один/Одна"], [2, "В отношениях"], [3, "Женат/Замужем"], [4, "Другое"], ], widget=widgets.RadioSelectHorizontal(), ) education = models.PositiveIntegerField( label="Ваше образование", choices=[ [1, "Среднее неполное"], [2, "Среднее полное"], [3, "Высшее"], [4, "Магистратура"], [5, "Аспирантура"], ], widget=widgets.RadioSelectHorizontal(), ) occupation = models.PositiveIntegerField( label="Ваша занятость (если работающий студент, то выбирайте студент)", choices=[ [1, "Школьник"], [2, "Студент"], [3, "Частичная занятость"], [4, "Полная занятость"], [5, "Без работы"], [6, "На пенсии"], ], widget=widgets.RadioSelectHorizontal(), ) house = models.PositiveIntegerField( label="Ваш тип жилья", choices=[[1, "Аренда"], [2, "Собственное"], [3, "Общежитие"], [4, "Другое"]], widget=widgets.RadioSelectHorizontal(), ) riskat_financial = models.PositiveIntegerField( label="""Вы любите риск или боитесь риска (в финансовой сфере)?""", choices=[ [1, "Очень люблю рисковать"], [2, "Скорее люблю рисковать"], [3, "Нейтрален к риску"], [4, "Скорее боюсь рисковать"], [5, "Очень боюсь рисковать"], ], widget=widgets.RadioSelect(), ) riskat_professional = models.PositiveIntegerField( label="""Вы любите риск или боитесь риска (в своей профессиональной жизни)?""", choices=[ [1, "Очень люблю рисковать"], [2, "Скорее люблю рисковать"], [3, "Нейтрален к риску"], [4, "Скорее боюсь рисковать"], [5, "Очень боюсь рисковать"], ], widget=widgets.RadioSelect(), ) riskat_health = models.PositiveIntegerField( label="""Вы любите риск или боитесь риска (по отношению к своему здоровью)?""", choices=[ [1, "Очень люблю рисковать"], [2, "Скорее люблю рисковать"], [3, "Нейтрален к риску"], [4, "Скорее боюсь рисковать"], [5, "Очень боюсь рисковать"], ], widget=widgets.RadioSelect(), ) riskat_other_people = models.PositiveIntegerField( label="""Вы любите риск или боитесь риска (по отношению к другим людям)?""", choices=[ [1, "Очень люблю рисковать"], [2, "Скорее люблю рисковать"], [3, "Нейтрален к риску"], [4, "Скорее боюсь рисковать"], [5, "Очень боюсь рисковать"], ], widget=widgets.RadioSelect(), ) trust = models.PositiveIntegerField( label="""Как Вы считаете, в целом большинству людей можно доверять, или же при общении с другими людьми осторожность никогда не повредит? Пожалуйста, отметьте позицию на шкале, где 1 означает "Нужно быть очень осторожным с другими людьми" и 10 означает "Большинству людей можно вполне доверять" """, choices=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], widget=widgets.RadioSelectHorizontal(), ) happiness = models.PositiveIntegerField( label="""Учитывая все обстоятельства, насколько Вы счастливы сегодня? (от 1 «полностью несчастен» до 10 «полностью счастливый)""", choices=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], widget=widgets.RadioSelectHorizontal(), ) freedom = models.PositiveIntegerField( label="""Некоторые люди чувствуют, что они обладают полной свободой выбора и контролируют свою жизнь, в то время как другие люди чувствуют, что то, что они делают, не имеет реального влияния на происходящее с ними. До какой степени эти характеристики применимы к Вам и Вашей жизни? Пожалуйста, отметьте позицию на шкале, где 1 означает "у меня нет свободы выбора" и 10 означает "у меня полная свобода выбора". """, choices=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], widget=widgets.RadioSelectHorizontal(), ) gambling = models.PositiveIntegerField( label="Как часто Вы играете в лотереи/азартные игры? (от 1 «никогда» до 10 «каждый день»)", choices=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], widget=widgets.RadioSelectHorizontal(), ) market = models.PositiveIntegerField( label="Как часто Вы играете на фондовом рынке? (от 1 «никогда» до 10 «каждый день»)", choices=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], widget=widgets.RadioSelectHorizontal(), ) kelly_task = models.PositiveIntegerField( label="Представьте, что Вы выиграли 1 млн. рублей в лотерею. Ваш друг предлагает Вам вложить деньги в проект, который с вероятностью 50% удвоит вложенные средства и с вероятностью 50% не принесет ничего (ваши деньги сгорят). Какой процент от 1 млн. Вы вложите в проект (от 0 до 100)?", min=0, max=100, ) lucky = models.PositiveIntegerField( label="Насколько везучим Вы себя считаете? (от 1 «абсолютно невезучий» до 10 «везет всегда»)", choices=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10], widget=widgets.RadioSelectHorizontal, ) emotions = models.PositiveIntegerField( label="Укажите какую эмоцию Вы испытали по итогам реализации лотереи, выбрав отметку на шкале:" ) TIRED = models.PositiveIntegerField( label="Как Вы бы охарактеризовали свое состояние по окончании этой части эксперимента?", choices=[ [1, "Сильная усталость"], [2, "Слабая усталость"], [3, "Нейтральное состояние"], [4, "Небольшая бодрость"], [5, "Сильная бодрость"], ], widget=widgets.RadioSelectHorizontal, ) # field = models.PositiveIntegerField( # label="Ваша специализация (выберите наиболее подходящую)", # choices=[ # [1, "Экономика, финансы, менеджмент"], # [2, "Социальные науки, психология, политология"], # [3, "Право"], # [4, "Международные отношения"], # [5, "Математика, компьютерные, точные науки"], # [6, "Гуманитарные науки"], # [7, "Медиа, журналистика, дизайн"], # [8, "Другое"], # ], # widget=widgets.RadioSelect(), # ) # city = models.PositiveIntegerField( # label=""" Сколько человек (приблизительно) проживало в том населенном пункте, где Вы жили в возрасте 16 лет.""", # min=1, # max=30000000, # initial=None, # ) # yearsinmsc = models.PositiveIntegerField( # label=""" # Укажите, сколько лет Вы живете в Вашем городе. Впишите число, округленное до ближайшего целого числа лет.""", # min=0, # max=95, # initial=None, # ) # riskat = models.PositiveIntegerField( # label="""Вы любите риск или боитесь риска?""", # choices=[ # [1, "Очень люблю рисковать"], # [2, "Скорее люблю рисковать"], # [3, "Нейтрален к риску"], # [4, "Скорее боюсь рисковать"], # [5, "Очень боюсь рисковать"], # ], # widget=widgets.RadioSelect(), # ) # riskHL1 = models.BooleanField( # label="""Выберите одну из двух лотерей: # A: [1200 рублей, 0.10; 40 рублей, 0.90] или Б: [650 рублей, 0.10; 500 рублей, 0.90]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL2 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.20; 40 рублей, 0.80] или Б: [650 рублей, 0.20; 500 рублей, 0.80]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL3 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.30; 40 рублей, 0.70] или Б: [650 рублей, 0.30; 500 рублей, 0.70]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL4 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.40; 40 рублей, 0.60] или Б: [650 рублей, 0.40; 500 рублей, 0.60]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL5 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.50; 40 рублей, 0.50] или Б: [650 рублей, 0.50; 500 рублей, 0.50]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL6 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.60; 40 рублей, 0.40] или Б: [650 рублей, 0.60; 500 рублей, 0.40]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL7 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.70; 40 рублей, 0.30] или Б: [650 рублей, 0.70; 500 рублей, 0.30]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL8 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.80; 40 рублей, 0.20] или Б: [650 рублей, 0.80; 500 рублей, 0.20]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL9 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 0.90; 40 рублей, 0.10] или Б: [650 рублей, 0.90; 500 рублей, 0.10]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # riskHL10 = models.BooleanField( # label="""Выберите одну из двух лотерей # A: [1200 рублей, 1.00; 40 рублей, 0.00] или Б: [650 рублей, 1.00; 500 рублей, 0.00]""", # choices=[[0, "А"], [1, "Б"]], # widget=widgets.RadioSelectHorizontal(), # ) # income = models.PositiveIntegerField( # label="""Какое высказывание наиболее точно описывает финансовое положение вашей семьи?""", # choices=[ # [1, "Едва сводим концы с концами, денег не хватает на выживание;"], # [ # 2, # "Живем от зарплаты до зарплаты, денег хватает только на неотложные нужды;", # ], # [ # 3, # "На ежедневные расходы хватает денег, но уже покупка одежды требует накоплений;", # ], # [ # 4, # "Вполне хватает денег, даже имеются некоторые накопления, но крупные покупки требуется планировать заранее;", # ], # [5, "Можем позволить себе крупные траты при первой необходимости."], # ], # widget=widgets.RadioSelect(), # ) demo_risk1 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) demo_risk2 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) demo_exp = models.PositiveIntegerField( label="Укажите исход, тот исход, на который Вы рассчитываете, если эта лотерея будет реально разыграна. Обратите внимание, какие исходы и вероятности у выбранной Вами лотереи.", min=0, max=2000, initial=None, ) risk1 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk2 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk3 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk4 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk5 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk6 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk7 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk8 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk9 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk10 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk11 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk12 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk13 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk14 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk15 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk16 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk17 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk18 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk19 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk20 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk21 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk22 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk23 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk24 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk25 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk26 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk27 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk28 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk29 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk30 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk31 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk32 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk33 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk34 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk35 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk36 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk37 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk38 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk39 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk40 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk41 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk42 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk43 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk44 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk45 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk46 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk47 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk48 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk49 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk50 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk51 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk52 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk53 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk54 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk55 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk56 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk57 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk58 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk59 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk60 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) exp1 = models.PositiveIntegerField( label="Укажите исход, тот исход, на который Вы рассчитываете, если эта лотерея будет реально разыграна. Обратите внимание, какие исходы и вероятности у выбранной Вами лотереи.", min=0, max=2000, initial=None, ) risk223 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk224 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk225 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk226 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk227 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk228 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk229 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk230 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk231 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk232 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk233 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk234 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk235 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk236 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk237 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk238 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk239 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk240 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk241 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk242 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk_show = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) risk_show2 = models.BooleanField( label="""Выберите одну из двух лотерей А или Б""", choices=[[0, "А"], [1, "Б"]], widget=widgets.RadioSelectHorizontal(), ) exp2 = models.PositiveIntegerField( label="Укажите исход, тот исход, на который Вы рассчитываете, если эта лотерея будет реально разыграна. Обратите внимание, какие исходы и вероятности возможны у выбранной Вами лотереи.", min=0, max=2000, initial=None, ) exp3 = models.PositiveIntegerField( label="Укажите исход, тот исход, на который Вы рассчитываете, если эта лотерея будет реально разыграна. Обратите внимание, какие исходы и вероятности возможны у выбранной Вами лотереи.", min=0, max=2000, initial=None, ) def creating_session(subsession): # randomize to treatments for player in subsession.get_players(): player.treatment = np.random.choice(["treatment", "control"]) player.payoff_a1 = np.random.choice(2) * 2000 player.payoff_b1 = np.random.choice(2, p=[0.4, 0.6]) * 1000 player.payoff_a2 = np.random.choice(2) * 2000 player.payoff_b2 = np.random.choice(2, p=[0.3, 0.7]) * 1000 print("set player.treatment to", player.treatment) # PAGES class Instruction(Page): form_model = "player" form_fields = ["demo_risk1", "demo_exp", "demo_risk2", "demo_exp"] @staticmethod def vars_for_template(player): return Constants.imgur_dict class MyPage(Page): form_model = "player" form_fields = [ "risk1", "exp1", "risk3", "exp1", "risk5", "exp1", "risk7", "exp1", "risk9", "exp1", "risk11", "exp1", "risk13", "exp1", "risk15", "exp1", "risk17", "exp1", "risk19", "exp1", "risk21", "exp1", "risk23", "exp1", "risk24", "exp1", "risk25", "exp1", "risk27", "exp1", "risk28", "exp1", "risk29", "exp1", "risk30", "exp1", "risk31", "exp1", "risk32", "exp1", "risk33", "exp1", "risk34", "exp1", "risk35", "exp1", "risk36", "exp1", "risk37", "exp1", "risk38", "exp1", "risk39", "exp1", "risk40", "exp1", "risk41", "exp1", "risk42", "exp1", "risk43", "exp1", "risk45", "exp1", "risk47", "exp1", "risk49", "exp1", "risk51", "exp1", "risk53", "exp1", "risk55", "exp1", "risk57", "exp1", "risk59", "exp1", "risk26", "exp2", ] @staticmethod def vars_for_template(player): return Constants.imgur_dict def before_next_page(player, timeout_happened): if player.risk26 == 0: payoff = player.payoff_a1 elif player.risk26 == 1: payoff = player.payoff_b1 player.set_payoff(payoff) # class MyPage2(Page): # form_model = "player" # form_fields = ["risk_show", "exp2"] # @staticmethod # def vars_for_template(player): # return Constants.imgur_dict # def before_next_page(player, timeout_happened): # if player.risk_show == 0: # payoff = np.random.choice(2) * 2000 # elif player.risk_show == 1: # payoff = np.random.choice(2, p=[0.4, 0.6]) * 1000 # player.set_payoff(payoff) class MyPage3(Page): @staticmethod def is_displayed(player): return player.treatment == "treatment" @staticmethod def vars_for_template(player): if player.payoff < player.exp2: return dict(payoff="меньше") elif player.payoff > player.exp2: return dict(payoff="больше") elif player.payoff == player.exp2: return dict(payoff="таким же") class Emotions(Page): form_model = "player" form_fields = ["TIRED", "emotions"] @staticmethod def is_displayed(player): return player.treatment == "treatment" class Anketa(Page): form_model = "player" form_fields = [ "gender", "age", "height", "marriage", "education", "occupation", "house", "riskat_financial", "riskat_professional", "riskat_health", "riskat_other_people", "trust", "happiness", "freedom", "gambling", "market", "kelly_task", "lucky", ] class MyPage4(Page): form_model = "player" form_fields = [ "risk2", "exp1", "risk4", "exp1", "risk6", "exp1", "risk8", "exp1", "risk10", "exp1", "risk12", "exp1", "risk14", "exp1", "risk16", "exp1", "risk18", "exp1", "risk20", "exp1", "risk22", "exp1", "risk223", "exp1", "risk224", "exp1", "risk225", "exp1", "risk226", "exp1", "risk227", "exp1", "risk228", "exp1", "risk229", "exp1", "risk230", "exp1", "risk232", "exp1", "risk233", "exp1", "risk234", "exp1", "risk235", "exp1", "risk236", "exp1", "risk237", "exp1", "risk238", "exp1", "risk239", "exp1", "risk240", "exp1", "risk241", "exp1", "risk242", "exp1", "risk44", "exp1", "risk46", "exp1", "risk48", "exp1", "risk50", "exp1", "risk52", "exp1", "risk54", "exp1", "risk56", "exp1", "risk58", "exp1", "risk60", "exp1", "risk231", "exp3", ] @staticmethod def vars_for_template(player): return Constants.imgur_dict def before_next_page(player, timeout_happened): if player.risk231 == 0: payoff2 = player.payoff_a2 elif player.risk231 == 1: payoff2 = player.payoff_b2 player.set_payoff2(payoff2) player.set_payoff_final() # class MyPage5(Page): # form_model = "player" # form_fields = ["risk_show2", "exp3"] # @staticmethod # def vars_for_template(player): # return Constants.imgur_dict # def before_next_page(player, timeout_happened): # if player.risk_show2 == 0: # payoff2 = np.random.choice(2) * 2000 # elif player.risk_show2 == 1: # payoff2 = np.random.choice(2, p=[0.3, 0.7]) * 1000 # player.set_payoff2(payoff2) # player.set_payoff_final() class MyPage6(Page): @staticmethod def vars_for_template(player): return dict( payoff=player.payoff, payoff2=player.payoff2, payoff_final=player.payoff_final, payoff_final_usd=str(player.payoff_final_usd)[0], ) class ResultsWaitPage(WaitPage): pass class Results(Page): pass class PlayerBot(Bot): def play_round(self): yield (pages.MyPage) yield (pages.Results) page_sequence = [ Instruction, MyPage, # MyPage2, MyPage3, Emotions, MyPage4, # MyPage5, MyPage6, Anketa, ]