-
Notifications
You must be signed in to change notification settings - Fork 1
/
pages.py
113 lines (80 loc) · 4.78 KB
/
pages.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from otree.api import Currency as c, currency_range
from ._builtin import Page, WaitPage
from .models import Constants
class Introduction(Page):
pass
class Example1(Page):
pass
class Example2(Page):
pass
class Example3(Page):
pass
class Example4(Page):
pass
class Decision1(Page):
form_model = 'player'
form_fields = ['first_choice_1', 'second_choice_1']
def error_message(self, values):
print('values is', values)
if (values['first_choice_1']+1 != values['second_choice_1']) \
and (values['first_choice_1'] != 0) \
and (values['second_choice_1'] != 0):
return 'Los valores deben ser consecutivos. Por ej. Si se escogio la loteria A hasta la decision 2, ' \
'se debería elegir la lotería B desde la decisión 3'
if (values['first_choice_1'] == 0) and (values['second_choice_1'] != 1) and (values['second_choice_1'] != 0):
return 'Si va a escoger solo la segunda lotería en cada decisión, escoja la opción "Ninguna" en la primera' \
' casilla y "1" en la segunda'
if (values['first_choice_1'] != 14) and (values['first_choice_1'] != 0) and (values['second_choice_1'] == 0):
return 'Si va a escoger solo la primera lotería en cada decisión, escoja la opción "Ninguna" en la segunda' \
' casilla y "14" en la primera'
elif (values['first_choice_1'] == 0) \
and (values['second_choice_1'] == 0):
return 'Si va a escoger solo una de las loterias en cada decisión, escoja la opción "Ninguna" en la casilla ' \
'correspondiente, no en los dos'
class Decision2(Page):
form_model = 'player'
form_fields = ['first_choice_2', 'second_choice_2']
def error_message(self, values):
print('values is', values)
if (values['first_choice_2']+1 != values['second_choice_2']) \
and (values['first_choice_2'] != 0) \
and (values['second_choice_2'] != 0):
return 'Los valores deben ser consecutivos. Por ej. Si se escogio la loteria A hasta la decision 2, ' \
'se debería elegir la lotería B desde la decisión 3'
if (values['first_choice_2'] == 0) and (values['second_choice_2'] != 15) and (values['second_choice_2'] != 0):
return 'Si va a escoger solo la segunda lotería en cada decisión, escoja la opción "Ninguna" en la primera' \
' casilla y "15" en la segunda'
if (values['first_choice_2'] != 28) and (values['first_choice_2'] != 0) and (values['second_choice_2'] == 0):
return 'Si va a escoger solo la primera lotería en cada decisión, escoja la opción "Ninguna" en la segunda' \
' casilla y "28" en la primera'
elif (values['first_choice_2'] == 0) \
and (values['second_choice_2'] == 0):
return 'Si va a escoger solo una de las loterias en cada decisión, escoja la opción "Ninguna" en la casilla ' \
'correspondiente, no en los dos'
class Decision3(Page):
form_model = 'player'
form_fields = ['first_choice_3', 'second_choice_3']
def error_message(self, values):
print('values is', values)
if (values['first_choice_3']+1 != values['second_choice_3']) \
and (values['first_choice_3'] != 0) \
and (values['second_choice_3'] != 0):
return 'Los valores deben ser consecutivos. Por ej. Si se escogio la loteria A hasta la decision 2, ' \
'se debería elegir la lotería B desde la decisión 3'
if (values['first_choice_3'] == 0) and (values['second_choice_3'] != 29) and (values['second_choice_3'] != 0):
return 'Si va a escoger solo la segunda lotería en cada decisión, escoja la opción "Ninguna" en la primera' \
' casilla y "15" en la segunda'
if (values['first_choice_3'] != 35) and (values['first_choice_3'] != 0) and (values['second_choice_3'] == 0):
return 'Si va a escoger solo la primera lotería en cada decisión, escoja la opción "Ninguna" en la segunda' \
' casilla y "35" en la primera'
elif (values['first_choice_3'] == 0) \
and (values['second_choice_3'] == 0):
return 'Si va a escoger solo una de las loterias en cada decisión, escoja la opción "Ninguna" en la casilla ' \
'correspondiente, no en los dos'
def before_next_page(self):
self.player.set_payoffs()
class Results(Page):
def vars_for_template(self):
final_payoff = self.participant.payoff_plus_participation_fee()
return dict(f_p=final_payoff)
page_sequence = [Introduction, Example1, Example2, Example3, Example4, Decision1, Decision2, Decision3, Results]