from otree.api import Currency as c, currency_range
from ._builtin import Page, WaitPage
from .models import Constants
import json
import datetime
class FutureLineLength(Page):
form_model = 'player'
form_fields = ['slider_one_year','slider_five_year', 'slider_one_year_ever_clicked', 'slider_five_year_ever_clicked', "is_mobile_original_method", "is_mobile"]
def is_displayed(self):
return self.player.line_length_condition == 2
class PastLineLength(Page):
form_model = 'player'
form_fields = ['slider_one_year','slider_five_year', 'slider_one_year_ever_clicked', 'slider_five_year_ever_clicked', "is_mobile_original_method", "is_mobile"]
def is_displayed(self):
return self.player.line_length_condition == 1
class GenderAge(Page):
form_model = "player"
form_fields = ["gender", "age"]
class Education(Page):
form_model = "player"
form_fields = ["education"]
class IncomeLevel(Page):
form_model = "player"
form_fields = ["income_level"]
class EthnicityRace(Page):
form_model = "player"
def get_form_fields(player):
return [race['name'] for race in Constants.races_ethn]
class ZipCode(Page):
form_model = "player"
form_fields = ["zipcode"]
class VSRespondents(Page):
form_model = "player"
form_fields = ["vs_respondents"]
def is_displayed(self):
return self.session.config["vs_on"]
class ResultsVS(Page):
def is_displayed(self):
return self.session.config["vs_on"]
class WorkSituation(Page):
form_model = "player"
form_fields = ["work_situation"]
class BenefitToday(Page):
form_model = "player"
form_fields = ["benefit_answer"]
def vars_for_template(self):
start_values = ["completely unwilling to do so"] + ["" for i in range(9)] + ["very willing to do so"]
return dict(
start_values=start_values,
end_values=[i for i in range(11)],
idxs=[i for i in range(11)]
)
class PoliticalOrientation1(Page):
form_model = "player"
form_fields = ["political_orientation"]
class PoliticalOrientation2(Page):
form_model = "player"
form_fields = ["political_orientation", "independent_option", "republican_option", "democrat_option"]
class PastSelvesOverlap(Page):
form_model = 'player'
form_fields = ['slider_overlap_one_year', 'slider_overlap_five_year', 'slider_overlap_one_year_ever_clicked', 'slider_overlap_five_year_ever_clicked']
def is_displayed(self):
return self.player.overlap_condition == 1
def vars_for_template(self):
start_values = ["less overlap"] + ["" for i in range(5)] + ["more overlap"]
return dict(
start_values=start_values,
end_values=[i for i in range(7)],
idxs=[i for i in range(7)]
)
class FutureSelvesOverlap(Page):
form_model = 'player'
form_fields = ['slider_overlap_one_year', 'slider_overlap_five_year', 'slider_overlap_one_year_ever_clicked', 'slider_overlap_five_year_ever_clicked']
def is_displayed(self):
return self.player.overlap_condition == 2
def vars_for_template(self):
start_values = ["less overlap"] + ["" for i in range(5)] + ["more overlap"]
return dict(
start_values=start_values,
end_values=["
", "", "", "
", "", "", "
"],
idxs=[i for i in range(7)]
)
class InterfaceChoice(Page):
form_model = 'player'
form_fields = ['interface_choice']
def is_displayed(self):
return int(self.participant.vars["condition"]) == 2 or int(self.participant.vars["condition"]) == 4 or int(self.participant.vars["condition"]) == 6 or int(self.participant.vars["condition"]) == 8
class Feedback(Page):
form_model = "player"
form_fields = ["feedback"]
class Results(Page):
def is_displayed(self):
return self.session.config["vs_on"]==0
def generate_page_sequence():
return (
[FutureLineLength]
+ [PastLineLength]
+ [GenderAge]
+ [Education]
+ [IncomeLevel]
+ [EthnicityRace]
+ [ZipCode]
+ [VSRespondents]
+ [WorkSituation]
+ [BenefitToday]
+ [PoliticalOrientation1]
+ [PoliticalOrientation2]
+ [PastSelvesOverlap]
+ [FutureSelvesOverlap]
+ [InterfaceChoice]
+ [Feedback]
+ [Results]
+ [ResultsVS]
)
page_sequence = generate_page_sequence()