def processForm(self, REQUEST, RESPONSE): #print 'FORM', self.form welche = self.form.get('w') von_jahr = self.form.get('von_jahr') bis_jahr = self.form.get('bis_jahr') if bis_jahr: bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt") else: bis_jahr = today().year von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr) if von_jahr > bis_jahr: von_jahr = bis_jahr ## von_jahr = self.form.get('von_jahr') ## bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt") ## if not von_jahr or von_jahr > bis_jahr: ## von_jahr = bis_jahr # TODO ## if von_jahr <= 2006 and bis_jahr >= 2007: ## return h.Meldung(legend='Ungültige Jahresangaben', ## zeilen=('Bitte entweder nur Jahre bis 2006 (alte Bundesstatistik)', ## ' oder nur Jahre ab 2007 (neue Bundesstatistik) angeben!', ## ), ## ).display() stz = check_list(self.form, 'stz', 'Keine Stelle') item_auswahl = check_list(self.form, 'item_auswahl', 'Bitte gewünschte Auszählung ankreuzen.') teilm = self.form.get('teilm') if teilm: abfr = Abfrage(teilm) query = Query(abfr) else: query = Query() fs, jgh, jgh07 = self.check_params(von_jahr, bis_jahr, stz, item_auswahl, query) ## # jgh-Liste dabei? ## jgh = 'jgh_gesamt' in item_auswahl or query.jgh ## # fs-Liste dabei? ## fs = 'fs_gesamt' in item_auswahl or query.fs ## ############# ## # Statistik nur für Fälle, wo beide Formulare ausgefüllt sind ## # und wo bei der Bundesstatistik das Endejahr eingetragen ist. ## fs = jgh = True ## ############# ## if not jgh and not fs: ## # Diese Annahme ist falsch für Teilmengenauswertung, weil manche sich ## # auf jgh beziehen können. ## # Bei Regionen problematisch, weil dadurch die GG festgelegt wird. ## fs = True if fs: fs_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, FachstatistikList) if jgh: jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, JugendhilfestatistikList) if jgh07: jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, Jugendhilfestatistik2007List) if fs and (jgh or jgh07): # beide nötig: erzeugt wird eine Liste von Paaren (fs, jgh) für jeden Fall # für den beide Statistiken vorliegen ggl = self.join_fs_jgh_list(fs_ggl, jgh_ggl) #ggl = ggl*500 # Performance bei längeren Listen? ---> ok, 3sec bei 3000 Fälle #ggl = ggl*5000 # Performance bei längeren Listen? ---> ok, 26sec bei 30000 Fälle elif fs: ggl = fs_ggl else: ggl = jgh_ggl anzeige_gg = self.get_grundgesamtheit_anzeige(stz, von_jahr, bis_jahr, fs, jgh, jgh07, len(ggl)) if not ggl: raise EE("Keine Datensätze für die gewünschte Grundgesamtheit:" "\n\n%s\n%s" % anzeige_gg) if query.always_true(): ggl_teilm = ggl else: def qfilter(el): return query.test(el) #ggl_teilm = ggl.filter(qfilter) ggl_teilm = [el for el in ggl if(qfilter(el))] if not ggl_teilm: raise EE("Keine Datensätze für Teilmenge '%s'" % abfr['name']) return self._display_ergebnis( ggl_teilm, anzeige_gg=anzeige_gg, query=query, item_auswahl=item_auswahl, )
def processForm(self, REQUEST, RESPONSE): #print 'FORM', self.form welche = self.form.get('w') ohne_bk_raus = self.form.get('ohne_bk_raus') von_jahr = self.form.get('von_jahr') bis_jahr = self.form.get('bis_jahr') if bis_jahr: bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt") else: bis_jahr = today().year von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr) if von_jahr > bis_jahr: von_jahr = bis_jahr stz = check_list(self.form, 'stz', 'Keine Stelle') item_auswahl = check_list(self.form, 'item_auswahl', 'Bitte gewünschte Auszählung ankreuzen.') teilm = self.form.get('teilm') if teilm: abfr = Abfrage(teilm) query = Query(abfr) else: query = Query() fs, jgh, jgh07 = self.check_params(von_jahr, bis_jahr, stz, item_auswahl, query, welche) if fs: fs_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche, FachstatistikList, ohne_bk_raus) if jgh: jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche, JugendhilfestatistikList, ohne_bk_raus) if jgh07: jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche, Jugendhilfestatistik2007List, ohne_bk_raus) if fs and (jgh or jgh07): # beide nötig: erzeugt wird eine Liste von Paaren (fs, jgh) für jeden Fall # für den beide Statistiken vorliegen ggl = self.join_fs_jgh_list(fs_ggl, jgh_ggl) #ggl = ggl*500 # Performance bei längeren Listen? ---> ok, 3sec bei 3000 Fälle #ggl = ggl*5000 # Performance bei längeren Listen? ---> ok, 26sec bei 30000 Fälle elif fs: ggl = fs_ggl else: ggl = jgh_ggl anzeige_gg = self.get_grundgesamtheit_anzeige(stz, von_jahr, bis_jahr, welche, fs, jgh, jgh07, len(ggl), ohne_bk_raus) if not ggl: raise EE("Keine Datensätze für die gewünschte Grundgesamtheit:" "\n\n%s\n und %s" % (anzeige_gg[0], anzeige_gg[1])) if query.always_true(): ggl_teilm = ggl else: def qfilter(el): return query.test(el) #ggl_teilm = ggl.filter(qfilter) ggl_teilm = [el for el in ggl if(qfilter(el))] if not ggl_teilm: raise EE("Keine Datensätze für Teilmenge '%s'" % abfr['name']) return self._display_ergebnis( ggl_teilm, anzeige_gg=anzeige_gg, query=query, item_auswahl=item_auswahl, )