from otree.api import Currency as c, currency_range from ._builtin import Page, WaitPage from .models import Constants class Income_Intro(Page): form_model = 'player' form_fields = ['Household'] class Income1(Page): form_model = 'player' form_fields = ['income_1', 'income_2'] class Income2(Page): form_model = 'player' form_fields = ['ease', 'happy_ease', 'money_aside'] def vars_for_template(self): if self.player.Household == 0: return dict( money_label='Wie viel Geld konnten Sie letztes Jahr ansparen (nach Abzug von Rechnungen und Steuern)' ) else: return dict( money_label='Wie viel Geld konnte Ihr Haushalt letztes Jahr ansparen (nach Abzug von Rechnungen und Steuern)' ) class Income3(Page): form_model = 'player' def get_form_fields(self): if self.player.money_aside == 0: return ['cannot_save'] else: return ['save_purpose'] class Capital_Intro(Page): form_model = 'player' class Capital1(Page): form_model = 'player' form_fields = ['asset_1', 'asset_2'] class Capital2(Page): form_model = 'player' def get_form_fields(self): if self.player.asset_2 == ['1']: return ['asset_bank'] if self.player.asset_2 == ['2']: return ['asset_shares'] if self.player.asset_2 == ['3']: return ['asset_bonds'] if self.player.asset_2 == ['4']: return ['asset_derivative'] if self.player.asset_2 == ['5']: return ['asset_fund'] if self.player.asset_2 == ['6']: return ['asset_realestate'] if self.player.asset_2 == ['7']: return ['asset_art'] if self.player.asset_2 == ['8']: return ['asset_insurance'] # 1 und x if self.player.asset_2 == ['1', '2']: return ['asset_bank', 'asset_shares'] if self.player.asset_2 == ['1', '3']: return ['asset_bank', 'asset_bonds'] if self.player.asset_2 == ['1', '4']: return ['asset_bank', 'asset_derivative'] if self.player.asset_2 == ['1', '5']: return ['asset_bank', 'asset_fund'] if self.player.asset_2 == ['1', '6']: return ['asset_bank', 'asset_realestate'] if self.player.asset_2 == ['1', '7']: return ['asset_bank', 'asset_art'] if self.player.asset_2 == ['1', '8']: return ['asset_bank', 'asset_insurance'] # 2 und x if self.player.asset_2 == ['2', '3']: return ['asset_shares', 'asset_bonds'] if self.player.asset_2 == ['2', '4']: return ['asset_shares', 'asset_derivative'] if self.player.asset_2 == ['2', '5']: return ['asset_shares', 'asset_fund'] if self.player.asset_2 == ['2', '6']: return ['asset_shares', 'asset_realestate'] if self.player.asset_2 == ['2', '7']: return ['asset_shares', 'asset_art'] if self.player.asset_2 == ['2', '8']: return ['asset_shares', 'asset_insurance'] # 3 und x if self.player.asset_2 == ['3', '4']: return ['asset_bonds', 'asset_derivative'] if self.player.asset_2 == ['3', '5']: return ['asset_bonds', 'asset_fund'] if self.player.asset_2 == ['3', '6']: return ['asset_bonds', 'asset_realestate'] if self.player.asset_2 == ['3', '7']: return ['asset_bonds', 'asset_art'] if self.player.asset_2 == ['3', '8']: return ['asset_bonds', 'asset_insurance'] # 4 und x if self.player.asset_2 == ['4', '5']: return ['asset_derivative', 'asset_fund'] if self.player.asset_2 == ['4', '6']: return ['asset_derivative', 'asset_realestate'] if self.player.asset_2 == ['4', '7']: return ['asset_derivative', 'asset_art'] if self.player.asset_2 == ['4', '8']: return ['asset_derivative', 'asset_insurance'] # 5 und x if self.player.asset_2 == ['5', '6']: return ['asset_fund', 'asset_realestate'] if self.player.asset_2 == ['5', '7']: return ['asset_fund', 'asset_art'] if self.player.asset_2 == ['5', '8']: return ['asset_fund', 'asset_insurance'] # 6 und x if self.player.asset_2 == ['6', '7']: return ['asset_realestate', 'asset_art'] if self.player.asset_2 == ['6', '8']: return ['asset_realestate', 'asset_insurance'] # 7 und x if self.player.asset_2 == ['7', '8']: return ['asset_art', 'asset_insurance'] # 1,2 und x else: return ['asset_bank', 'asset_shares', 'asset_bonds', 'asset_derivative', 'asset_fund', 'asset_realestate', 'asset_art', 'asset_insurance'] class Capital2error(Page): form_model = 'player' def is_displayed(self): return self.player.asset_bank + self.player.asset_shares + self.player.asset_bonds + self.player.asset_derivative + self.player.asset_fund + self.player.asset_realestate + self.player.asset_art + self.player.asset_insurance != 100 def before_next_page(self): if self.request.POST.get('Zurück'): if self.request.POST.get('Zurück')[0] == '1': self._is_frozen = False self._index_in_pages -= 2 self.participant._index_in_pages -= 2 class Capital3(Page): form_model = 'player' form_fields = ['own_house', 'risk_capacity', 'status'] def vars_for_template(self): if self.player.Household == 0: return dict( status_label='In den letzten 12 Monaten, welche der unten aufgeführten Punkte trifft auf Sie zu? (Mehrfachnennung möglich)' ) else: return dict( status_label='In den letzten 12 Monaten, welche der unten aufgeführten Punkte trifft auf Ihren Haushalt zu? (Mehrfachnennung möglich)' ) class Capital4(Page): form_model = 'player' form_fields = ['credit_card', 'personal_debt'] class Capital5(Page): form_model = 'player' form_fields = ['insurance'] def vars_for_template(self): if self.player.Household == 0: return dict( insurance_label='In den letzten 12 Monaten, welche der unten aufgeführten Versicherungen hatten Sie? (Mehrfachnennung möglich)' ) else: return dict( insurance_label='In den letzten 12 Monaten, welche der unten aufgeführten Versicherungen hatte Ihr Haushalt? (Mehrfachnennung möglich)' ) class Motivation_Intro(Page): form_model = 'player' class Motivation1(Page): form_model = 'player' form_fields = ['imp_afford', 'imp_company', 'imp_selffulfilling', 'imp_job_success', 'imp_owning_house'] class Motivation2(Page): form_model = 'player' form_fields = ['imp_relationship', 'imp_children', 'imp_engagement', 'imp_travel'] class FinDecSelf_Intro(Page): form_model = 'player' class FinDecSelf1(Page): form_model = 'player' form_fields = ['fin_involvement', 'fin_involvement_2', 'fin_advice'] class FinDecSelf2(Page): form_model = 'player' form_fields = ['fin_check_news', 'fin_check_acc', 'fin_check_portfolio', 'fin_check_advice'] class FinDecSelf3(Page): form_model = 'player' form_fields = ['fin_talk', 'fin_advice_prof', 'fin_prof_dec'] class FinDecSelf4(Page): form_model = 'player' form_fields = ['investment_portfolio_1', 'trade_stocks', 'investment_portfolio_2'] class FinDecSelf5(Page): form_model = 'player' form_fields = ['household_knowledge', 'household_decisions'] class RiskBenefit_Intro(Page): form_model = 'player' class RiskBenefit1(Page): form_model = 'player' form_fields = ['knowledge_bank', 'risk_bank', 'benefit_bank', 'invest_bank'] class RiskBenefit2(Page): form_model = 'player' form_fields = ['knowledge_stocks', 'risk_stocks', 'benefit_stocks', 'invest_stocks'] class RiskBenefit3(Page): form_model = 'player' form_fields = ['knowledge_bonds', 'risk_bonds', 'benefit_bonds', 'invest_bonds'] class RiskBenefit4(Page): form_model = 'player' form_fields = ['knowledge_fund', 'risk_fund', 'benefit_fund', 'invest_fund'] class RiskBenefit5(Page): form_model = 'player' form_fields = ['knowledge_pillar3a', 'risk_pillar3a', 'benefit_pillar3a', 'invest_pillar3a'] class FinDec_Intro(Page): form_model = 'player' class FinDec1(Page): form_model = 'player' form_fields = ['invest_choices', 'invest_fear', 'save_money', 'debt_unpleasant','excitement_risk',] class FinDec2(Page): form_model = 'player' form_fields = [ 'check_risks', 'fin_expertise_trust', 'urge_win', 'stress_fin_risk', 'speculation'] class FinDec3(Page): form_model = 'player' form_fields = ['abilities_math', 'abilities_fin'] class FinDec4(Page): form_model = 'player' form_fields = ['rank_math', 'rank_financial'] # class Pillar3_Intro(Page): form_model = 'player' class Pillar3a1 (Page): form_model = 'player' form_fields = ['pillar3a'] class Pillar3a2 (Page): form_model = 'player' form_fields = ['pillar3a_shares', 'pillar3a_deposit'] def is_displayed(self): return not self.player.pillar3a == 4 class Expectations_Intro(Page): form_model = 'player' class Expectations1(Page): form_model = 'player' form_fields = ['fin_sit_change', 'fin_sit_improve', 'fin_sit_deteriorate', 'fin_ladder'] def vars_for_template(self): if self.player.Household == 0: return dict( change_label='In den letzten 12 Monaten, hat sich Ihre finanzielle Situation verändert? (5 bedeutet keine Änderung)', improve_label='In den nächsten 12 Monaten, wie wahrscheinlich ist es, dass sich Ihre finanzielle Situation verbessert?', deteriorate_label='In den nächsten 12 Monaten, wie wahrscheinlich ist es, dass sich Ihre finanzielle Situation verschlechtert?', ladder_label='Stellen Sie sich eine Leiter vor, welche die Menschen in der Schweiz repräsentiert. Auf der obersten Stufe stehen Personen, denen es am besten geht (am meisten Geld, die respektiertesten Berufe). Auf der untersten Stufe stehen Personen, denen es am schlechtesten geht. Auf welcher Stufe würden Sie sich selbst platzieren?' ) else: return dict( change_label='In den letzten 12 Monaten, hat sich die finanzielle Situation Ihres Haushaltes verändert? (5 bedeutet keine Änderung', improve_label='In den nächsten 12 Monaten, wie wahrscheinlich ist es, dass sich die finanzielle Situation Ihres Haushaltes verbessert?', deteriorate_label='In den nächsten 12 Monaten, wie wahrscheinlich ist es, dass sich die finanzielle Situation Ihres Haushaltes verschlechtert?', ladder_label='Stellen Sie sich eine Leiter vor, welche die Menschen in der Schweiz repräsentiert. Auf der obersten Stufe stehen Personen, denen es am besten geht (am meisten Geld, die respektiertesten Berufe). Auf der untersten Stufe stehen Personen, denen es am schlechtesten geht. Auf welcher Stufe würden Sie Ihren Haushalt platzieren?' ) class Expectations2(Page): form_model = 'player' form_fields = ['happiness', 'salary_increase', 'salary_decrease'] class Expectations3(Page): form_model = 'player' form_fields = ['costs_health', 'costs_holiday', 'costs_hobbies', 'lifestyle_change'] # class Expectations4(Page): form_model = 'player' form_fields = ['longevity_60', 'longevity_70', 'longevity_80', 'longevity_90'] # class EndPage(Page): form_model = 'player' page_sequence = [ Income_Intro, Income1, Income2, Income3, Capital_Intro, Capital1, Capital2, Capital2error, Capital3, Capital4, Capital5, Motivation_Intro, Motivation1, Motivation2, FinDecSelf_Intro, FinDecSelf1, FinDecSelf2, FinDecSelf3, FinDecSelf4, FinDecSelf5, RiskBenefit_Intro, RiskBenefit1, RiskBenefit2, RiskBenefit3, RiskBenefit4, RiskBenefit5, FinDec_Intro, FinDec1, FinDec2, FinDec3, Pillar3_Intro, Pillar3a1, Pillar3a2, Expectations_Intro, Expectations1, Expectations2, ]