from otree.api import * c = cu doc = '' class Constants(BaseConstants): name_in_url = 'my_survey2' players_per_group = 4 num_rounds = 1 endowment = 200 multipler = 2 class Subsession(BaseSubsession): pass def set_payoff(group): players = group.get_players() contributions = [p.contribution for p in players] if not contributions: contributions == 0 else: contributions = contributions group.total_contribution = sum(contributions) group.individual_share = group.total_contribution * Constants.multipler / Constants.players_per_group for p in players: p.payoff = Constants.endowment - p.contribution + group.individual_share class Group(BaseGroup): total_contribution = models.CurrencyField() individual_share = models.CurrencyField() contribution1 = models.CurrencyField() set_payoff = set_payoff class Player(BasePlayer): identitydocument = models.StringField(label='参加者番号') age = models.IntegerField(label='年齢') contribution = models.CurrencyField(label='公共財にいれる金額は?', max=Constants.endowment, min=0) angry1 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='苛立った', max=5, min=0, widget=widgets.RadioSelect) episodeofangry = models.LongStringField(label='記述内容') angry2 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='怒った', widget=widgets.RadioSelect) angry3 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='むしゃくしゃした', widget=widgets.RadioSelect) angry4 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='不愉快な', widget=widgets.RadioSelect) angry5 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='腹立たしい', widget=widgets.RadioSelect) angry6 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='気が立った', widget=widgets.RadioSelect) filler1 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='うれしい', widget=widgets.RadioSelect) filler2 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='満足した', widget=widgets.RadioSelect) filler3 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='幸運な', widget=widgets.RadioSelect) filler4 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='不満のない', widget=widgets.RadioSelect) filler5 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='喜ばしい', widget=widgets.RadioSelect) filler6 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='楽しい', widget=widgets.RadioSelect) filler7 = models.IntegerField(choices=[[0, '全く感じなかった'], [1, '感じなかった'], [2, 'どちらと言ったら感じなかった'], [3, 'どちらと言ったら感じた'], [4, '感じた'], [5, '非常に感じた']], label='心地よい', widget=widgets.RadioSelect) reason = models.LongStringField(label='理由') sex = models.IntegerField(choices=[[0, '男性'], [1, '女性']], label='性別', widget=widgets.RadioSelect) class Writing(Page): form_model = 'player' form_fields = ['episodeofangry'] timeout_seconds = 180 class Angrycheck(Page): form_model = 'player' form_fields = ['filler1', 'angry1', 'filler2', 'angry2', 'filler3', 'angry3', 'filler4', 'angry4', 'filler5', 'angry5', 'filler6', 'angry6', 'filler7'] class Survey(Page): form_model = 'player' form_fields = ['age', 'identitydocument', 'sex'] class Result(Page): form_model = 'player' class Contribution(Page): form_model = 'player' class MyPage(Page): form_model = 'player' form_fields = ['contribution'] timeout_seconds = 10 class Waiting(WaitPage): after_all_players_arrive = set_payoff body_text = '他の参加者を少々お待ちください。' class Results(Page): form_model = 'player' class MyPage2(Page): form_model = 'player' form_fields = ['reason'] page_sequence = [Writing, Angrycheck, Survey, Result, Contribution, MyPage, Waiting, Results, MyPage2]