def processForm(self, REQUEST, RESPONSE): alt_ids = check_list(self.form, 'uebern', 'Fehler in Altdaten', []) if len(alt_ids) > 1: raise EE("Bitte nur einen Eintrag zur Übernahme markieren!") if alt_ids: alt = Altdaten(alt_ids[0]) else: alt = {} gs_alt = alt.get('geschlecht') if gs_alt: gs = (gs_alt=='w' and cc('gs', '2')) or (gs_alt=='m' and cc('gs', '1')) else: gs = ' ' if alt: no = "Alte Fallnummer: %(fallnummer)s, Jahr: %(jahr)s, Früherer Mitarbeiter: %(mitarbeiter)s" % alt else: no = '' str = alt.get('strasse', '') if str: for end in ('trasse', 'traße'): if str.endswith(end): i = str.index(end) str = str[:i] + 'tr.' akte = Akte() akte.init( id=Akte().getNewId(), fs=cc('fsfs', '999'), vn=alt.get('vorname', ''), na=alt.get('name', ''), gb=alt.get('geburtsdatum', ''), ort=alt.get('ort', ''), plz=alt.get('plz', ''), str=str, hsnr=alt.get('hausnummer', '').upper(), gs=gs, tl1=alt.get('telefon1', ''), tl2=alt.get('telefon2', ''), no=no, aufbew=cc('aufbew', '1'), stzbg=self.stelle['id'], lage=(config.STRASSENKATALOG and cc('lage', '0') or cc('lage', '1')), ) return self._process( title='Neue Akte anlegen', file='akteeinf', akte=akte, formname='akteform', hidden=(('stzbg', akte['stzbg']), ) )
def processForm(self, REQUEST, RESPONSE): download = self.form.get('download') plz = check_list(self.form, 'plz', 'Keine PLZ', []) if download == '1': if plz: where = "plz in (%s)" % ','.join([("'%s'" % p) for p in plz]) else: where = '' content = self.csv_gen(where) self.RESPONSE.setHeader('content-type', "text/csv; charset=iso-8859-1") self.RESPONSE.setHeader('content-disposition', 'attachment; filename=%s' % 'strassenkatalog.csv') self.RESPONSE.setBody(content) return strexport = h.FieldsetFormInputTable( name='strkatexport',action='strkatexport',method='post', hidden=(('download', '1'), ), legend='Straßenkatalog exportieren', daten=[[h.SelectItem(label='Postleitzahlen', name='plz', multiple=True, size=20, options=self.for_plz(), tip="Einträge für gewählte PLZ, oder alle Einträge", ), ]], button=h.Button(value="Herunterladen", name='op', tip="Straßenkatalog für gewählte PLZ bzw. insgesamt herunterladen", type='submit', n_col=2, ), ) res = h.Page( title='Straßenkatalog exportieren', breadcrumbs = (('Administratorhauptmenü', 'menu'), ), rows=(self.get_hauptmenu(), strexport, ), ) return res.display()
def processForm(self, REQUEST, RESPONSE): from ebkus.app.ebapi import check_list #print self.form op = self.form.get('op') rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '') if op == 'loeschen_confirmed' and rm: if rm: akten = [Akte(r) for r in rm] for a in akten: # vor dem Löschen holen! a['zda'] = a['letzter_fall'].getDate('zda') assert not a['aktueller_fall'] from ebkus.app.ebupd import removeakten anzahl_akten_geloescht, anzahl_gruppen_geloescht = removeakten(self.form) assert anzahl_akten_geloescht == len(akten), 'Fehler beim Löschen von Akten' else: raise EE('Keine Akten zum löschen markiert') geloeschte_akten = h.FieldsetDataTable( legend='Endgültig gelöschte Akten (Statistik bleibt erhalten)', headers=('Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss'), daten=[[h.String(string=akte['na']), h.String(string=akte['vn']), h.String(string=akte['gb']), h.Datum(date=akte['zda']), ] for akte in akten], ) else: geloeschte_akten = None res = h.Page( title='Akten gelöscht', breadcrumbs = (('Aministratorhauptmenü', 'menu'), ('Akten löschen', None), ), rows=(self.get_hauptmenu(), geloeschte_akten, ), ) return res.display()
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 abfragedef', self.form op = self.form.get('op') cgi_name = 'query1' assert op in (None, 'new', 'edit', 'del', 'Weiter') abfr_id = self.form.get('abfrid') if abfr_id: abfrold = ebapi.Abfrage(abfr_id) else: abfrold = None if op in ('edit', 'del'): # altes Objekt ist vorhanden, nur das wird dargestellt if not abfr_id: raise ebapi.EE('Keine ID für Abfrage') name = abfrold['name'] if op == 'del': return h.SubmitOrBack( legend='Teilmengendefinition löschen', action='statabfr', #onclick_abbrechen="window.close()", method='post', hidden=(('abfrid', abfr_id), ('file', 'rmabfr'), # wird in statabfr abgefragt --> # ebupd.rmabfr ), zeilen=("Soll Teilmengendefinition '%s' gelöscht werden?" % name, ) ).display() else: #op == 'edit': return self._process(abfrold, cgi_name) elif op == 'new': # default Objekt bauen, in Form steht nichts abfr = ebapi.Abfrage() abfr.init(zeit=time.time(), mit_id=self.mitarbeiter['id'], name='', dok='', value='', typ='statistik_teilmengen_definition', ) else: # Objekt aus den Form-Parametern bauen query_list = ebapi.check_list(self.form, cgi_name, 'Keine Query', []) #print 'QUERY_LIST for q', query_list q = Query(query_list) #print 'QUERY_STRING from q', q.get_query_string(), name=self.form.get('name', '') # name nicht prüfen, darf leer sein, solange nicht gespeichert wird if abfrold: # Solange nicht gespeichert, immer die alten Daten anzeigen zeit = abfrold['zeit'] mit_id = abfrold['mit_id'] else: zeit = time.time() mit_id = self.mitarbeiter['id'] abfr = ebapi.Abfrage() abfr.init(id=abfr_id, zeit=zeit, mit_id=mit_id, name=name, dok=self.form.get('dok', ''), value=q.get_query_string(), typ='statistik_teilmengen_definition', ) return self._process(abfr, cgi_name)
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, )
def _process_fall(self, REQUEST, RESPONSE): submitop = self.form.get('submitop') adr = check_list(self.form, 'adr', 'Keine Auswahl', []) params = self.fall_auswahl_form() welche_faelle = params['welche'] ab_jahr = params['ab_jahr'] ab_fallnummer = params['ab_fallnummer'] mitarbeiter = params['mitarbeiter'] sort_options_data = params['sort_options_data'] sort_sel = params['sort_sel'] sort_seq = params['sort_seq'] sort = params['sort'] bis_jahr = params['bis_jahr'] bis_fallnummer = params['bis_fallnummer'] ab_jahr_zda = params['ab_jahr_zda'] bis_jahr_zda = params['bis_jahr_zda'] adressen = [] if submitop == 'Anzeigen': beratungen = self.beratungen(welche=welche_faelle, stelle=self.stelle, mitarbeiter=mitarbeiter, ab_jahr=ab_jahr, ab_fallnummer=ab_fallnummer, bis_jahr=bis_jahr, bis_fallnummer=bis_fallnummer, ab_jahr_zda=ab_jahr_zda, bis_jahr_zda=bis_jahr_zda, sort=sort) #print 'BERATUNGEN', beratungen if beratungen: adressen = self._get_fall_address_data(beratungen) #print 'ADRESSEN', adressen if not adressen: raise EE('Keine Adressen für gewählte Fälle vorhanden.') self.session.data['falladressen'] = adressen else: raise EE('Keine Fälle in der Auswahl!') elif submitop: adressen = self.session.data.get('falladressen') if not adressen: raise EE('Keine Adressen, bitte neu anzeigen lassen!') if submitop == 'Markierte behalten': adressen = [a for a in adressen if a.key in adr] #adressen = [a for a in adressen if a[0][1] in adr] self.session.data['falladressen'] = adressen elif submitop == 'Markierte entfernen': adressen = [a for a in adressen if a.key not in adr] #adressen = [a for a in adressen if a[0][1] not in adr] self.session.data['falladressen'] = adressen elif submitop == 'Herunterladen': return self.send_csv(adressen, RESPONSE) else: raise EE('Fehler: Unbekannter Submit-Button') anzeige = self.get_fall_auswahl('Fallauswahl für anzuzeigende Adressen', welche_faelle, ab_jahr, ab_fallnummer, bis_jahr, bis_fallnummer, ab_jahr_zda, bis_jahr_zda, mitarbeiter, sort_options_data, sort_sel, submitop='submitop', ) hidden = (('wel', 'fall'),) res = h.FormPage( title='Adressenexport', name="adr",action="adressen",method="post", breadcrumbs = (('Hauptmenü', 'menu'), ), hidden=hidden, rows=(self.get_auswertungs_menu(), anzeige, self._get_address_list(adressen), ), ) return res.display()
def _process_gruppe(self, REQUEST, RESPONSE): submitop = self.form.get('submitop') adr = check_list(self.form, 'adr', 'Keine Auswahl', []) #gruppen_ids = [1] gruppen_ids = check_list(self.form, 'grid', 'Keine Gruppe ausgewählt', []) if gruppen_ids: # Duplikate entfernen, absteigend sortieren gruppen_ids = [int(g) for g in gruppen_ids] id_dict = dict([(id, True) for id in gruppen_ids]) gruppen_ids = id_dict.keys() gruppen_ids.sort() gruppen_ids.reverse() #print 'GRUPPEN_IDS:', gruppen_ids adressen = [] if submitop == 'Anzeigen': if gruppen_ids: adressen = self._get_gruppe_address_data(gruppen_ids) if not adressen: raise EE('Keine Adressen für gewählte Gruppe(n) vorhanden.') self.session.data['gruppenadressen'] = adressen else: raise EE('Keine Gruppe ausgewählt!') elif submitop: adressen = self.session.data.get('gruppenadressen') if not adressen: raise EE('Keine Adressen, bitte neu anzeigen lassen!') if submitop == 'Markierte behalten': #adressen = [a for a in adressen if a[0][1] in adr] adressen = [a for a in adressen if a.key in adr] self.session.data['gruppenadressen'] = adressen elif submitop == 'Markierte entfernen': #adressen = [a for a in adressen if a[0][1] not in adr] adressen = [a for a in adressen if a.key not in adr] self.session.data['gruppenadressen'] = adressen elif submitop == 'Herunterladen': return self.send_csv(adressen, RESPONSE) else: raise EE('Fehler: Unbekannter Submit-Button') anzeige = h.FieldsetInputTable( legend='Gruppenauswahl für anzuzeigende Adressen', daten=[ [h.SelectItem(name='grid', size="6", class_="listbox280", tip="Alle Gruppen, für die Sie Zugriffsrechte haben", options=self.for_gruppen(sel=gruppen_ids), sel=gruppen_ids, multiple=True, #n_col=4, nolabel=True, ), ], ], button=h.Button(value="Anzeigen", name='submitop', tip="Alle Adressen der gewählten Gruppen anzeigen", type='submit', ), ) #hidden = tuple([('grid', id) for id in gruppen_ids]) hidden = (('wel', 'gruppe'),) #print 'HIDDEN', hidden res = h.FormPage( title='Adressenexport', name="adr",action="adressen",method="post", breadcrumbs = (('Hauptmenü', 'menu'), ), hidden=hidden, rows=(self.get_auswertungs_menu(gruppenmenu=True), anzeige, self._get_address_list(adressen), ), ) return res.display()
def processForm(self, REQUEST, RESPONSE): #print self.form alter = self.form.get('alter') if alter == None: alter = config.LOESCHFRIST else: alter = check_int_not_empty( self.form, 'alter', 'Fehler im Alter in Monaten') if alter < config.LOESCHFRIST: raise EE('Löschfrist beträgt mindestens %s Monate' % config.LOESCHFRIST) aufbew = self.form.get('aufbew') if aufbew == None: aufbew = cc('aufbew', '1') else: aufbew = check_code(self.form, 'aufbew', 'aufbew', 'Fehler in Aufbewahrungskategorie') op = self.form.get('op') rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '') if op == 'Endgültig löschen' and rm: hidden = [('rmak', r) for r in rm] + [('op', 'loeschen_confirmed')] return h.SubmitOrBack( legend='Endgültig löschen', action='rmakten2', method='post', hidden=hidden, zeilen=("Sollen die markierten Akten endgültig gelöscht werden?", ) ).display() alter_und_kategorie = h.FieldsetFormInputTable( name="rmaktenanzeigen", action="rmakten", method="post", hidden = (), legend='Alter und Kategorie der zu löschenden Akten wählen', daten=[[h.SelectItem(label='Aufbewahrungskategorie', name='aufbew', options=self.for_kat('aufbew', sel=aufbew or cc('aufbew', '1')), ), h.TextItem(label='Monate seit Abschluss des letzten Falls', name='alter', value=alter or '', class_='textboxsmall', maxlength=3, tip='Mindesanzahl der Monate seit Abschluss des letzten Falls' ), ], [h.Dummy(n_col=4)], [h.Button(value="Anzeigen", name='op', tip="Akten der gewählten Kategorie und des gewählten Alters anzeigen", type='submit', n_col=4, ), ], ], ) if alter and aufbew: rmdatum = today().add_month(-(alter+1)) # damit immer mindestens die Anzahl Monate # dazwischen liegt #print 'LOESCHDATUM', rmdatum alle_faelle = FallList( where = 'zday <= %(year)s and zdam <= %(month)s and zday > 0' % rmdatum) faelle = [f for f in alle_faelle if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']] akten = h.FieldsetFormDataTable( name="rmakten", #action="abfragedef", action="rmakten", method="post", hidden = (), legend='Akten zum löschen auswählen (Statistiken bleiben erhalten)', headers=('Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss', '', 'Löschen'), daten=[[h.String(string=fall['akte__na']), h.String(string=fall['akte__vn']), h.String(string=fall['akte__gb']), h.Datum(date=fall.getDate('zda')), h.CheckItem(label='', name='rmak', value=fall['akte_id'], checked=False, tip='Hier markieren, um die Akte endgültig zu löschen', ), ] for fall in faelle], no_button_if_empty=True, button=h.Button(value="Endgültig löschen", name='op', tip="Markierte endgültig Akten löschen", type='submit', class_='buttonbig', n_col=6, ), empty_msg="Keine Akten gefunden.", ) else: akten = None res = h.Page( title='Akten löschen nach Ablauf der Löschfrist', breadcrumbs = (('Aministratorhauptmenü', 'menu'), ), rows=(self.get_hauptmenu(), alter_und_kategorie, akten, ), ) return res.display()
def processForm(self, REQUEST, RESPONSE): #print 'FORM', self.form 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 stellen_ids = [int(id) for id in check_list(self.form, 'stz', 'Keine Stelle', [self.stelle['id']])] quartal = self.form.get('quartal') if quartal: quartal = check_int_not_empty(self.form, 'quartal', 'Fehler im Quartal') if von_jahr != bis_jahr: raise EE('Quartalsauswertungen nur in einem Jahr möglich') else: quartal == None mitarbeiter, res = self.count(stellen_ids, von_jahr, bis_jahr, quartal) aktivitaets_arten = [c['code'] for c in get_codes('fuabs')] def row(name, tupl): netto, brutto = tupl row = [h.String(string=name)] for ka in aktivitaets_arten: row.append(h.String(string="%s / %s" % (netto[ka], brutto[ka]), tip='Netto/Brutto') ) return row mitarbeiter_daten = [row(m['name'], res[m['id']]) for m in mitarbeiter] stellen_row = row(', '.join([Code(s)['name'] for s in stellen_ids]), res['summe']) headers = [''] + [c['name'] for c in get_codes('fuabs')] fuer = '' if von_jahr < bis_jahr: fuer += " für %(von_jahr)s bis %(bis_jahr)s" % locals() else: fuer += " für %(bis_jahr)s" % locals() if quartal: fuer += " Quartal %(quartal)s" % locals() tabelle_mitarbeiter = h.FieldsetDataTable( legend='Zeiten für fallunabhängige Aktivitäten Mitarbeiter' + fuer, headers=headers, daten=mitarbeiter_daten, ) tabelle_stellen = h.FieldsetDataTable( legend='Zeiten für fallunabhängige Aktivitäten summiert für Stellen' + fuer, headers=headers, daten=[stellen_row], ) res = h.FormPage( name="fuaform",action="fuabsabfr",method="post", title='Auswertung fallunabhängige Aktivitäten', breadcrumbs = (('Hauptmenü', 'menu'), ), hidden = (), rows=(self.get_auswertungs_menu(), self.grundgesamtheit(von_jahr=von_jahr, bis_jahr=bis_jahr, quartal=quartal, stellen_ids=stellen_ids, legend='Jahr und Stelle wählen', submit_value='Anzeigen'), tabelle_mitarbeiter, tabelle_stellen, ), ) return res.display()
def processForm(self, REQUEST, RESPONSE): #print self.form alter = self.form.get('alter') if alter == None: alter = config.LOESCHFRIST else: alter = check_int_not_empty( self.form, 'alter', 'Fehler im Alter in Monaten') if alter < config.LOESCHFRIST: raise EE('Löschfrist beträgt mindestens %s Monate' % config.LOESCHFRIST) aufbew = self.form.get('aufbew') if aufbew == None: aufbew = cc('aufbew', '1') else: aufbew = check_code(self.form, 'aufbew', 'aufbew', 'Fehler in Aufbewahrungskategorie') op = self.form.get('op') rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '') if op == 'Endgültig löschen' and rm: hidden = [('rmak', r) for r in rm] + [('op', 'loeschen_confirmed')] return h.SubmitOrBack( legend='Endgültig löschen', action='rmakten2', method='post', hidden=hidden, zeilen=("Sollen die markierten Akten endgültig gelöscht werden?", ) ).display() alter_und_kategorie = h.FieldsetFormInputTable( name="rmaktenanzeigen", action="rmakten", method="post", hidden = (), legend='Alter und Kategorie der zu löschenden Akten wählen', daten=[[h.SelectItem(label='Aufbewahrungskategorie', name='aufbew', options=self.for_kat('aufbew', sel=aufbew or cc('aufbew', '1')), ), h.TextItem(label='Monate seit Abschluss des letzten Falls', name='alter', value=alter or '', class_='textboxsmall', maxlength=3, tip='Mindesanzahl der Monate seit Abschluss des letzten Falls' ), ], [h.Dummy(n_col=4)], [h.Button(value="Anzeigen", name='op', tip="Akten der gewählten Kategorie und des gewählten Alters anzeigen", type='submit', n_col=4, ), ], ], ) if alter and aufbew: rmdatum = today().add_month(-(alter+1)) # damit immer mindestens die Anzahl Monate # dazwischen liegt #print 'LOESCHDATUM', rmdatum #alle_faelle = FallList( # where = 'zday <= %(year)s and zdam <= %(month)s and zday > 0' # % rmdatum) alle_faelle = FallList( where = '(zday < %(year)s or (zday = %(year)s and zdam <= %(month)s)) and zday > 0' % rmdatum, order = 'zday, zdam, zdad') # Hier gab es einen Fehler (in Reinickendorf): # AttributeError: Could not resolve field 'akte__letzter_fall' for instance of 'Fall' # Daher wurde nichts zum löschen angezeigt # faelle = [f for f in alle_faelle # if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']] faelle = [] for f in alle_faelle: try: if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']: faelle.append(f) except Exception, e: t = sys.exc_info()[0] logging.exception("Interner Fehler: %s: %s", t, e) logging.exception(" Falle ohne Akte? fall_id=%s" % f['id']) akten = h.FieldsetFormDataTable( name="rmakten", #action="abfragedef", action="rmakten", method="post", hidden = (), legend='Akten zum löschen auswählen (Statistiken bleiben erhalten)', headers=('Fallnummer', 'Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss', '', 'Löschen'), daten=[[h.String(string=fall['fn']), h.String(string=fall['akte__na']), h.String(string=fall['akte__vn']), h.String(string=fall['akte__gb']), h.Datum(date=fall.getDate('zda')), h.CheckItem(label='', name='rmak', value=fall['akte_id'], checked=False, tip='Hier markieren, um die Akte endgültig zu löschen', ), ] for fall in faelle], no_button_if_empty=True, button=h.Button(value="Endgültig löschen", name='op', tip="Markierte endgültig Akten löschen", type='submit', class_='buttonbig', n_col=6, ), empty_msg="Keine Akten gefunden.", )