import math import random from otree.api import * doc = """ Your app description """ class Constants(BaseConstants): name_in_url = 'experiment' players_per_group = None num_rounds = 1 ABekl = 0.48 ARest = 0.33 ABuch = 0.19 BBekl = 0.19 BRest = 0.28 BBuch = 0.53 CBekl = 0.20 CRest = 0.52 CBuch = 0.28 DBekl = 0.3 DRest = 0.33 DBuch = 0.37 EBekl = 0.48 ERest = 0.21 EBuch = 0.31 class Subsession(BaseSubsession): pass class Group(BaseGroup): pass class Player(BasePlayer): verlosung = models.StringField() verfahren = models.StringField() gutschein = models.StringField() gewinner = models.StringField() matrikelnummer = models.StringField() z1 = models.FloatField() z2 = models.FloatField() z3 = models.FloatField() z4 = models.FloatField() # Abholcode abholcode = models.StringField() # Fragebogen start ###########Demographics########### gender = models.IntegerField(blank=True, label="Bitte geben Sie Ihr Geschlecht an.", choices=[ [1, 'Männlich'], [2, 'Weiblich'], [3, 'Andere'], ] ) age = models.IntegerField(label="Bitte tragen Sie Ihr Alter ein.", min=18, max=90, blank=True) studyfield = models.IntegerField( label="Bitte geben Sie Ihren Studiengang an.", choices=[ [1, '(Technische) Betriebswirtschaftslehre'], [2, 'Wirtschaftsingenieurwesen'], [3, 'Maschinenbau'], [4, 'Energie und Rohstoffe'], [5, 'Informatik/Wirtschaftsinformatik'], [6, 'Verfahrenstechnik/Chemieingenieurwesen'], [7, 'Chemie'], [8, 'Energietechnologien'], [9, 'Rohstoff-/Geowissenschafte'], [10, 'Materialwissenschaft und Werkstofftechnik'], [11, 'anderer Studiengang'], [12, 'kein Studium'], ], blank=True, ) studyprogress = models.IntegerField( label="In welchem Studienabschnitt befinden Sie sich?", choices=[ [1, 'Bachelor / Grundstudium'], [2, 'Master / Hauptstudium'], [3, 'Promotionsstudium'], [4, 'kein Studium'], ], blank=True, ) Citizenship = models.IntegerField( label="Welche Staatsbürgerschaft besitzen Sie?", choices=[ [1, 'afghanisch'], [2, 'ägyptisch'], [3, 'albanisch'], [4, 'algerisch'], [5, 'andorranisch'], [6, 'angolanisch'], [7, 'antiguanisch'], [8, 'äquatorialguineisch'], [9, 'argentinisch'], [10, 'armenisch'], [11, 'aserbaidschanisch'], [12, 'äthiopisch'], [13, 'australisch'], [14, 'bahamaisch'], [15, 'bahrainisch'], [16, 'bangladeschisch'], [17, 'barbadisch'], [18, 'belgisch'], [19, 'belizisch'], [20, 'beninisch'], [21, 'bhutanisch'], [22, 'bolivianisch'], [23, 'bosnisch-herzegowinisch'], [24, 'botsuanisch'], [25, 'brasilianisch'], [26, 'bruneiisch'], [27, 'bulgarisch'], [28, 'burkinisch'], [29, 'burundisch'], [30, 'chilenisch'], [31, 'chinesisch'], [32, 'neuseeländisch'], [33, 'costa-ricanisch'], [34, 'ivorisch'], [35, 'dänisch'], [36, 'deutsch'], [37, 'dominicanisch'], [38, 'dominikanisch'], [39, 'dschibutisch'], [40, 'ecuadorianisch'], [41, 'salvadorianisch'], [42, 'eritreisch'], [43, 'estnisch'], [44, 'fidschianisch'], [45, 'finnisch'], [46, 'französisch'], [47, 'gabunisch'], [48, 'gambisch'], [49, 'georgisch'], [50, 'ghanaisch'], [51, 'grenadisch'], [52, 'griechisch'], [53, 'guatemaltekisch'], [54, 'guineisch'], [55, 'guinea-bissauisch'], [56, 'guyanisch'], [57, 'haitianisch'], [58, 'honduranisch'], [59, 'indisch'], [60, 'indonesisch'], [61, 'irakisch'], [62, 'iranisch'], [63, 'irisch'], [64, 'isländisch'], [65, 'israelisch'], [66, 'italienisch'], [67, 'jamaikanisch'], [68, 'japanisch'], [69, 'jemenitisch'], [70, 'jordanisch'], [71, 'kambodschanisch'], [72, 'kamerunisch'], [73, 'kanadisch'], [74, 'kap-verdisch'], [75, 'kasachisch'], [76, 'katarisch'], [77, 'kenianisch'], [78, 'kirgisisch'], [79, 'kiribatisch'], [80, 'kolumbianisch'], [81, 'komorisch'], [82, 'kongolesisch'], [83, 'der Demokratischen Republik Kongo'], [84, 'der Demokratischen Volksrepublik Korea'], [85, 'der Republik Korea'], [86, 'kosovarisch'], [87, 'kroatisch'], [88, 'kubanisch'], [89, 'kuwaitisch'], [90, 'laotisch'], [91, 'lesothisch'], [92, 'lettisch'], [93, 'libanesisch'], [94, 'liberianisch'], [95, 'libysch'], [96, 'liechtensteinisch'], [97, 'litauisch'], [98, 'luxemburgisch'], [99, 'madagassisch'], [100, 'malawisch'], [101, 'malaysisch'], [102, 'maledivisch'], [103, 'malisch'], [104, 'maltesisch'], [105, 'marokkanisch'], [106, 'marshallisch'], [107, 'mauretanisch'], [108, 'mauritisch'], [109, 'mazedonisch'], [110, 'mexikanisch'], [111, 'mikronesisch'], [112, 'moldauisch'], [113, 'monegassisch'], [114, 'mongolisch'], [115, 'montenegrinisch'], [116, 'mosambikanisch'], [117, 'myanmarisch'], [118, 'namibisch'], [119, 'nauruisch'], [120, 'nepalesisch'], [121, 'neuseeländisch'], [122, 'nicaraguanisch'], [123, 'niederländisch'], [124, 'nigrisch'], [125, 'nigerianisch'], [126, 'neuseeländisch'], [127, 'norwegisch'], [128, 'omanisch'], [129, 'österreichisch'], [130, 'pakistanisch'], [131, 'palauisch'], [132, 'panamaisch'], [133, 'papua-neuguineisch'], [134, 'paraguayisch'], [135, 'peruanisch'], [136, 'philippinisch'], [137, 'polnisch'], [138, 'portugiesisch'], [139, 'ruandisch'], [140, 'rumänisch'], [141, 'russisch'], [142, 'salomonisch'], [143, 'sambisch'], [144, 'samoanisch'], [145, 'san-marinesisch'], [146, 'são-toméisch'], [147, 'saudi-arabisch'], [148, 'schwedisch'], [149, 'schweizerisch'], [150, 'senegalesisch'], [151, 'serbisch'], [152, 'seychellisch'], [153, 'sierra-leonisch'], [154, 'simbabwisch'], [155, 'singapurisch'], [156, 'slowakisch'], [157, 'slowenisch'], [158, 'somalisch'], [159, 'spanisch'], [160, 'sri-lankisch'], [161, 'von St. Kitts und Nevis'], [162, 'lucianisch'], [163, 'vincentisch'], [164, 'südafrikanisch'], [165, 'sudanesisch'], [166, 'südsudanesisch'], [167, 'surinamisch'], [168, 'swasiländisch'], [169, 'syrisch'], [170, 'tadschikisch'], [171, 'tansanisch'], [172, 'thailändisch'], [173, 'von Timor-Leste'], [174, 'togoisch'], [175, 'tongaisch'], [176, 'von Trinidad und Tobago'], [177, 'tschadisch'], [178, 'tschechisch'], [179, 'tunesisch'], [180, 'türkisch'], [181, 'turkmenisch'], [182, 'tuvaluisch'], [183, 'ugandisch'], [184, 'ukrainisch'], [185, 'ungarisch'], [186, 'uruguayisch'], [187, 'usbekisch'], [188, 'vanuatuisch'], [189, 'vatikanisch'], [190, 'venezolanisch'], [191, 'der Vereinigten Arabischen Emirate'], [192, 'amerikanisch'], [193, 'britisch'], [194, 'vietnamesisch'], [195, 'weißrussisch'], [196, 'zentralafrikanisch'], [197, 'zyprisch'], ], initial=36, blank=True, ) Entscheidung = models.IntegerField( label="Haben Sie bereits die Vorlesung 'Entscheidungstheorie' gehört?", choices=[ [1, 'Ja'], [2, 'Nein'], ], blank=True, ) DecProcess = models.StringField( label="Bitte beschreiben Sie möglichst genau Ihren Entscheidungsprozess bei der Auswahl einer Alternative", ) # NameGoals1 = models.IntegerField( # label="Wählen Sie das Zielkriterium aus, welches Ihnen bei der Auswahl einer Alternative am wichtigsten war.", # choices=[ # [1,'Kosten'], # [2,'Wartezeit'], # ] # ) # NameGoals2 = models.StringField( # label="Bitte nennen Sie möglichst das Zielkriterium, welches bei der Entscheidung bzgl. einer Alternative wichtig war und erläutern Ihre Entscheidung kurz:", # ) Advice = models.LongStringField( label="Haben Sie Hinweise oder Anregungen, die Sie gerne noch zum Experiment machen möchten?", blank=True, ) lab_exp = models.IntegerField( choices=[[1, 'Ja'], [0, 'Nein']], label="Haben Sie bisher schonmal an einem Laborexperiment teilgenommen?", widget=widgets.RadioSelect, blank=True ) # Fragebogen ende # Smart smart_verstaendlich = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) smart_vertrauen = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) smart_nwa_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) smart_top_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) smart_bekleidung = models.IntegerField(min=0, max=100) smart_restaurant = models.IntegerField(min=0, max=100) smart_buch = models.IntegerField(min=0, max=100) smart_max = models.StringField() smart_t_max = models.StringField() # AHP ahp_verstaendlich = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) ahp_vertrauen = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) ahp_top_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) ahp_nwa_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) Vergleiche_Bekleidung_Restaurant = models.IntegerField(min=10, max=90) Vergleiche_Restaurant_Bekleidung = models.IntegerField(min=10, max=90) Vergleiche_Bekleidung_Buch = models.IntegerField(min=10, max=90) Vergleiche_Buch_Bekleidung = models.IntegerField(min=10, max=90) Vergleiche_Restaurant_Buch = models.IntegerField(min=10, max=90) Vergleiche_Buch_Restaurant = models.IntegerField(min=10, max=90) ahp_max = models.StringField() ahp_t_max = models.StringField() AHP_Auswahl1 = models.IntegerField( choices=[ [1, 'Der Gutschein für Bekleidung ist besser als der Restaurantgutschein'], [2, 'Der Restaurantgutschein ist besser als der Gutschein für Bekleidung'], [3, 'Beide Gutscheine sind gleichwertig '], ], widget=widgets.RadioSelect ) AHP_Auswahl2 = models.IntegerField( choices=[ [1, 'Der Gutschein für Bekleidung ist besser als der Büchergutschein'], [2, 'Der Büchergutschein ist besser als der Gutschein für Bekleidung'], [3, 'Beide Gutscheine sind gleichwertig '], ], widget=widgets.RadioSelect ) AHP_Auswahl3 = models.IntegerField( choices=[ [1, 'Der Restaurantgutschein ist besser als der Büchergutschein'], [2, 'Der Büchergutschein ist besser als der Restaurantgutschein'], [3, 'Beide Gutscheine sind gleichwertig '], ], widget=widgets.RadioSelect ) # Paarvergleich paar_verstaendlich = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) paar_vertrauen = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) paar_schwierig = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) paar_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) paar_max = models.StringField(blank=True) Auswahl_Hilfe = models.IntegerField( choices=[ [1, 'Hilfe an'], [0, 'Hilfe aus'], ], widget=widgets.RadioSelectHorizontal, initial=1, blank=True ) widget = widgets.RadioSelectHorizontal paar_A_B = models.IntegerField( choices=[ [1, 'A ist besser oder gleich B'], [0, 'B ist besser oder gleich A'], ], widget=widgets.RadioSelectHorizontal, initial=-1 ) paar_A_C = models.IntegerField( choices=[ [1, 'A ist besser oder gleich C'], [0, 'C ist besser oder gleich A'], ], widget=widgets.RadioSelectHorizontal, initial=-1 ) paar_A_D = models.IntegerField( choices=[ [1, 'A ist besser oder gleich D'], [0, 'D ist besser oder gleich A'], ], widget=widgets.RadioSelectHorizontal ) paar_A_E = models.IntegerField( choices=[ [1, 'A ist besser oder gleich E'], [0, 'E ist besser oder gleich A'], ], widget=widgets.RadioSelectHorizontal, initial=-1 ) paar_B_C = models.IntegerField( choices=[ [1, 'B ist besser oder gleich C'], [0, 'C ist besser oder gleich B'], ], widget=widgets.RadioSelectHorizontal ) paar_B_D = models.IntegerField( choices=[ [1, 'B ist besser oder gleich D'], [0, 'D ist besser oder gleich B'], ], widget=widgets.RadioSelectHorizontal, initial=-1 ) paar_B_E = models.IntegerField( choices=[ [1, 'B ist besser oder gleich E'], [0, 'E ist besser oder gleich B'], ], widget=widgets.RadioSelectHorizontal ) paar_C_D = models.IntegerField( choices=[ [1, 'C ist besser oder gleich D'], [0, 'D ist besser oder gleich C'], ], widget=widgets.RadioSelectHorizontal ) paar_C_E = models.IntegerField( choices=[ [1, 'C ist besser oder gleich E'], [0, 'E ist besser oder gleich C'], ], widget=widgets.RadioSelectHorizontal ) paar_D_E = models.IntegerField( choices=[ [1, 'D ist besser oder gleich E'], [0, 'E ist besser oder gleich D'], ], widget=widgets.RadioSelectHorizontal ) # Swing swing_verstaendlich = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) swing_vertrauen = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) swing_top_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) swing_nwa_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) Swing_Bekleidung = models.IntegerField(min=0, max=100) Swing_Restaurant = models.IntegerField(min=0, max=100) Swing_Buch = models.IntegerField(min=0, max=100) swing_max = models.StringField() swing_t_max = models.StringField() swing_maxi = models.IntegerField( choices=[ [1, 'Swing 1'], [2, 'Swing 2'], [3, 'Swing 3'], ], widget=widgets.RadioSelectHorizontal ) # Trade Off trade_off_verstaendlich = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) trade_off_vertrauen = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) trade_off_top_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) trade_off_nwa_zufrieden = models.IntegerField( choices=[ [5, 'stimme voll und ganz zu'], [4, 'stimme zu'], [3, 'stimme weder zu noch lehne ich ab'], [2, 'stimme nicht zu'], [1, 'stimme überhaupt nicht zu'], ], widget=widgets.RadioSelect ) TO_Auswahl1 = models.IntegerField( choices=[ [1, 'TO1 ist besser als TO2'], [4, 'TO2 ist besser als TO1'], [3, 'TO1 und TO2 sind gleich gut'], ], widget=widgets.RadioSelectHorizontal ) TOWert1 = models.IntegerField(min=0, max=100) TO_Auswahl2 = models.IntegerField( choices=[ [1, 'TO3 ist besser als TO4'], [4, 'TO4 ist besser als TO3'], [3, 'TO3 und TO4 sind gleich gut'], ], widget=widgets.RadioSelectHorizontal ) TOWert2 = models.IntegerField(min=0, max=100) to_max = models.StringField() to_t_max = models.StringField() # Fragebogen page class Demographics(Page): def is_displayed(player): return player.round_number == Constants.num_rounds form_model = 'player' form_fields = ['gender', 'age', 'studyfield', 'studyprogress', 'Citizenship', 'Entscheidung', 'lab_exp', 'Advice'] class Information1(Page): def vars_for_template(player): player.abholcode = str(player.participant.code) + str(random.randint(1, 9999)).zfill(4) return dict(abholcode=player.abholcode) class Information2(Page): def vars_for_template(player): return dict(abholcode=player.abholcode) class SmartEingabe(Page): form_model = 'player' form_fields = ['smart_bekleidung', 'smart_restaurant', 'smart_buch'] @staticmethod def error_message(player, values): print('values is', values) if values['smart_bekleidung'] + values['smart_restaurant'] + values['smart_buch'] == 0: return 'Die Summe der Punkte muss größer 0 sein.' class SmartResults(Page): form_model = 'player' form_fields = ['smart_vertrauen', 'smart_verstaendlich', 'smart_nwa_zufrieden', 'smart_top_zufrieden'] @staticmethod def vars_for_template(player): summe = player.smart_bekleidung + player.smart_restaurant + player.smart_buch smartgb = player.smart_bekleidung / summe smartgr = player.smart_restaurant / summe smartgbu = player.smart_buch / summe smart_bew_a = smartgb * Constants.ABekl + smartgr * Constants.ARest + smartgbu * Constants.ABuch smart_bew_b = smartgb * Constants.BBekl + smartgr * Constants.BRest + smartgbu * Constants.BBuch smart_bew_c = smartgb * Constants.CBekl + smartgr * Constants.CRest + smartgbu * Constants.CBuch smart_bew_d = smartgb * Constants.DBekl + smartgr * Constants.DRest + smartgbu * Constants.DBuch smart_bew_e = smartgb * Constants.EBekl + smartgr * Constants.ERest + smartgbu * Constants.EBuch smart_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] smart_t_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] smart_nwa = [smart_bew_a, smart_bew_b, smart_bew_c, smart_bew_d, smart_bew_e] smart_nwa_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if smart_nwa[i] > smart_nwa[j]: smart_nwa_rei[i], smart_nwa_rei[j] = smart_nwa_rei[j], smart_nwa_rei[i] smart_nwa[i], smart_nwa[j] = smart_nwa[j], smart_nwa[i] smart_template[i], smart_template[j] = smart_template[j], smart_template[i] player.smart_max = smart_nwa_rei[0] wurzela = math.sqrt(48 ** 2 + 33 ** 2 + 19 ** 2) wurzelb = math.sqrt(19 ** 2 + 28 ** 2 + 53 ** 2) wurzelc = math.sqrt(20 ** 2 + 52 ** 2 + 28 ** 2) wurzeld = math.sqrt(30 ** 2 + 33 ** 2 + 37 ** 2) wurzele = math.sqrt(48 ** 2 + 21 ** 2 + 31 ** 2) smart_best_be = 0.48 * smartgb / wurzele smart_schl_be = 0.19 * smartgb / wurzelb smart_best_re = 0.52 * smartgr / wurzelc smart_schl_re = 0.21 * smartgr / wurzele smart_best_bu = 0.53 * smartgbu / wurzelb smart_schl_bu = 0.19 * smartgbu / wurzela smarta_abst_best = math.sqrt( (smartgb * Constants.ABekl / wurzela - smart_best_be) ** 2 + (smartgr * Constants.ARest / wurzela - smart_best_re) ** 2 + ( smartgbu * Constants.ABuch / wurzela - smart_best_bu) ** 2) smarta_abst_schl = math.sqrt( (smartgb * Constants.ABekl / wurzela - smart_schl_be) ** 2 + (smartgr * Constants.ARest / wurzela - smart_schl_re) ** 2 + ( smartgbu * Constants.ABuch / wurzela - smart_schl_bu) ** 2) smartb_abst_best = math.sqrt( (smartgb * Constants.BBekl / wurzelb - smart_best_be) ** 2 + (smartgr * Constants.BRest / wurzelb - smart_best_re) ** 2 + ( smartgbu * Constants.BBuch / wurzelb - smart_best_bu) ** 2) smartb_abst_schl = math.sqrt( (smartgb * Constants.BBekl / wurzelb - smart_schl_be) ** 2 + (smartgr * Constants.BRest / wurzelb - smart_schl_re) ** 2 + ( smartgbu * Constants.BBuch / wurzelb - smart_schl_bu) ** 2) smartc_abst_best = math.sqrt( (smartgb * Constants.CBekl / wurzelc - smart_best_be) ** 2 + (smartgr * Constants.CRest / wurzelc - smart_best_re) ** 2 + ( smartgbu * Constants.CBuch / wurzelc - smart_best_bu) ** 2) smartc_abst_schl = math.sqrt( (smartgb * Constants.CBekl / wurzelc - smart_schl_be) ** 2 + (smartgr * Constants.CRest / wurzelc - smart_schl_re) ** 2 + ( smartgbu * Constants.CBuch / wurzelc - smart_schl_bu) ** 2) smartd_abst_best = math.sqrt( (smartgb * Constants.DBekl / wurzeld - smart_best_be) ** 2 + (smartgr * Constants.DRest / wurzeld - smart_best_re) ** 2 + ( smartgbu * Constants.DBuch / wurzeld - smart_best_bu) ** 2) smartd_abst_schl = math.sqrt( (smartgb * Constants.DBekl / wurzeld - smart_schl_be) ** 2 + (smartgr * Constants.DRest / wurzeld - smart_schl_re) ** 2 + ( smartgbu * Constants.DBuch / wurzeld - smart_schl_bu) ** 2) smarte_abst_best = math.sqrt( (smartgb * Constants.EBekl / wurzele - smart_best_be) ** 2 + (smartgr * Constants.ERest / wurzele - smart_best_re) ** 2 + ( smartgbu * Constants.EBuch / wurzele - smart_best_bu) ** 2) smarte_abst_schl = math.sqrt( (smartgb * Constants.EBekl / wurzele - smart_schl_be) ** 2 + (smartgr * Constants.ERest / wurzele - smart_schl_re) ** 2 + ( smartgbu * Constants.EBuch / wurzele - smart_schl_bu) ** 2) smclosa = smarta_abst_schl / (smarta_abst_schl + smarta_abst_best) smclosb = smartb_abst_schl / (smartb_abst_schl + smartb_abst_best) smclosc = smartc_abst_schl / (smartc_abst_schl + smartc_abst_best) smclosd = smartd_abst_schl / (smartd_abst_schl + smartd_abst_best) smclose = smarte_abst_schl / (smarte_abst_schl + smarte_abst_best) smart_top = [smclosa, smclosb, smclosc, smclosd, smclose] smart_top_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if smart_top[i] > smart_top[j]: smart_top_rei[i], smart_top_rei[j] = smart_top_rei[j], smart_top_rei[i] smart_top[i], smart_top[j] = smart_top[j], smart_top[i] smart_t_template[i], smart_t_template[j] = smart_t_template[j], smart_t_template[i] player.smart_t_max = smart_top_rei[0] return dict(smart_template0=smart_template[0], smart_template1=smart_template[1], smart_template2=smart_template[2], smart_template3=smart_template[3], smart_template4=smart_template[4], smart_t_template0=smart_t_template[0], smart_t_template1=smart_t_template[1], smart_t_template2=smart_t_template[2], smart_t_template3=smart_t_template[3], smart_t_template4=smart_t_template[4] ) class SwingEingabe(Page): form_model = 'player' form_fields = ['Swing_Bekleidung', 'Swing_Restaurant', 'Swing_Buch', 'swing_maxi'] @staticmethod def error_message(player, values): print('values is', values) if values['swing_maxi'] == 1 and values['Swing_Bekleidung'] != 100: return 'Swing_Bekleidung muss mit 100 Punkten bewerten werden' if values['swing_maxi'] == 2 and values['Swing_Restaurant'] != 100: return 'Swing_Restaurant muss mit 100 Punkten bewerten werden' if values['swing_maxi'] == 3 and values['Swing_Buch'] != 100: return 'Swing_Buch muss mit 100 Punkten bewerten werden' class SwingResults(Page): form_model = 'player' form_fields = ['swing_vertrauen', 'swing_verstaendlich', 'swing_nwa_zufrieden', 'swing_top_zufrieden'] @staticmethod def vars_for_template(player): summe = player.Swing_Bekleidung + player.Swing_Restaurant + player.Swing_Buch swinggb = player.Swing_Bekleidung / summe swinggr = player.Swing_Restaurant / summe swinggbu = player.Swing_Buch / summe swing_bew_a = swinggb * Constants.ABekl + swinggr * Constants.ARest + swinggbu * Constants.ABuch swing_bew_b = swinggb * Constants.BBekl + swinggr * Constants.BRest + swinggbu * Constants.BBuch swing_bew_c = swinggb * Constants.CBekl + swinggr * Constants.CRest + swinggbu * Constants.CBuch swing_bew_d = swinggb * Constants.DBekl + swinggr * Constants.DRest + swinggbu * Constants.DBuch swing_bew_e = swinggb * Constants.EBekl + swinggr * Constants.ERest + swinggbu * Constants.EBuch player.swing_max = 'E' swing_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] swing_t_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] swing_nwa = [swing_bew_a, swing_bew_b, swing_bew_c, swing_bew_d, swing_bew_e] swing_nwa_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if swing_nwa[i] > swing_nwa[j]: swing_nwa_rei[i], swing_nwa_rei[j] = swing_nwa_rei[j], swing_nwa_rei[i] swing_nwa[i], swing_nwa[j] = swing_nwa[j], swing_nwa[i] swing_template[i], swing_template[j] = swing_template[j], swing_template[i] player.swing_max = swing_nwa_rei[0] print(swing_nwa) print(swing_nwa_rei) print(swing_template) wurzela = math.sqrt(48 ** 2 + 33 ** 2 + 19 ** 2) wurzelb = math.sqrt(19 ** 2 + 28 ** 2 + 53 ** 2) wurzelc = math.sqrt(20 ** 2 + 52 ** 2 + 28 ** 2) wurzeld = math.sqrt(30 ** 2 + 33 ** 2 + 37 ** 2) wurzele = math.sqrt(48 ** 2 + 21 ** 2 + 31 ** 2) swing_best_be = 0.48 * swinggb / wurzele swing_schl_be = 0.19 * swinggb / wurzelb swing_best_re = 0.52 * swinggr / wurzelc swing_schl_re = 0.21 * swinggr / wurzele swing_best_bu = 0.53 * swinggbu / wurzelb swing_schl_bu = 0.19 * swinggbu / wurzela swinga_abst_best = math.sqrt( (swinggb * Constants.ABekl / wurzela - swing_best_be) ** 2 + (swinggr * Constants.ARest / wurzela - swing_best_re) ** 2 + ( swinggbu * Constants.ABuch / wurzela - swing_best_bu) ** 2) swinga_abst_schl = math.sqrt( (swinggb * Constants.ABekl / wurzela - swing_schl_be) ** 2 + (swinggr * Constants.ARest / wurzela - swing_schl_re) ** 2 + ( swinggbu * Constants.ABuch / wurzela - swing_schl_bu) ** 2) swingb_abst_best = math.sqrt( (swinggb * Constants.BBekl / wurzelb - swing_best_be) ** 2 + (swinggr * Constants.BRest / wurzelb - swing_best_re) ** 2 + ( swinggbu * Constants.BBuch / wurzelb - swing_best_bu) ** 2) swingb_abst_schl = math.sqrt( (swinggb * Constants.BBekl / wurzelb - swing_schl_be) ** 2 + (swinggr * Constants.BRest / wurzelb - swing_schl_re) ** 2 + ( swinggbu * Constants.BBuch / wurzelb - swing_schl_bu) ** 2) swingc_abst_best = math.sqrt( (swinggb * Constants.CBekl / wurzelc - swing_best_be) ** 2 + (swinggr * Constants.CRest / wurzelc - swing_best_re) ** 2 + ( swinggbu * Constants.CBuch / wurzelc - swing_best_bu) ** 2) swingc_abst_schl = math.sqrt( (swinggb * Constants.CBekl / wurzelc - swing_schl_be) ** 2 + (swinggr * Constants.CRest / wurzelc - swing_schl_re) ** 2 + ( swinggbu * Constants.CBuch / wurzelc - swing_schl_bu) ** 2) swingd_abst_best = math.sqrt( (swinggb * Constants.DBekl / wurzeld - swing_best_be) ** 2 + (swinggr * Constants.DRest / wurzeld - swing_best_re) ** 2 + ( swinggbu * Constants.DBuch / wurzeld - swing_best_bu) ** 2) swingd_abst_schl = math.sqrt( (swinggb * Constants.DBekl / wurzeld - swing_schl_be) ** 2 + (swinggr * Constants.DRest / wurzeld - swing_schl_re) ** 2 + ( swinggbu * Constants.DBuch / wurzeld - swing_schl_bu) ** 2) swinge_abst_best = math.sqrt( (swinggb * Constants.EBekl / wurzele - swing_best_be) ** 2 + (swinggr * Constants.ERest / wurzele - swing_best_re) ** 2 + ( swinggbu * Constants.EBuch / wurzele - swing_best_bu) ** 2) swinge_abst_schl = math.sqrt( (swinggb * Constants.EBekl / wurzele - swing_schl_be) ** 2 + (swinggr * Constants.ERest / wurzele - swing_schl_re) ** 2 + ( swinggbu * Constants.EBuch / wurzele - swing_schl_bu) ** 2) swclosa = swinga_abst_schl / (swinga_abst_schl + swinga_abst_best) swclosb = swingb_abst_schl / (swingb_abst_schl + swingb_abst_best) swclosc = swingc_abst_schl / (swingc_abst_schl + swingc_abst_best) swclosd = swingd_abst_schl / (swingd_abst_schl + swingd_abst_best) swclose = swinge_abst_schl / (swinge_abst_schl + swinge_abst_best) swing_top = [swclosa, swclosb, swclosc, swclosd, swclose] swing_top_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if swing_top[i] > swing_top[j]: swing_top_rei[i], swing_top_rei[j] = swing_top_rei[j], swing_top_rei[i] swing_top[i], swing_top[j] = swing_top[j], swing_top[i] swing_t_template[i], swing_t_template[j] = swing_t_template[j], swing_t_template[i] player.swing_t_max = swing_top_rei[0] print(swing_top) print(swing_top_rei) print(swing_t_template) return dict(swing_template0=swing_template[0], swing_template1=swing_template[1], swing_template2=swing_template[2], swing_template3=swing_template[3], swing_template4=swing_template[4], swing_t_template0=swing_t_template[0], swing_t_template1=swing_t_template[1], swing_t_template2=swing_t_template[2], swing_t_template3=swing_t_template[3], swing_t_template4=swing_t_template[4] ) class DiVerglEinleitung(Page): pass class DiVerglEingabe1(Page): form_model = 'player' form_fields = ['Vergleiche_Bekleidung_Restaurant', 'Vergleiche_Restaurant_Bekleidung', 'Vergleiche_Bekleidung_Buch', 'Vergleiche_Buch_Bekleidung', 'Vergleiche_Restaurant_Buch', 'Vergleiche_Buch_Restaurant'] @staticmethod def error_message(player, values): print('values is', values) if values['Vergleiche_Bekleidung_Restaurant'] + values['Vergleiche_Restaurant_Bekleidung'] != 100: return 'Die Summe der Punkte des Gutscheinpaares Bekleidung & Restaurant muss muss 100 ergeben.' if values['Vergleiche_Bekleidung_Buch'] + values['Vergleiche_Buch_Bekleidung'] != 100: return 'Die Summe der Punkte des Gutscheinpaares Bekleidung & Bücher muss 100 ergeben' if values['Vergleiche_Restaurant_Buch'] + values['Vergleiche_Buch_Restaurant'] != 100: return 'Die Summe der Punkte des Gutscheinpaares Restaurant & Bücher muss 100 ergeben' if values['Vergleiche_Bekleidung_Restaurant'] == 50 == values['Vergleiche_Bekleidung_Buch'] and \ values['Vergleiche_Restaurant_Buch'] != 50: return 'Wenn der Bekleidungs- und der Restaurantgutschein gleichwertig sind sowie ebenfalls der ' \ 'Bekleidungs- und der Büchergutschein, so müssen auch der Restaurant- und der Büchergutschein ' \ 'gleichwertig sein.' if values['Vergleiche_Bekleidung_Restaurant'] < 50 and values['Vergleiche_Bekleidung_Buch'] == 50 and \ values['Vergleiche_Restaurant_Buch'] <= 50: return 'Wenn der Restaurantgutschein besser als der Bekleidungsgutschein ist sowie der Bekleidungs' \ 'gutschein und der Büchergutschein gleichwertig sind, so muss der Restaurantgutschein besser als ' \ 'der Büchergutschein sein.' if values['Vergleiche_Bekleidung_Restaurant'] > 50 and values['Vergleiche_Bekleidung_Buch'] == 50 and \ values['Vergleiche_Restaurant_Buch'] >= 50: return 'Wenn der Bekleidungsgutschein besser als der Restaurantgutschein ist sowie der Bekleidungs' \ 'gutschein und der Büchergutschein gleichwertig sind, so muss der Büchergutschein besser als ' \ 'der Restaurantgutschein sein.' if values['Vergleiche_Bekleidung_Restaurant'] > 50 and values['Vergleiche_Bekleidung_Buch'] < 50 and \ values['Vergleiche_Restaurant_Buch'] >= 50: return 'Wenn der Bekleidungsgutschein besser als der Restaurantgutschein ist sowie der Bücher' \ 'gutschein besser als der Bekleidungsgutschein ist, muss der auch Büchergutschein besser ' \ 'als der Restaurantgutschein sein.' if values['Vergleiche_Bekleidung_Restaurant'] < 50 and values['Vergleiche_Bekleidung_Buch'] > 50 and \ values['Vergleiche_Restaurant_Buch'] <= 50: return 'Wenn der Restaurantgutschein besser als der Bekleidungsgutschein ist sowie der Bekleidungs' \ 'gutschein besser als der Büchergutschein ist, muss der auch Restaurantgutschein besser ' \ 'als der Büchergutschein sein.' if values['Vergleiche_Bekleidung_Restaurant'] == 50 and values['Vergleiche_Bekleidung_Buch'] < 50 and \ values['Vergleiche_Restaurant_Buch'] >= 50: return 'Wenn der Bekleidungs- und der Restaurantgutschein gleichwertig sind sowie der Büchergutschein ' \ 'besser als der Bekleidungsgutschein ist, so muss auch der Büchergutschein besser als der ' \ 'Restaurantgutschein sein.' if values['Vergleiche_Bekleidung_Restaurant'] == 50 and values['Vergleiche_Bekleidung_Buch'] > 50 and \ values['Vergleiche_Restaurant_Buch'] <= 50: return 'Wenn der Bekleidungsgutschein und der Restaurantgutschein gleichwertig sind sowie der Bekleidungs' \ 'gutschein besser als der Büchergutschein ist, so muss der Restaurantgutschein besser als der ' \ 'Büchergutschein sein.' class DiVerglResults(Page): form_model = 'player' form_fields = ['ahp_vertrauen', 'ahp_verstaendlich', 'ahp_nwa_zufrieden', 'ahp_top_zufrieden'] @staticmethod def vars_for_template(player): a11 = 1 a21 = player.Vergleiche_Restaurant_Bekleidung / player.Vergleiche_Bekleidung_Restaurant a31 = player.Vergleiche_Buch_Bekleidung / player.Vergleiche_Bekleidung_Buch a12 = 1 / a21 a22 = 1 a32 = player.Vergleiche_Buch_Restaurant / player.Vergleiche_Restaurant_Buch a13 = 1 / a31 a23 = 1 / a32 a33 = 1 sps_1 = a11 + a21 + a31 sps_2 = a12 + a22 + a32 sps_3 = a13 + a23 + a33 b11 = a11 / sps_1 b21 = a21 / sps_1 b31 = a31 / sps_1 b12 = a12 / sps_2 b22 = a22 / sps_2 b32 = a32 / sps_2 b13 = a13 / sps_3 b23 = a23 / sps_3 b33 = a33 / sps_3 zs_1 = b11 + b12 + b13 zs_2 = b21 + b22 + b23 zs_3 = b31 + b32 + b33 g_summe = zs_1 + zs_2 + zs_3 agb = zs_1 / g_summe agr = zs_2 / g_summe agbu = zs_3 / g_summe print(agb, agr, agbu) ahp_bew_a = agb * Constants.ABekl + agr * Constants.ARest + agbu * Constants.ABuch ahp_bew_b = agb * Constants.BBekl + agr * Constants.BRest + agbu * Constants.BBuch ahp_bew_c = agb * Constants.CBekl + agr * Constants.CRest + agbu * Constants.CBuch ahp_bew_d = agb * Constants.DBekl + agr * Constants.DRest + agbu * Constants.DBuch ahp_bew_e = agb * Constants.EBekl + agr * Constants.ERest + agbu * Constants.EBuch player.swing_max = 'E' ahp_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] ahp_t_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] ahp_nwa = [ahp_bew_a, ahp_bew_b, ahp_bew_c, ahp_bew_d, ahp_bew_e] ahp_nwa_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if ahp_nwa[i] > ahp_nwa[j]: ahp_nwa_rei[i], ahp_nwa_rei[j] = ahp_nwa_rei[j], ahp_nwa_rei[i] ahp_nwa[i], ahp_nwa[j] = ahp_nwa[j], ahp_nwa[i] ahp_template[i], ahp_template[j] = ahp_template[j], ahp_template[i] player.ahp_max = ahp_nwa_rei[0] print(ahp_nwa) print(ahp_nwa_rei) print(ahp_template) wurzela = math.sqrt(48 ** 2 + 33 ** 2 + 19 ** 2) wurzelb = math.sqrt(19 ** 2 + 28 ** 2 + 53 ** 2) wurzelc = math.sqrt(20 ** 2 + 52 ** 2 + 28 ** 2) wurzeld = math.sqrt(30 ** 2 + 33 ** 2 + 37 ** 2) wurzele = math.sqrt(48 ** 2 + 21 ** 2 + 31 ** 2) ahp_best_be = 0.48 * agb / wurzele ahp_schl_be = 0.19 * agb / wurzelb ahp_best_re = 0.52 * agr / wurzelc ahp_schl_re = 0.21 * agr / wurzele ahp_best_bu = 0.53 * agbu / wurzelb ahp_schl_bu = 0.19 * agbu / wurzela ahpa_abst_best = math.sqrt( (agb * Constants.ABekl / wurzela - ahp_best_be) ** 2 + (agr * Constants.ARest / wurzela - ahp_best_re) ** 2 + ( agbu * Constants.ABuch / wurzela - ahp_best_bu) ** 2) ahpa_abst_schl = math.sqrt( (agb * Constants.ABekl / wurzela - ahp_schl_be) ** 2 + (agr * Constants.ARest / wurzela - ahp_schl_re) ** 2 + ( agbu * Constants.ABuch / wurzela - ahp_schl_bu) ** 2) ahpb_abst_best = math.sqrt( (agb * Constants.BBekl / wurzelb - ahp_best_be) ** 2 + (agr * Constants.BRest / wurzelb - ahp_best_re) ** 2 + ( agbu * Constants.BBuch / wurzelb - ahp_best_bu) ** 2) ahpb_abst_schl = math.sqrt( (agb * Constants.BBekl / wurzelb - ahp_schl_be) ** 2 + (agr * Constants.BRest / wurzelb - ahp_schl_re) ** 2 + ( agbu * Constants.BBuch / wurzelb - ahp_schl_bu) ** 2) ahpc_abst_best = math.sqrt( (agb * Constants.CBekl / wurzelc - ahp_best_be) ** 2 + (agr * Constants.CRest / wurzelc - ahp_best_re) ** 2 + ( agbu * Constants.CBuch / wurzelc - ahp_best_bu) ** 2) ahpc_abst_schl = math.sqrt( (agb * Constants.CBekl / wurzelc - ahp_schl_be) ** 2 + (agr * Constants.CRest / wurzelc - ahp_schl_re) ** 2 + ( agbu * Constants.CBuch / wurzelc - ahp_schl_bu) ** 2) ahpd_abst_best = math.sqrt( (agb * Constants.DBekl / wurzeld - ahp_best_be) ** 2 + (agr * Constants.DRest / wurzeld - ahp_best_re) ** 2 + ( agbu * Constants.DBuch / wurzeld - ahp_best_bu) ** 2) ahpd_abst_schl = math.sqrt( (agb * Constants.DBekl / wurzeld - ahp_schl_be) ** 2 + (agr * Constants.DRest / wurzeld - ahp_schl_re) ** 2 + ( agbu * Constants.DBuch / wurzeld - ahp_schl_bu) ** 2) ahpe_abst_best = math.sqrt( (agb * Constants.EBekl / wurzele - ahp_best_be) ** 2 + (agr * Constants.ERest / wurzele - ahp_best_re) ** 2 + ( agbu * Constants.EBuch / wurzele - ahp_best_bu) ** 2) ahpe_abst_schl = math.sqrt( (agb * Constants.EBekl / wurzele - ahp_schl_be) ** 2 + (agr * Constants.ERest / wurzele - ahp_schl_re) ** 2 + ( agbu * Constants.EBuch / wurzele - ahp_schl_bu) ** 2) ahpclosa = ahpa_abst_schl / (ahpa_abst_schl + ahpa_abst_best) ahpclosb = ahpb_abst_schl / (ahpb_abst_schl + ahpb_abst_best) ahpclosc = ahpc_abst_schl / (ahpc_abst_schl + ahpc_abst_best) ahpclosd = ahpd_abst_schl / (ahpd_abst_schl + ahpd_abst_best) ahpclose = ahpe_abst_schl / (ahpe_abst_schl + ahpe_abst_best) ahp_top = [ahpclosa, ahpclosb, ahpclosc, ahpclosd, ahpclose] ahp_top_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if ahp_top[i] > ahp_top[j]: ahp_top_rei[i], ahp_top_rei[j] = ahp_top_rei[j], ahp_top_rei[i] ahp_top[i], ahp_top[j] = ahp_top[j], ahp_top[i] ahp_t_template[i], ahp_t_template[j] = ahp_t_template[j], ahp_t_template[i] player.ahp_t_max = ahp_top_rei[0] print(ahp_top) print(ahp_top_rei) print(ahp_t_template) return dict(ahp_template0=ahp_template[0], ahp_template1=ahp_template[1], ahp_template2=ahp_template[2], ahp_template3=ahp_template[3], ahp_template4=ahp_template[4], ahp_t_template0=ahp_t_template[0], ahp_t_template1=ahp_t_template[1], ahp_t_template2=ahp_t_template[2], ahp_t_template3=ahp_t_template[3], ahp_t_template4=ahp_t_template[4] ) class AHPEingabe1(Page): form_model = 'player' form_fields = ['Vergleiche_Bekleidung_Restaurant', 'AHP_Auswahl1'] @staticmethod def error_message(player, values): print('values is', values) if values['Vergleiche_Bekleidung_Restaurant'] != 1 and values['AHP_Auswahl1'] == 3: return 'Sie müssen im Feld 1 eingeben, wenn die Gutscheine gleich gut sind.' if values['AHP_Auswahl1'] == 1 and values['Vergleiche_Bekleidung_Restaurant'] == 1: return 'Sie müssen im Feld einen der Werte 2, 3, 4, 5, 6, 7, 8 bzw. 9 für den besseren Gutschein eingeben.' if values['AHP_Auswahl1'] == 2 and values['Vergleiche_Bekleidung_Restaurant'] == 1: return 'Sie müssen im Feld einen der Werte 2, 3, 4, 5, 6, 7, 8 bzw. 9 für den besseren Gutschein eingeben.' class AHPEingabe2(Page): form_model = 'player' form_fields = ['Vergleiche_Bekleidung_Buch', 'AHP_Auswahl2'] @staticmethod def error_message(player, values): print('values is', values) if values['Vergleiche_Bekleidung_Buch'] != 1 and values['AHP_Auswahl2'] == 3: return 'Sie müssen im Feld 1 eingeben, wenn die Gutscheine gleich gut sind.' if values['AHP_Auswahl2'] == 1 and values['Vergleiche_Bekleidung_Buch'] == 1: return 'Sie müssen im Feld einen der Werte 2, 3, 4, 5, 6, 7, 8 bzw. 9 für den besseren Gutschein eingeben.' if values['AHP_Auswahl2'] == 2 and values['Vergleiche_Bekleidung_Buch'] == 1: return 'Sie müssen im Feld einen der Werte 2, 3, 4, 5, 6, 7, 8 bzw. 9 für den besseren Gutschein eingeben.' class AHPEingabe3(Page): form_model = 'player' form_fields = ['Vergleiche_Restaurant_Buch', 'AHP_Auswahl3'] @staticmethod def error_message(player, values): print('values is', values) if values['Vergleiche_Restaurant_Buch'] != 1 and values['AHP_Auswahl3'] == 3: return 'Sie müssen im Feld 1 eingeben, wenn die Gutscheine gleich gut sind.' if values['AHP_Auswahl3'] == 1 and values['Vergleiche_Restaurant_Buch'] == 1: return 'Sie müssen im Feld einen der Werte 2, 3, 4, 5, 6, 7, 8 bzw. 9 für den besseren Gutschein eingeben.' if values['AHP_Auswahl3'] == 2 and values['Vergleiche_Restaurant_Buch'] == 1: return 'Sie müssen im Feld einen der Werte 2, 3, 4, 5, 6, 7, 8 bzw. 9 für den besseren Gutschein eingeben.' class AHPResults(Page): form_model = 'player' form_fields = ['ahp_vertrauen', 'ahp_verstaendlich', 'ahp_zufrieden', 'ahp_schwierig'] @staticmethod def vars_for_template(player): a11 = 1 a21 = 1 a31 = 1 a32 = 1 # Vorsicht Quotienten vertauscht if player.AHP_Auswahl1 == 1: a21 = player.Vergleiche_Bekleidung_Restaurant if player.AHP_Auswahl1 == 2: a21 = 1 / player.Vergleiche_Bekleidung_Restaurant if player.AHP_Auswahl1 == 3: a21 = 1 if player.AHP_Auswahl2 == 1: a31 = player.Vergleiche_Bekleidung_Buch if player.AHP_Auswahl2 == 2: a31 = 1 / player.Vergleiche_Bekleidung_Buch if player.AHP_Auswahl2 == 3: a31 = 1 a12 = 1 / a21 a22 = 1 if player.AHP_Auswahl3 == 1: a32 = player.Vergleiche_Restaurant_Buch if player.AHP_Auswahl3 == 2: a32 = 1 / player.Vergleiche_Restaurant_Buch if player.AHP_Auswahl3 == 3: a32 = 1 a13 = 1 / a31 a23 = 1 / a32 a33 = 1 SpS1 = a11 + a21 + a31 SpS2 = a12 + a22 + a32 SpS3 = a13 + a23 + a33 b11 = a11 / SpS1 b21 = a21 / SpS1 b31 = a31 / SpS1 b12 = a12 / SpS2 b22 = a22 / SpS2 b32 = a32 / SpS2 b13 = a13 / SpS3 b23 = a23 / SpS3 b33 = a33 / SpS3 Zs1 = b11 + b12 + b13 Zs2 = b21 + b22 + b23 Zs3 = b31 + b32 + b33 GSumme = Zs1 + Zs2 + Zs3 AGB = Zs1 / GSumme AGR = Zs2 / GSumme AGBu = Zs3 / GSumme ABewA = AGB * Constants.ABekl + AGR * Constants.ARest + AGBu * Constants.ABuch ABewB = AGB * Constants.BBekl + AGR * Constants.BRest + AGBu * Constants.BBuch ABewC = AGB * Constants.CBekl + AGR * Constants.CRest + AGBu * Constants.CBuch ABewD = AGB * Constants.DBekl + AGR * Constants.DRest + AGBu * Constants.DBuch ABewE = AGB * Constants.EBekl + AGR * Constants.ERest + AGBu * Constants.EBuch if ABewA >= ABewB and ABewA >= ABewC and ABewA >= ABewD and ABewA >= ABewE: player.ahp_max = 'A' if ABewB >= ABewA and ABewB >= ABewC and ABewB >= ABewD and ABewB >= ABewE: player.ahp_max = 'B' if ABewC >= ABewA and ABewC >= ABewB and ABewC >= ABewD and ABewC >= ABewE: player.ahp_max = 'C' if ABewD >= ABewA and ABewD >= ABewB and ABewD >= ABewC and ABewD >= ABewE: player.ahp_max = 'D' if ABewE >= ABewA and ABewE >= ABewB and ABewE >= ABewC and ABewE >= ABewD: player.ahp_max = 'E' A_Best_Be = 0.5 * AGB A_Schl_Be = 0.15 * AGB A_Best_Re = 0.5 * AGR A_Schl_Re = 0.15 * AGR A_Best_Bu = 0.5 * AGBu A_Schl_Bu = 0.15 * AGBu AA_Abst_Best = math.sqrt( (AGB * Constants.ABekl - A_Best_Be) ** 2 + (AGR * Constants.ARest - A_Best_Re) ** 2 + ( AGBu * Constants.ABuch - A_Best_Bu) ** 2) AA_Abst_Schl = math.sqrt( (AGB * Constants.ABekl - A_Schl_Be) ** 2 + (AGR * Constants.ARest - A_Schl_Re) ** 2 + ( AGBu * Constants.ABuch - A_Schl_Bu) ** 2) AB_Abst_Best = math.sqrt( (AGB * Constants.BBekl - A_Best_Be) ** 2 + (AGR * Constants.BRest - A_Best_Re) ** 2 + ( AGBu * Constants.BBuch - A_Best_Bu) ** 2) AB_Abst_Schl = math.sqrt( (AGB * Constants.BBekl - A_Schl_Be) ** 2 + (AGR * Constants.BRest - A_Schl_Re) ** 2 + ( AGBu * Constants.BBuch - A_Schl_Bu) ** 2) AC_Abst_Best = math.sqrt( (AGB * Constants.CBekl - A_Best_Be) ** 2 + (AGR * Constants.CRest - A_Best_Re) ** 2 + ( AGBu * Constants.CBuch - A_Best_Bu) ** 2) AC_Abst_Schl = math.sqrt( (AGB * Constants.CBekl - A_Schl_Be) ** 2 + (AGR * Constants.CRest - A_Schl_Re) ** 2 + ( AGBu * Constants.CBuch - A_Schl_Bu) ** 2) AD_Abst_Best = math.sqrt( (AGB * Constants.DBekl - A_Best_Be) ** 2 + (AGR * Constants.DRest - A_Best_Re) ** 2 + ( AGBu * Constants.DBuch - A_Best_Bu) ** 2) AD_Abst_Schl = math.sqrt( (AGB * Constants.DBekl - A_Schl_Be) ** 2 + (AGR * Constants.DRest - A_Schl_Re) ** 2 + ( AGBu * Constants.DBuch - A_Schl_Bu) ** 2) AE_Abst_Best = math.sqrt( (AGB * Constants.EBekl - A_Best_Be) ** 2 + (AGR * Constants.ERest - A_Best_Re) ** 2 + ( AGBu * Constants.EBuch - A_Best_Bu) ** 2) AE_Abst_Schl = math.sqrt( (AGB * Constants.EBekl - A_Schl_Be) ** 2 + (AGR * Constants.ERest - A_Schl_Re) ** 2 + ( AGBu * Constants.EBuch - A_Schl_Bu) ** 2) AClosA = AA_Abst_Schl / (AA_Abst_Schl + AA_Abst_Best) AClosB = AB_Abst_Schl / (AB_Abst_Schl + AB_Abst_Best) AClosC = AC_Abst_Schl / (AC_Abst_Schl + AC_Abst_Best) AClosD = AD_Abst_Schl / (AD_Abst_Schl + AD_Abst_Best) AClosE = AE_Abst_Schl / (AE_Abst_Schl + AE_Abst_Best) if AClosA >= AClosB and AClosA >= AClosC and AClosA >= AClosD and AClosA >= AClosE: player.ahp_t_max = 'A' if AClosB >= AClosA and AClosB >= AClosC and AClosB >= AClosD and AClosB >= AClosE: player.ahp_t_max = 'B' if AClosC >= AClosA and AClosC >= AClosB and AClosC >= AClosD and AClosC >= AClosE: player.ahp_t_max = 'C' if AClosD >= AClosA and AClosD >= AClosB and AClosD >= AClosC and AClosD >= AClosE: player.ahp_t_max = 'D' if AClosE >= AClosA and AClosE >= AClosB and AClosE >= AClosC and AClosE >= AClosD: player.ahp_t_max = 'E' return dict(AHPMax=player.ahp_max, AHPTMax=player.ahp_t_max ) class TradeOffEingabe(Page): form_model = 'player' form_fields = ['TOWert1', 'TOWert2'] pass class TradeOffEingabe1(Page): form_model = 'player' form_fields = ['TO_Auswahl1', 'TOWert1'] @staticmethod def error_message(player, values): print('values is', values) if values['TO_Auswahl1'] == 1 and values['TOWert1'] <= 25: return 'Der Wert im Feld muss größer als 25 sein' if values['TO_Auswahl1'] == 2 and values['TOWert1'] >= 25: return 'Der Wert im Feld muss kleiner als 25 sein' if values['TO_Auswahl1'] == 3 and values['TOWert1'] != 25: return 'Der Wert im Feld muss gleich 25 sein' class TradeOffEingabe2(Page): form_model = 'player' form_fields = ['TO_Auswahl2', 'TOWert2'] @staticmethod def error_message(player, values): print('values is', values) if values['TO_Auswahl2'] == 1 and values['TOWert2'] <= 25: return 'Der Wert im Feld muss größer als 25 sein' if values['TO_Auswahl2'] == 2 and values['TOWert2'] >= 25: return 'Der Wert im Feld muss kleiner als 25 sein' if values['TO_Auswahl2'] == 3 and values['TOWert2'] != 25: return 'Der Wert im Feld muss gleich 25 sein' class TradeOffResults(Page): form_model = 'player' form_fields = ['trade_off_vertrauen', 'trade_off_verstaendlich', 'trade_off_nwa_zufrieden', 'trade_off_top_zufrieden'] @staticmethod def vars_for_template(player): togb = -1 / ((player.TOWert1 + 0.001) / (player.TOWert2 + 0.001) + player.TOWert1 + 1.001) - 1 / ((player.TOWert2 + 0.001) / (player.TOWert1 + 0.001) + player.TOWert2 + 1.001) + 1 togr = 1 / ((player.TOWert1 + 0.001) / (player.TOWert2 + 0.001) + player.TOWert1 + 1.001) togbu = 1 / ((player.TOWert2 + 0.001) / (player.TOWert1 + 0.001) + player.TOWert2 + 1.001) print(togb, togr, togbu) to_bew_a = togb * Constants.ABekl + togr * Constants.ARest + togbu * Constants.ABuch to_bew_b = togb * Constants.BBekl + togr * Constants.BRest + togbu * Constants.BBuch to_bew_c = togb * Constants.CBekl + togr * Constants.CRest + togbu * Constants.CBuch to_bew_d = togb * Constants.DBekl + togr * Constants.DRest + togbu * Constants.DBuch to_bew_e = togb * Constants.EBekl + togr * Constants.ERest + togbu * Constants.EBuch to_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] to_t_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] to_nwa = [to_bew_a, to_bew_b, to_bew_c, to_bew_d, to_bew_e] to_nwa_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if to_nwa[i] > to_nwa[j]: to_nwa_rei[i], to_nwa_rei[j] = to_nwa_rei[j], to_nwa_rei[i] to_nwa[i], to_nwa[j] = to_nwa[j], to_nwa[i] to_template[i], to_template[j] = to_template[j], to_template[i] print(to_nwa) print(to_nwa_rei) print(to_template) player.to_max = to_nwa_rei[0] wurzela = math.sqrt(48 ** 2 + 33 ** 2 + 19 ** 2) wurzelb = math.sqrt(19 ** 2 + 28 ** 2 + 53 ** 2) wurzelc = math.sqrt(20 ** 2 + 52 ** 2 + 28 ** 2) wurzeld = math.sqrt(30 ** 2 + 33 ** 2 + 37 ** 2) wurzele = math.sqrt(48 ** 2 + 21 ** 2 + 31 ** 2) to_best_be = 0.48 * togb / wurzele to_schl_be = 0.19 * togb / wurzelb to_best_re = 0.52 * togr / wurzelc to_schl_re = 0.21 * togr / wurzele to_best_bu = 0.53 * togbu / wurzelb to_schl_bu = 0.19 * togbu / wurzela toa_abst_best = math.sqrt( (togb * Constants.ABekl / wurzela - to_best_be) ** 2 + (togr * Constants.ARest / wurzela - to_best_re) ** 2 + (togbu * Constants.ABuch / wurzela - to_best_bu) ** 2) toa_abst_schl = math.sqrt((togb * Constants.ABekl / wurzela - to_schl_be) ** 2 + (togr * Constants.ARest / wurzela - to_schl_re) ** 2 + (togbu * Constants.ABuch / wurzela - to_schl_bu) ** 2) tob_abst_best = math.sqrt((togb * Constants.BBekl / wurzelb - to_best_be) ** 2 + (togr * Constants.BRest / wurzelb - to_best_re) ** 2 + (togbu * Constants.BBuch / wurzelb - to_best_bu) ** 2) tob_abst_schl = math.sqrt((togb * Constants.BBekl / wurzelb - to_schl_be) ** 2 + (togr * Constants.BRest / wurzelb - to_schl_re) ** 2 + (togbu * Constants.BBuch / wurzelb - to_schl_bu) ** 2) toc_abst_best = math.sqrt((togb * Constants.CBekl / wurzelc - to_best_be) ** 2 + (togr * Constants.CRest / wurzelc - to_best_re) ** 2 + (togbu * Constants.CBuch / wurzelc - to_best_bu) ** 2) toc_abst_schl = math.sqrt((togb * Constants.CBekl / wurzelc - to_schl_be) ** 2 + (togr * Constants.CRest / wurzelc - to_schl_re) ** 2 + (togbu * Constants.CBuch / wurzelc - to_schl_bu) ** 2) tod_abst_best = math.sqrt((togb * Constants.DBekl / wurzeld - to_best_be) ** 2 + (togr * Constants.DRest / wurzeld - to_best_re) ** 2 + (togbu * Constants.DBuch / wurzeld - to_best_bu) ** 2) tod_abst_schl = math.sqrt((togb * Constants.DBekl / wurzeld - to_schl_be) ** 2 + (togr * Constants.DRest / wurzeld - to_schl_re) ** 2 + (togbu * Constants.DBuch / wurzeld - to_schl_bu) ** 2) toe_abst_best = math.sqrt((togb * Constants.EBekl / wurzele - to_best_be) ** 2 + (togr * Constants.ERest / wurzele - to_best_re) ** 2 + (togbu * Constants.EBuch / wurzele - to_best_bu) ** 2) toe_abst_schl = math.sqrt((togb * Constants.EBekl / wurzele - to_schl_be) ** 2 + (togr * Constants.ERest / wurzele - to_schl_re) ** 2 + (togbu * Constants.EBuch / wurzele - to_schl_bu) ** 2) toclosa = toa_abst_schl / (toa_abst_schl + toa_abst_best) toclosb = tob_abst_schl / (tob_abst_schl + tob_abst_best) toclosc = toc_abst_schl / (toc_abst_schl + toc_abst_best) toclosd = tod_abst_schl / (tod_abst_schl + tod_abst_best) toclose = toe_abst_schl / (toe_abst_schl + toe_abst_best) to_top = [toclosa, toclosb, toclosc, toclosd, toclose] to_top_rei = ['A', 'B', 'C', 'D', 'E'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if to_top[i] > to_top[j]: to_top_rei[i], to_top_rei[j] = to_top_rei[j], to_top_rei[i] to_top[i], to_top[j] = to_top[j], to_top[i] to_t_template[i], to_t_template[j] = to_t_template[j], to_t_template[i] player.to_t_max = to_top_rei[0] print(to_top) print(to_top_rei) print(to_t_template) return dict(to_template0=to_template[0], to_template1=to_template[1], to_template2=to_template[2], to_template3=to_template[3], to_template4=to_template[4], to_t_template0=to_t_template[0], to_t_template1=to_t_template[1], to_t_template2=to_t_template[2], to_t_template3=to_t_template[3], to_t_template4=to_t_template[4] ) class PaarEinleitung(Page): pass class PaarEingabe(Page): form_model = 'player' form_fields = ['paar_A_B', 'paar_A_C', 'paar_A_D', 'paar_A_E', 'paar_B_C', 'paar_B_D', 'paar_B_E', 'paar_C_D', 'paar_C_E', 'paar_D_E', 'Auswahl_Hilfe'] @staticmethod def error_message(player, values): print('values is', values) if values['paar_A_B'] == 1 and values['paar_A_C'] == 0 and values['paar_B_C'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn C besser oder gleich A (Vergl. 2) und A besser oder gleich B (Vergl. 1) ist, so muss auch C ' \ 'besser oder gleich B (Vergl. 5) sein. Ändern Sie bitte (Vergl. 5).' if values['paar_A_B'] == 0 and values['paar_A_C'] == 1 and values['paar_B_C'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn B besser oder gleich A (Vergl. 1) und A besser oder gleich C (Vergl. 2) ist, so muss auch B ' \ 'besser oder gleich C (Vergl. 5) sein. Ändern Sie bitte (Vergl. 5).' if values['paar_A_B'] == 1 and values['paar_A_D'] == 0 and values['paar_B_D'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn D besser oder gleich A (Vergl. 3) und A besser oder gleich B (Vergl. 1) ist, so muss auch D ' \ 'besser oder gleich B (Vergl. 6) sein. Ändern Sie bitte (Vergl. 6).' if values['paar_A_B'] == 0 and values['paar_A_D'] == 1 and values['paar_B_D'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn B besser oder gleich A (Vergl. 1) und A besser oder gleich D (Vergl. 3) ist, so muss auch B ' \ 'besser oder gleich D sein (Vergl. 6). Ändern Sie bitte (Vergl. 6).' if values['paar_A_B'] == 1 and values['paar_A_E'] == 0 and values['paar_B_E'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn E besser oder gleich A (Vergl. 4) und A besser oder gleich B (Vergl. 1) ist, so muss auch E ' \ 'besser oder gleich B (Vergl. 7) sein. Ändern Sie bitte (Vergl. 7).' if values['paar_A_B'] == 0 and values['paar_A_E'] == 1 and values['paar_B_E'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn B besser oder gleich A (Vergl. 1) und A besser oder gleich E (Vergl. 4) ist, so muss auch B ' \ 'besser oder gleich E sein (Vergl. 7) sein. Ändern Sie bitte (Vergl. 7).' if values['paar_A_C'] == 1 and values['paar_A_D'] == 0 and values['paar_C_D'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn D besser oder gleich A (Vergl. 3) und A besser oder gleich C (Vergl. 2) ist, so muss auch D ' \ 'besser oder gleich C sein (Vergl. 8). Ändern Sie bitte (Vergl. 8).' if values['paar_A_C'] == 0 and values['paar_A_D'] == 1 and values['paar_C_D'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn C besser oder gleich A (Vergl. 2) und A besser oder gleich D (Vergl. 3) ist, so muss C auch ' \ 'besser oder gleich D sein (Vergl. 8). Ändern Sie bitte (Vergl. 8). ' if values['paar_A_C'] == 1 and values['paar_A_E'] == 0 and values['paar_C_E'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn E besser oder gleich A (Vergl. 4) und A besser oder gleich C (Vergl. 3) ist, so muss auch E ' \ 'besser oder gleich C sein (Vergl. 9). Ändern Sie bitte (Vergl. 9).' if values['paar_A_C'] == 0 and values['paar_A_E'] == 1 and values['paar_C_E'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn C besser oder gleich A (Vergl. 2) und A besser oder gleich E (Vergl. 4) ist, so muss auch C ' \ 'besser oder gleich E sein (Vergl. 9). Ändern Sie bitte (Vergl. 9).' if values['paar_A_D'] == 1 and values['paar_A_E'] == 0 and values['paar_D_E'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn E besser oder gleich A (Vergl. 4) und A besser oder gleich D (Vergl. 3) ist, so muss auch E ' \ 'besser oder gleich D sein (Vergl. 10). Ändern Sie bitte (Vergl. 10).' if values['paar_A_D'] == 0 and values['paar_A_E'] == 1 and values['paar_D_E'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn D besser oder gleich A (Vergl. 3) und A besser oder gleich E (Vergl. 4) ist, so muss auch D ' \ 'besser oder gleich E sein (Vergl. 10). Ändern Sie bitte (Vergl. 10).' if values['paar_B_C'] == 1 and values['paar_B_D'] == 0 and values['paar_C_D'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn D besser oder gleich B (Vergl. 6) und B besser oder gleich C (Vergl. 5) ist, so muss auch D ' \ 'besser oder gleich C sein (Vergl. 8). Ändern Sie bitte (Vergl. 8).' if values['paar_B_C'] == 0 and values['paar_B_D'] == 1 and values['paar_C_D'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn C besser oder gleich B (Vergl. 5) und B besser oder gleich D (Vergl. 6) ist, so muss auch C ' \ 'besser oder gleich D sein (Vergl. 8). Ändern Sie bitte (Vergl. 8).' if values['paar_B_D'] == 1 and values['paar_B_E'] == 0 and values['paar_D_E'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn E besser oder gleich B (Vergl. 7) und B besser oder gleich D (Vergl. 6) ist, so muss auch E ' \ 'besser oder gleich D sein (Vergl. 10). Ändern Sie bitte (Vergl. 10).' if values['paar_B_D'] == 0 and values['paar_B_E'] == 1 and values['paar_D_E'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn D besser oder gleich B (Vergl. 6) und B besser oder gleich E (Vergl. 7) ist, so muss auch D ' \ 'besser oder gleich E sein (Vergl. 10). Ändern Sie bitte (Vergl. 10).' if values['paar_B_C'] == 1 and values['paar_B_E'] == 0 and values['paar_C_E'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn E besser oder gleich B (Vergl. 7) und B besser oder gleich C (Vergl. 5) ist, so muss auch E ' \ 'besser oder gleich C sein (Vergl. 9). Ändern Sie bitte (Vergl. 9).' if values['paar_B_C'] == 0 and values['paar_B_E'] == 1 and values['paar_C_E'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn C besser oder gleich B (Vergl. 5) und B besser oder gleich E (Vergl. 7) ist, so muss auch C ' \ 'besser oder gleich E sein (Vergl. 9). Ändern Sie bitte (Vergl. 9).' if values['paar_C_D'] == 1 and values['paar_C_E'] == 0 and values['paar_D_E'] == 1 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn E besser oder gleich C (Vergl. 9) und C besser oder gleich D (Vergl. 8) ist, so muss auch E ' \ 'besser oder gleich D sein (Vergl. 10). Ändern Sie bitte (Vergl. 10).' if values['paar_C_D'] == 0 and values['paar_C_E'] == 1 and values['paar_D_E'] == 0 \ and values['Auswahl_Hilfe'] == 1: return 'Wenn D besser oder gleich C (Vergl. 8) und C besser oder gleich E (Vergl. 9) ist, so muss auch D ' \ 'besser oder gleich E sein (Vergl. 10). Ändern Sie bitte (Vergl. 10).' class PaarResults(Page): form_model = 'player' form_fields = ['paar_verstaendlich', 'paar_zufrieden', 'paar_vertrauen'] @staticmethod def vars_for_template(player): import random player.z1 = random.uniform(1, 6) player.z2 = random.uniform(1, 3) player.z3 = random.uniform(0, 100) player.z4 = random.uniform(0, 1) pos_a = player.paar_A_B + player.paar_A_C + player.paar_A_D + player.paar_A_E pos_b = 1 - player.paar_A_B + player.paar_B_C + player.paar_B_D + player.paar_B_E pos_c = 1 - player.paar_A_C + 1 - player.paar_B_C + player.paar_C_D + player.paar_C_E pos_d = 1 - player.paar_A_D + 1 - player.paar_B_D + 1 - player.paar_C_D + player.paar_D_E pos_e = 1 - player.paar_A_E + 1 - player.paar_B_E + 1 - player.paar_C_E + 1 - player.paar_D_E paar_bew = [pos_a, pos_b, pos_c, pos_d, pos_e] paar_rei = ['A', 'B', 'C', 'D', 'E'] paar_template = ['A ( Bekleidung 48%, Restaurant 33%, Bücher 19% )', 'B ( Bekleidung 19%, Restaurant 28%, Bücher 53% )', 'C ( Bekleidung 20%, Restaurant 52%, Bücher 28% )', 'D ( Bekleidung 30%, Restaurant 33%, Bücher 37% )', 'E ( Bekleidung 48%, Restaurant 21%, Bücher 31% )'] for i in [0, 1, 2, 3, 4]: for j in [0, 1, 2, 3, 4]: if paar_bew[i] > paar_bew[j]: paar_bew[i], paar_bew[j] = paar_bew[j], paar_bew[i] paar_rei[i], paar_rei[j] = paar_rei[j], paar_rei[i] paar_template[i], paar_template[j] = paar_template[j], paar_template[i] if paar_bew[0] != 4: player.paar_max = 'K' print(paar_rei) print(paar_bew) player.paar_max = paar_rei[0] return dict(paar_template0=paar_template[0], paar_template1=paar_template[1], paar_template2=paar_template[2], paar_template3=paar_template[3], paar_template4=paar_template[4], PaarMax=paar_bew[0] ) class Resultate(Page): @staticmethod def vars_for_template(player): if 1 < player.z1 <= 2: player.verfahren = 'SMART' if 1 < player.z2 <= 2: player.verlosung = player.smart_max else: player.verlosung = player.smart_max if 2 < player.z1 <= 3: player.verfahren = 'Swing' if 1 < player.z2 <= 2: player.verlosung = player.swing_max else: player.verlosung = player.swing_t_max if 3 < player.z1 <= 4: player.verfahren = 'TradeOff' if 1 < player.z2 <= 2: player.verlosung = player.to_max else: player.verlosung = player.to_t_max if 4 < player.z1 <= 5: player.verfahren = 'direkter Vergleich' if 1 < player.z2 <= 2: player.verlosung = player.ahp_max else: player.verlosung = player.ahp_t_max if 5 < player.z1 <= 6: player.verfahren = 'Paar Vergleich' player.verlosung = player.paar_max if player.verlosung == 'A': if 0 <= player.z3 < 48: player.gutschein = 'Gutschein für Bekleidungsartikel' if 48 <= player.z3 < 81: player.gutschein = 'Restaurantgutschein' if 81 <= player.z3 <= 100: player.gutschein = 'Büchergutschein' if player.verlosung == 'B': if 0 <= player.z3 < 19: player.gutschein = 'Gutschein für Bekleidungsartikel' if 19 <= player.z3 < 47: player.gutschein = 'Restaurantgutschein' if 47 < player.z3 <= 100: player.gutschein = 'Büchergutschein' if player.verlosung == 'C': if 0 <= player.z3 < 20: player.gutschein = 'Gutschein für Bekleidungsartikel' if 20 <= player.z3 < 72: player.gutschein = 'Restaurantgutschein' if 72 <= player.z3 <= 100: player.gutschein = 'Büchergutschein' if player.verlosung == 'D': if 0 <= player.z3 < 30: player.gutschein = 'Gutschein für Bekleidungsartikel' if 30 <= player.z3 < 63: player.gutschein = 'Restaurantgutschein' if 63 <= player.z3 <= 100: player.gutschein = 'Büchergutschein' if player.verlosung == 'E': if 0 <= player.z3 < 48: player.gutschein = 'Gutschein für Bekleidungsartikel' if 48 <= player.z3 < 69: player.gutschein = 'Restaurantgutschein' if 69 <= player.z3 <= 100: player.gutschein = 'Büchergutschein' if 0 <= player.z4 < 1: player.gewinner = 'Sie haben gewonnen' if 1 <= player.z4 < 2: player.gewinner = 'Sie haben leider nicht gewonnen' return dict(verfahren=player.verfahren, verlosung=player.verlosung, gutschein=player.gutschein, gewinner=player.gewinner ) #page_sequence = [Information1, Information2, PaarEinleitung, PaarEingabe, PaarResults, SmartEingabe, SmartResults, DiVerglEinleitung, DiVerglEingabe1, DiVerglResults, SwingEingabe, SwingResults, TradeOffEingabe, TradeOffResults, Resultate, Demographics] page_sequence = [Information1, Demographics]