from typing import List
# TODO: Format labels on session creation
# TODO: Pass correct class according to session in session fields
class Labels:
# PaymentQuestions1
satisf_fixedwage = "Ich bin zufrieden mit der fixen Vergütung in Höhe von {fixed_wage}."
fair_fixedwage = "Ich finde die fixe Vergütung in Höhe von {fixed_wage} fair."
# TaskQuestions1_1
task_motivation = "Ich habe mich angestrengt, um die Aufgaben in diesem Experiment zu lösen."
task_fun = "Ich hatte Spaß an den Aufgaben."
task_difficult = "Ich fand die Aufgaben schwierig."
task_exhausting = "Ich empfand die Aufgaben als ermüdend."
task_obligation = "Ich fühlte mich zur Bearbeitung der Aufgaben verpflichtet."
task_pressure = "Ich fühlte mich unter Druck gesetzt Leistung zu bringen."
task_stress = "Ich fühlte mich gestresst."
task_boredom = "Ich fühlte mich gelangweilt."
task_concentration = "Ich fand es schwer mich zu konzentrieren."
# TaskQuestions1_2
task_competition = "Ich wollte besser sein als die anderen ExperimentteilnehmerInnen."
task_best = "Ich wollte die/der Beste sein."
task_reciprocity = "Ich wollte mich im Gegenzug für die Bezahlung anstrengen."
task_recognition = "Ich wollte von Anderen Anerkennung erhalten."
task_diligent = "Ich wollte die Aufgaben gewissenhaft bearbeiten"
task_fixedwage = "Ich war durch die fixe Zahlung in Höhe von {fixed_wage} motiviert."
task_competition2 = "Ich wollte nicht schlechter sein als die anderen ExperimentteilnehmerInnen."
task_notworst = "Ich wollte nicht die/der Schlechteste sein."
# TaskQuestions2_2
outsideoption_interesting = "Ich fand die Artikel aus dem TUM-Magazin „Faszination Forschung“ interessant."
outsideoption1 = "Die Artikel aus dem TUM-Magazin „Faszination Forschung“ haben mich davon abgehalten die mathematischen Aufgaben zu lösen."
outsideoption2 = "Ich wollte keine mathematischen Aufgaben lösen."
outsideoption_fun = "Ich hatte Spaß die Artikel aus dem TUM-Magazin „Faszination Forschung“ zu lesen."
# AttitudeQuestions1
comp1 = "Ich arbeite gerne in Situationen, in denen ich mit anderen im Wettbewerb stehe."
comp2 = "Es ist mir wichtig, bei einer Aufgabe besser abzuschneiden als andere."
comp3 = "Ich glaube, dass Gewinnen sowohl bei der Arbeit als auch in Spielen wichtig ist."
comp4 = "Ich strenge mich mehr an, wenn ich im Wettbewerb mit Anderen stehe."
# AttitudeQuestions2
rec1 = "Wenn mir jemand einen Gefallen tut, bin ich bereit, dies zu erwidern."
rec2 = "Wenn mir schweres Unrecht zuteil wird, werde ich mich um jeden Preis bei der nächsten Gelegenheit dafür rächen."
rec3 = "Wenn mich jemand in eine schwierige Lage bringt, werde ich das Gleiche mit ihm machen."
rec4 = "Ich strenge mich besonders an, um jemandem zu helfen, der mir früher schon mal geholfen hat."
rec5 = "Wenn mich jemand beleidigt, werde ich mich ihm gegenüber auch beleidigend verhalten."
rec6 = "Ich bin bereit, Kosten auf mich zu nehmen, um jemandem zu helfen, der mir früher einmal geholfen hat."
# AttitudeQuestions3
risk_gen = "Sind Sie im Allgemeinen ein risikobereiter Mensch oder versuchen Sie, Risiken zu vermeiden?"
# AttitudeQuestions4
risk1 = "beim Autofahren?"
risk2 = "bei Geldanlagen?"
risk3 = "bei Freizeit und Sport?"
risk4 = "bei Ihrer beruflichen Karriere?"
risk5 = "bei Ihrer Gesundheit?"
risk6 = "beim Vertrauen in fremde Menschen?"
def __init__(self, **formatters) -> None:
"""
Format all labels with the fixed wage of the treatment
"""
self.satisf_fixedwage = self.satisf_fixedwage.format(**formatters)
self.fair_fixedwage = self.fair_fixedwage.format(**formatters)
self.task_fixedwage = self.task_fixedwage.format(**formatters)
def get_labels(self, page) -> List[str]:
"""
Return a tuple (field_name, field_label) of all field for the specified page
"""
labels = [(f, getattr(self, f)) for f in self.get_form_fields(page)]
return labels
class FixedWageLabels(Labels):
def __init__(self, **formatters) -> None:
"""
Format all labels with the fixed wage of the treatment
"""
super().__init__(**formatters)
@staticmethod
def get_form_fields(page) -> List[str]:
"""
Return the form fields for the specificed page
"""
page_name = page.__name__
if page_name == "PaymentQuestions1":
return ["satisf_fixedwage", "fair_fixedwage"]
if page_name == "TaskQuestions1_1":
return [
"task_motivation",
"task_fun",
"task_difficult",
"task_exhausting",
"task_obligation",
"task_pressure",
"task_stress",
"task_boredom",
"task_concentration",
]
if page_name == "TaskQuestions1_2":
return [
"task_competition",
"task_best",
"task_reciprocity",
"task_recognition",
"task_diligent",
"task_fixedwage",
"task_competition2",
"task_notworst",
]
if page_name == "TaskQuestions2_2":
return ["outsideoption_interesting", "outsideoption1", "outsideoption2", "outsideoption_fun"]
if page_name == "AttitudeQuestions1":
return ["comp1", "comp2", "comp3", "comp4"]
if page_name == "AttitudeQuestions2":
return ["rec1", "rec2", "rec3", "rec4", "rec5", "rec6"]
if page_name == "AttitudeQuestions3":
return ["risk_gen"]
if page_name == "AttitudeQuestions4":
return ["risk1", "risk2", "risk3", "risk4", "risk5", "risk6"]
class PieceRateLabels(Labels):
# PaymentQuestions1
satisf_piecerate = (
"Ich bin zufrieden mit der Auszahlung pro richtig gelöster Aufgabe in Höhe von {piece_rate}."
)
fair_piecerate = "Ich finde die Auszahlung pro richtig gelöster Aufgabe in Höhe von {piece_rate} fair."
# TaskQuestions1_2
task_piecerate = (
"Ich war durch die Auszahlung in Höhe von {piece_rate} pro richtig gelöster Aufgabe motiviert. "
)
def __init__(self, **formatters) -> None:
"""
Format all labels with the fixed wage and piece rate of the treatment
"""
super().__init__(**formatters)
self.satisf_piecerate = self.satisf_piecerate.format(**formatters)
self.fair_piecerate = self.fair_piecerate.format(**formatters)
self.task_piecerate = self.task_piecerate.format(**formatters)
@staticmethod
def get_form_fields(page) -> List[str]:
"""
Return the form fields for the specificed page
"""
page_name = page.__name__
if page_name == "PaymentQuestions1":
return ["satisf_fixedwage", "satisf_piecerate", "fair_fixedwage", "fair_piecerate"]
if page_name == "TaskQuestions1_1":
return [
"task_motivation",
"task_fun",
"task_difficult",
"task_exhausting",
"task_obligation",
"task_pressure",
"task_stress",
"task_boredom",
"task_concentration",
]
if page_name == "TaskQuestions1_2":
return [
"task_competition",
"task_best",
"task_reciprocity",
"task_recognition",
"task_diligent",
"task_fixedwage",
"task_piecerate",
"task_competition2",
"task_notworst",
]
if page_name == "TaskQuestions2_2":
return ["outsideoption_interesting", "outsideoption1", "outsideoption2", "outsideoption_fun"]
if page_name == "AttitudeQuestions1":
return ["comp1", "comp2", "comp3", "comp4"]
if page_name == "AttitudeQuestions2":
return ["rec1", "rec2", "rec3", "rec4", "rec5", "rec6"]
if page_name == "AttitudeQuestions3":
return ["risk_gen"]
if page_name == "AttitudeQuestions4":
return ["risk1", "risk2", "risk3", "risk4", "risk5", "risk6"]
class TournamentLabels(Labels):
# PaymentQuestions1
satisf_prize = "Ich bin mit den zu erreichenden Preisen in Höhe von {prize1}, {prize2}, {prize3} bzw. {prize4} zufrieden."
fair_prize = "Ich finde die zu erreichenden Preise in Höhe von {prize1}, {prize2}, {prize3} bzw. {prize4} fair."
# TaskQuestions1_2
task_prize = "Ich war durch die Preise in Höhe von {prize1}, {prize2}, {prize3} bzw. {prize4} motiviert."
def __init__(self, **formatters) -> None:
"""
Format all labels with the fixed wage and tournament prizes of the treatment
"""
super().__init__(**formatters)
self.satisf_prize = self.satisf_prize.format(**formatters)
self.fair_prize = self.fair_prize.format(**formatters)
self.task_prize = self.task_prize.format(**formatters)
@staticmethod
def get_form_fields(page) -> List[str]:
"""
Return the form fields for the specificed page
"""
page_name = page.__name__
if page_name == "PaymentQuestions1":
return ["satisf_fixedwage", "satisf_prize", "fair_fixedwage", "fair_prize"]
if page_name == "TaskQuestions1_1":
return [
"task_motivation",
"task_fun",
"task_difficult",
"task_exhausting",
"task_obligation",
"task_pressure",
"task_stress",
"task_boredom",
"task_concentration",
]
if page_name == "TaskQuestions1_2":
return [
"task_competition",
"task_best",
"task_reciprocity",
"task_recognition",
"task_diligent",
"task_fixedwage",
"task_prize",
"task_competition2",
"task_notworst",
]
if page_name == "TaskQuestions2_2":
return ["outsideoption_interesting", "outsideoption1", "outsideoption2", "outsideoption_fun"]
if page_name == "AttitudeQuestions1":
return ["comp1", "comp2", "comp3", "comp4"]
if page_name == "AttitudeQuestions2":
return ["rec1", "rec2", "rec3", "rec4", "rec5", "rec6"]
if page_name == "AttitudeQuestions3":
return ["risk_gen"]
if page_name == "AttitudeQuestions4":
return ["risk1", "risk2", "risk3", "risk4", "risk5", "risk6"]