from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants import pandas as pd norms_table = pd.read_excel('survey/norms_table.xlsx') norms_table['id'] = norms_table['id'].apply(str) class Introduction_00(Page): form_model = 'player' form_fields = ['Introduction00_time'] class Introduction_01(Page): form_model = 'player' form_fields = ['Introduction01_time'] class Introduction_02(Page): form_model = 'player' form_fields = ['Introduction02_time'] class KrupkaElicitation(Page): form_model = 'player' def get_form_fields(self): if self.player.choice_order == "take first": return ['krupka1_take', 'krupka1_statusquo', 'krupka1_give', 'KrupkaElicitation1_time'] else: return ['krupka1_give', 'krupka1_statusquo', 'krupka1_take', 'KrupkaElicitation1_time'] class EmpiricalElicitation(Page): form_model = 'player' form_fields = ['empirical1_take', 'empirical1_statusquo', 'empirical1_give', 'empiricalelicitation1_sum', 'empiricalelicitation1_incorrect', 'EmpiricalElicitation1_time'] class Decision_a(Page): form_model = 'player' form_fields = ['charity_decision_take','Decision_time'] def is_displayed(self): return self.player.treatment_group == "baseline" and self.player.choice_order == "take first" class Decision_b(Page): form_model = 'player' form_fields = ['charity_decision_give','Decision_time'] def is_displayed(self): return self.player.treatment_group == "baseline" and self.player.choice_order == "give first" class GroupChoices_full_take(Page): form_model = 'player' form_fields = ['charity_decision_full_take', 'group_give_count', 'group_statusquo_count', 'group_take_count', 'GroupChoices_time'] def vars_for_template(self): norms_table_subset = norms_table[norms_table.id.isin(self.player.norm_group.split(" "))] give_count = len(norms_table_subset[norms_table_subset['choice'] == 'Give']) statusquo_count = len(norms_table_subset[norms_table_subset['choice'] == 'Status Quo']) take_count = len(norms_table_subset[norms_table_subset['choice'] == 'Take']) return dict( give_count = give_count, statusquo_count = statusquo_count, take_count = take_count ) def is_displayed(self): return self.player.treatment_group == "full signal" and self.player.choice_order == "take first" class GroupChoices_full_give(Page): form_model = 'player' form_fields = ['charity_decision_full_give', 'group_give_count', 'group_statusquo_count', 'group_take_count', 'GroupChoices_time'] def vars_for_template(self): norms_table_subset = norms_table[norms_table.id.isin(self.player.norm_group.split(" "))] give_count = len(norms_table_subset[norms_table_subset['choice'] == 'Give']) statusquo_count = len(norms_table_subset[norms_table_subset['choice'] == 'Status Quo']) take_count = len(norms_table_subset[norms_table_subset['choice'] == 'Take']) return dict( give_count = give_count, statusquo_count = statusquo_count, take_count = take_count ) def is_displayed(self): return self.player.treatment_group == "full signal" and self.player.choice_order == "give first" class GroupChoices_diluted_take(Page): form_model = 'player' form_fields = ['charity_decision_diluted_take', 'group_give_count', 'group_statusquo_count', 'group_take_count', 'GroupChoices_time'] def vars_for_template(self): if self.player.diluted_selection == "add take": norms_table_subset = norms_table[norms_table.id.isin(self.player.norm_group.split(" "))] give_count = len(norms_table_subset[norms_table_subset['choice'] == 'Give']) statusquo_count = len(norms_table_subset[norms_table_subset['choice'] == 'Status Quo']) take_count = len(norms_table_subset[norms_table_subset['choice'] == 'Take']) + 3 elif self.player.diluted_selection == "add give": norms_table_subset = norms_table[norms_table.id.isin(self.player.norm_group.split(" "))] give_count = len(norms_table_subset[norms_table_subset['choice'] == 'Give']) + 3 statusquo_count = len(norms_table_subset[norms_table_subset['choice'] == 'Status Quo']) take_count = len(norms_table_subset[norms_table_subset['choice'] == 'Take']) return dict( give_count = give_count, statusquo_count = statusquo_count, take_count = take_count ) def is_displayed(self): return self.player.treatment_group == "diluted signal" and self.player.choice_order == "take first" class GroupChoices_diluted_give(Page): form_model = 'player' form_fields = ['charity_decision_diluted_give', 'group_give_count', 'group_statusquo_count', 'group_take_count', 'GroupChoices_time'] def vars_for_template(self): if self.player.diluted_selection == "add take": norms_table_subset = norms_table[norms_table.id.isin(self.player.norm_group.split(" "))] give_count = len(norms_table_subset[norms_table_subset['choice'] == 'Give']) statusquo_count = len(norms_table_subset[norms_table_subset['choice'] == 'Status Quo']) take_count = len(norms_table_subset[norms_table_subset['choice'] == 'Take']) + 3 elif self.player.diluted_selection == "add give": norms_table_subset = norms_table[norms_table.id.isin(self.player.norm_group.split(" "))] give_count = len(norms_table_subset[norms_table_subset['choice'] == 'Give']) + 3 statusquo_count = len(norms_table_subset[norms_table_subset['choice'] == 'Status Quo']) take_count = len(norms_table_subset[norms_table_subset['choice'] == 'Take']) return dict( give_count = give_count, statusquo_count = statusquo_count, take_count = take_count ) def is_displayed(self): return self.player.treatment_group == "diluted signal" and self.player.choice_order == "give first" class KrupkaElicitation2(Page): form_model = 'player' def get_form_fields(self): if self.player.choice_order == "take first": return ['krupka2_take', 'krupka2_statusquo', 'krupka2_give', 'KrupkaElicitation2_time'] else: return ['krupka2_give', 'krupka2_statusquo', 'krupka2_take', 'KrupkaElicitation2_time'] class EmpiricalElicitation2(Page): form_model = 'player' form_fields = ['empirical2_take', 'empirical2_statusquo', 'empirical2_give', 'empiricalelicitation2_sum', 'empiricalelicitation2_incorrect', 'EmpiricalElicitation2_time'] class ThankYou(Page): form_model = 'player' form_fields = ['ThankYou_time'] page_sequence = [Introduction_00,Introduction_01, Introduction_02, KrupkaElicitation, EmpiricalElicitation,Decision_a, Decision_b,GroupChoices_full_take, GroupChoices_full_give,GroupChoices_diluted_take,GroupChoices_diluted_give, KrupkaElicitation2, EmpiricalElicitation2, ThankYou]