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"]