-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path__init__.py
85 lines (57 loc) · 1.73 KB
/
__init__.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
from otree.api import *
doc = """
Your app description
"""
def creating_session(subsession):
for player in subsession.get_players():
if player.role == Constants.ADVISOR_ROLE:
player.name = "Advisor " + str(player.id)
for group in subsession.get_groups():
group.advisor = group.get_player_by_role(Constants.ADVISOR_ROLE).name
class Constants(BaseConstants):
name_in_url = 'advisor'
players_per_group = 2
num_rounds = 2
ADVISOR_ROLE = "Advisor"
CLIENT_ROLE = "Client"
GOOD_OFFER = "GOOD"
MEDIUM_OFFER = "MEDIUM"
BAD_OFFER = "BAD"
class Subsession(BaseSubsession):
pass
class Group(BaseGroup):
sent_offer = models.StringField(
choices=[Constants.GOOD_OFFER, Constants.MEDIUM_OFFER, Constants.BAD_OFFER],
widget=widgets.RadioSelect,
initial=0,
label="Select an offer to make",
)
accept_offer = models.BooleanField(
choices=[[True, "Accept"], [False, "Reject"]],
widget=widgets.RadioSelect,
initial=False,
label="",
)
advisor = models.StringField()
class Player(BasePlayer):
name = models.StringField()
# PAGES
class Offer(Page):
form_model = 'group'
form_fields = ['sent_offer']
@staticmethod
def is_displayed(player: Player):
return player.role == Constants.ADVISOR_ROLE
class AcceptOffer(Page):
form_model = 'group'
form_fields = ['accept_offer']
@staticmethod
def is_displayed(player: Player):
return player.role == Constants.CLIENT_ROLE
class AcceptOfferWaitPage(WaitPage):
pass
class ResultsWaitPage(WaitPage):
pass
class Results(Page):
pass
page_sequence = [Offer, AcceptOfferWaitPage, AcceptOffer, ResultsWaitPage, Results]