153 lines
3.2 KiB
Python
153 lines
3.2 KiB
Python
|
import random
|
||
|
from otree.api import (
|
||
|
models, widgets, BaseConstants, BaseSubsession, BaseGroup, BasePlayer,
|
||
|
Currency as c, currency_range
|
||
|
)
|
||
|
|
||
|
|
||
|
doc = """
|
||
|
Author : Wael Bousselmi
|
||
|
"""
|
||
|
|
||
|
class Constants(BaseConstants):
|
||
|
name_in_url = 'v2_exp_e4c_en_p3_risk_binswanger'
|
||
|
players_per_group = None
|
||
|
num_rounds = 1
|
||
|
|
||
|
tauxdechange = 1
|
||
|
|
||
|
instructions_BW_template = 'v2_exp_e4c_en_risk_p3_binswanger/Risk_BinsWanger_qc.html'
|
||
|
|
||
|
gainriskAred = 8#4
|
||
|
gainriskBred = 6#3
|
||
|
gainriskCred = 4#2
|
||
|
gainriskDred = 2#1
|
||
|
gainriskEred = 0#0
|
||
|
|
||
|
gainriskAgreen = 8#4
|
||
|
gainriskBgreen = 12#6
|
||
|
gainriskCgreen = 16#8
|
||
|
gainriskDgreen = 20#10
|
||
|
gainriskEgreen = 24#12
|
||
|
|
||
|
tauxchange = 0.8
|
||
|
|
||
|
class Subsession(BaseSubsession):
|
||
|
|
||
|
def vars_for_admin_report(self):
|
||
|
report = list()
|
||
|
for p in self.get_players():
|
||
|
report.append(dict(id=p.participant.id_in_session, label=p.participant.label, answers=p.gainrisk))
|
||
|
return dict(report=report)
|
||
|
|
||
|
|
||
|
class Group(BaseGroup):
|
||
|
pass
|
||
|
|
||
|
|
||
|
#############################
|
||
|
def imi_inv(label):
|
||
|
return models.IntegerField(
|
||
|
choices=[
|
||
|
[0, '0'],
|
||
|
[1, '1'],
|
||
|
[2, '2'],
|
||
|
[3, '3'],
|
||
|
[4, '4'],
|
||
|
[5, '5'],
|
||
|
[6, '6'],
|
||
|
[7, '7']
|
||
|
],
|
||
|
label=label,
|
||
|
widget=widgets.RadioSelect,
|
||
|
blank=False
|
||
|
)
|
||
|
|
||
|
# Define template for Goal commitment questions
|
||
|
def goal_com(label):
|
||
|
return models.IntegerField(
|
||
|
choices=[
|
||
|
[0, '0'],
|
||
|
[1, '1'],
|
||
|
[2, '2'],
|
||
|
[3, '3'],
|
||
|
[4, '4'],
|
||
|
[5, '5'],
|
||
|
],
|
||
|
label=label,
|
||
|
widget=widgets.RadioSelect,
|
||
|
blank=False
|
||
|
)
|
||
|
#############################
|
||
|
|
||
|
|
||
|
|
||
|
class Player(BasePlayer):
|
||
|
id_in_group_nn = models.IntegerField()
|
||
|
treatment = models.IntegerField()
|
||
|
riskqc_a = models.IntegerField(
|
||
|
choices=[
|
||
|
[1, '12 ECUs'],
|
||
|
[2, '0 ECUs'],
|
||
|
[3, '4 ECUs'],
|
||
|
[4, '6 ECUs'],
|
||
|
],
|
||
|
label="",
|
||
|
widget=widgets.RadioSelectHorizontal,
|
||
|
blank=False
|
||
|
)
|
||
|
|
||
|
riskqc_b = models.IntegerField(
|
||
|
choices=[
|
||
|
[1, '20 ECUs'],
|
||
|
[2, '0 ECUs'],
|
||
|
[3, '2 ECUs'],
|
||
|
[4, '12 ECUs'],
|
||
|
],
|
||
|
label="",
|
||
|
widget=widgets.RadioSelectHorizontal,
|
||
|
blank=False
|
||
|
)
|
||
|
|
||
|
riskqc_c = models.IntegerField(
|
||
|
choices=[
|
||
|
[1, '0 ECUs'],
|
||
|
[2, '2 ECUs'],
|
||
|
[3, '24 ECUs'],
|
||
|
[4, '8 ECUs'],
|
||
|
],
|
||
|
label="",
|
||
|
widget=widgets.RadioSelectHorizontal,
|
||
|
blank=False
|
||
|
)
|
||
|
|
||
|
choicerisk = models.IntegerField(
|
||
|
blank=False,
|
||
|
)
|
||
|
|
||
|
choicerisknn = models.StringField()
|
||
|
|
||
|
tc3 = models.StringField()
|
||
|
tiragecolor = models.FloatField()
|
||
|
colorbutton = models.IntegerField()
|
||
|
|
||
|
colorselect = models.IntegerField()
|
||
|
colorselectnn = models.StringField()
|
||
|
gainrisk = models.FloatField()
|
||
|
gainriskeur = models.FloatField()
|
||
|
gainriskeurfinal = models.FloatField()
|
||
|
|
||
|
task_start_risk = models.FloatField()
|
||
|
task_time_risk = models.FloatField()
|
||
|
id_in_group_nn = models.IntegerField()
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|