def processForm(self, REQUEST, RESPONSE): #print 'ADRESSEN FORM:', self.form welche = check_str_not_empty(self.form, 'wel', "Keine Exportart", 'keine') if welche == 'gruppe': return self._process_gruppe(REQUEST, RESPONSE) elif welche == 'fall': return self._process_fall(REQUEST, RESPONSE) else: return 'Keine Auswahl'
def processForm(self, REQUEST, RESPONSE): expr = check_str_not_empty(self.form, 'expr', "Kein Suchausdruck") table = check_str_not_empty(self.form, 'table', "Keine Suchklasse") if not expr: raise EE('Kein Suchausdruck') if not table: raise EE('Keine Suchklasse') if self.mitarbeiter['benr__code'] == 'bearb': # eingeschränkt auf angemeldeten Mitarbeiter mitarbeiter = self.mitarbeiter elif self.mitarbeiter['benr__code'] == 'verw': mitarbeiter = None if table == "akte": headers=('Fallnr.', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A', 'Zuständig') faelle = self.beratungen_fall(mitarbeiter, klname=expr) daten = self.get_table_daten(faelle, (('fn', 'klkarte?akid=%(akte_id)s'), 'akte__vn', 'akte__na', 'akte__gb', 'bg', 'zda', 'zuletzt_zustaendig__mit__na', ), ) legend="Suchergebnisse für: Klientenname enthält '%s'" % expr elif table == "fall": headers=('Fallnr.', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A', 'Zuständig') faelle = self.beratungen_fall(mitarbeiter, fn=expr) daten = self.get_table_daten(faelle, (('fn', 'klkarte?akid=%(akte_id)s'), 'akte__vn', 'akte__na', 'akte__gb', 'bg', 'zda', 'zuletzt_zustaendig__mit__na', ), ) legend="Suchergebnisse für: Fallnummer enthält '%s'" % expr elif table == "bezugsperson": headers=('Fallnr.', 'Vorname der Bezugsperson', 'Nachname der Bezugsperson', 'Bezug', 'Beginn', 'z.d.A', 'Zuständig') bezugspersonen = self.beratungen_bezugsperson(mitarbeiter, bzpname=expr) daten = self.get_table_daten(bezugspersonen, (('akte__letzter_fall__fn', 'klkarte?akid=%(akte_id)s'), 'vn', 'na', 'verw__name', 'akte__letzter_fall__bg', 'akte__letzter_fall__zda', 'akte__letzter_fall__zuletzt_zustaendig__mit__na', ), ) legend="Suchergebnisse für: Bezugspersonname enthält '%s'" % expr elif table == "gruppe": headers=('Gruppennr.', 'Mitarbeiter', 'Name', 'Thema', 'Art', 'Teilnehmer', '-zahl', 'Beginn', 'Ende') gruppe_list = self.beratungen_gruppe(mitarbeiter=mitarbeiter, grname=expr) daten = self.get_table_daten(gruppe_list, (('gn', 'grkarte?gruppeid=%(id)s'), 'mitarbeiternamen', 'name', 'thema', 'grtyp__name', 'teiln__name', 'tzahl', 'bg', 'e', ), ) legend = "Suchergebnisse für: Gruppenname oder -thema enthält '%s'" % expr tabelle = h.FieldsetDataTable( legend=legend, headers=headers, daten=daten, ) res = h.Page( title='Suchergebnisse', breadcrumbs = (('Hauptmenü', 'menu'), ), rows=(self.get_zurueck(), tabelle, ), ) return res.display()
def xprocessForm(self, REQUEST, RESPONSE): default_sort = ('bgy', 'fn_count', 'akte__na', 'zuletzt_zustaendig__mit__na', 'has_fachstatistik', 'has_jghstatistik') default_sort_code = '012345' # Indizes in default_sort tmpl = '<option value="%s"%s>%s</option>' # erster Wert ist Index in default_sort sort_options_data = ( (0, 'Jahr des Fallbeginns'), (1, 'Fallnummer'), (2, 'Name des Klienten'), (3, 'Name des Mitarbeiters'), (4, 'Fachstatistik vorhanden'), (5, 'Bundesstatistik vorhanden'), ) welche = check_str_not_empty(self.form, 'w', "Keine Fallart", 'laufend') sel = ' selected="selected"' welche_options = '\n'.join([tmpl % (v, v==welche and sel or '', v.capitalize()) for v in ('laufend', 'abgeschlossen', 'alle')]) title = (welche=='laufend' and 'Laufende' or welche=='abgeschlossen' and 'Abgeschlossene' or welche=='alle' and 'Alle' or '') + ' Beratungen' legend_app = '' jahr = check_int_not_empty(self.form, 'jahr', "Fehler im Jahr", '') fn_count = check_int_not_empty(self.form, 'fnc', "Fehler in laufender Nummer", '') if fn_count and not jahr: raise EE("Laufende Fallnummer nur zusammen mit Jahr") if fn_count: legend_app += ' ab Fallnummer %s-%s%s' % (fn_count, jahr, self.stelle['code']) elif jahr: legend_app += ' ab Jahr %s' % (jahr,) mit_id = check_str_not_empty(self.form, 'mitid', "Kein Mitarbeiter", '') seq = check_str_not_empty(self.form, 'seq', "Keine Sortierung", default_sort_code) seq = [int(x) for x in seq] seq_new = check_str_not_empty(self.form, 'seqn', "Keine Sortierung", '1') if seq_new: seq_new = int(seq_new) assert seq_new in seq, 'Fehler beim Sortieren' if seq_new == 1: seq.remove(1) seq.remove(0) seq = [0,1] + seq else: seq.remove(seq_new) seq = [seq_new] + seq sort_options = '\n'.join([tmpl % (c, c==seq_new and sel or '', n) for c, n in sort_options_data]) sort = tuple([default_sort[i] for i in seq]) mitarbeiter = None if self.mitarbeiter['benr__code'] == 'verw': if mit_id: mitarbeiter = Mitarbeiter(mit_id) mitarbeiter_options = (tmpl % ('', '', 'Alle') + self.for_mitarbeiter(sel=int(mit_id))) else: mitarbeiter_options = (tmpl % ('', 'selected="selected"', 'Alle') + self.for_mitarbeiter(sel=None)) elif self.mitarbeiter['benr__code'] == 'bearb': mitarbeiter = self.mitarbeiter beratungen = self.beratungen(welche=welche, stelle=self.stelle, mitarbeiter=mitarbeiter, ab_jahr=jahr, ab_fallnummer=fn_count, sort=sort) anzeige = h.FieldsetInputTable( legend='Anzuzeigende Beratungen', daten=[[h.SelectItem(label='Welche', name='w', options=welche_options, tip='Nur laufende, nur abgeschlossene, oder alle Fälle zeigen', ), h.SelectItem(label='Fallbeginn ab Jahr', name='jahr', class_='listbox45', tip='Nur Fälle ab dem gewählten Jahr zeigen', options=self.for_jahre(sel=jahr, erster_eintrag='Alle'), ), h.TextItem(label='ab laufender Nummer', name='fnc', class_='textboxmid', value=fn_count, tip='z.B. 9, 23, etc.', ), ], [self.mitarbeiter['benr__code'] == 'verw' and h.SelectItem(label='Mitarbeiter', name='mitid', tip='Nur Fälle des gewählten Mitarbeiters zeigen', options=mitarbeiter_options, ) or h.TextItem(label='Mitarbeiter', name='xxx', value=mitarbeiter['na'], readonly=True, ), h.SelectItem(label='Sortieren nach', name='seqn', tip='Wonach die Fälle sortiert sein sollen', options=sort_options, ), ], [h.Dummy(n_col=8)], [h.Button(value="Anzeigen", name='op', tip="Beratungen anzeigen", type='submit', n_col=8, ), ], ], ) #faelle = ('fn', 'vn', 'na', 'gb', 'fallbeginn', 'fallende', 'mitarbeiter', 'fs', 'jgh') report = h.FieldsetDataTable( legend=title + legend_app, headers=('Fallnr.', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A', 'Zuständig', 'FS', 'BS'), daten=[[h.Link(string=fall['fn'], url='klkarte?akid=%(akte_id)s' % fall), h.String(string=fall['akte__vn']), h.String(string=fall['akte__na']), h.String(string=fall['akte__gb']), h.Datum(date=fall.getDate('bg')), h.Datum(date=fall.getDate('zda')), h.String(string=fall['zuletzt_zustaendig__mit__na']), h.String(string=fall['has_fachstatistik']), h.String(string=fall['has_jghstatistik']), ] for fall in beratungen], ) res = h.FormPage( title=title, name='beratungen',action="abfr1",method="post", breadcrumbs = (('Hauptmenü', 'menu'), ), hidden=(("seq", ''.join([('%s' % i) for i in seq])), ), rows=(self.get_auswertungs_menu(), anzeige, report, ), ) return res.display()
def fall_auswahl_form(self): default_sort = ('bgy', 'fn_count', 'akte__na', 'zuletzt_zustaendig__mit__na', 'has_fachstatistik', 'has_jghstatistik') default_sort_code = '012345' # Indizes in default_sort tmpl = '<option value="%s"%s>%s</option>' # erster Wert ist Index in default_sort sort_options_data = ( (0, 'Jahr des Fallbeginns'), (1, 'Fallnummer'), (2, 'Name des Klienten'), (3, 'Name des Mitarbeiters'), (4, 'Fachstatistik vorhanden'), (5, 'Bundesstatistik vorhanden'), ) welche = check_str_not_empty(self.form, 'w', "Keine Fallart", 'laufend') jahr = check_int_not_empty(self.form, 'jahr', "Fehler in ab Jahr", '') fn_count = check_int_not_empty(self.form, 'fnc', "Fehler in laufender Nummer", '') bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Fehler in bis Jahr", '') bis_fn_count = check_int_not_empty(self.form, 'bis_fnc', "Fehler in bis laufender Nummer", '') ab_jahr_zda = check_int_not_empty(self.form, 'ab_jahr_zda', "Fehler in ab Jahr Abschluss", '') bis_jahr_zda = check_int_not_empty(self.form, 'bis_jahr_zda', "Fehler in ab Jahr Abschluss", '') if fn_count and not jahr: raise EE("Ab laufende Fallnummer nur zusammen mit ab Jahr") if bis_fn_count and not bis_jahr: raise EE("Bis laufende Fallnummer nur zusammen mit bis Jahr") if ab_jahr_zda or bis_jahr_zda: # in diesem Fall nur abgeschlossene Fälle welche = 'abgeschlossen' mit_id = check_str_not_empty(self.form, 'mitid', "Kein Mitarbeiter", '') seq = check_str_not_empty(self.form, 'seq', "Keine Sortierung", default_sort_code) seq = [int(x) for x in seq] seq_new = check_str_not_empty(self.form, 'seqn', "Keine Sortierung", '1') if seq_new: seq_new = int(seq_new) assert seq_new in seq, 'Fehler beim Sortieren' if seq_new == 1: seq.remove(1) seq.remove(0) seq = [0,1] + seq else: seq.remove(seq_new) seq = [seq_new] + seq sort = tuple([default_sort[i] for i in seq]) mitarbeiter = None if self.mitarbeiter['benr__code'] == 'verw': if mit_id: mitarbeiter = Mitarbeiter(mit_id) elif self.mitarbeiter['benr__code'] == 'bearb': mitarbeiter = self.mitarbeiter legend='Anzuzeigende Beratungen', return dict(welche=welche, ab_jahr=jahr, ab_fallnummer=fn_count, bis_jahr=bis_jahr, bis_fallnummer=bis_fn_count, ab_jahr_zda=ab_jahr_zda, bis_jahr_zda=bis_jahr_zda, mitarbeiter=mitarbeiter, sort_options_data=sort_options_data, sort_sel=seq_new, # index der auswahl sort_seq=seq, # liste von indices sort=sort, # tuple der sortier-felder )
def processForm(self, REQUEST, RESPONSE): expr = check_str_not_empty(self.form, "expr", "Kein Suchausdruck") table = check_str_not_empty(self.form, "table", "Keine Suchklasse") if not expr: raise EE("Kein Suchausdruck") if not table: raise EE("Keine Suchklasse") if self.mitarbeiter["benr__code"] == "bearb": # eingeschränkt auf angemeldeten Mitarbeiter mitarbeiter = self.mitarbeiter elif self.mitarbeiter["benr__code"] == "verw": mitarbeiter = None if table == "akte": headers = ("Fallnr.", "Vorname", "Name", "Geb.", "Beginn", "z.d.A", "Zuständig") faelle = self.beratungen_fall(mitarbeiter, klname=expr) daten = self.get_table_daten( faelle, ( ("fn", "klkarte?akid=%(akte_id)s"), "akte__vn", "akte__na", "akte__gb", "bg", "zda", "zuletzt_zustaendig__mit__na", ), ) legend = "Suchergebnisse für: Klientenname enthält '%s'" % expr elif table == "fall": headers = ("Fallnr.", "Vorname", "Name", "Geb.", "Beginn", "z.d.A", "Zuständig") faelle = self.beratungen_fall(mitarbeiter, fn=expr) daten = self.get_table_daten( faelle, ( ("fn", "klkarte?akid=%(akte_id)s"), "akte__vn", "akte__na", "akte__gb", "bg", "zda", "zuletzt_zustaendig__mit__na", ), ) legend = "Suchergebnisse für: Fallnummer enthält '%s'" % expr elif table == "bezugsperson": headers = ( "Fallnr.", "Vorname der Bezugsperson", "Nachname der Bezugsperson", "Bezug", "Beginn", "z.d.A", "Zuständig", ) bezugspersonen = self.beratungen_bezugsperson(mitarbeiter, bzpname=expr) daten = self.get_table_daten( bezugspersonen, ( ("akte__letzter_fall__fn", "klkarte?akid=%(akte_id)s"), "vn", "na", "verw__name", "akte__letzter_fall__bg", "akte__letzter_fall__zda", "akte__letzter_fall__zuletzt_zustaendig__mit__na", ), ) legend = "Suchergebnisse für: Bezugspersonname enthält '%s'" % expr elif table == "gruppe": headers = ("Gruppennr.", "Mitarbeiter", "Name", "Thema", "Art", "Teilnehmer", "-zahl", "Beginn", "Ende") gruppe_list = self.beratungen_gruppe(mitarbeiter=mitarbeiter, grname=expr) daten = self.get_table_daten( gruppe_list, ( ("gn", "grkarte?gruppeid=%(id)s"), "mitarbeiternamen", "name", "thema", "grtyp__name", "teiln__name", "tzahl", "bg", "e", ), ) legend = "Suchergebnisse für: Gruppenname oder -thema enthält '%s'" % expr tabelle = h.FieldsetDataTable(legend=legend, headers=headers, daten=daten) res = h.Page(title="Suchergebnisse", breadcrumbs=(("Hauptmenü", "menu"),), rows=(self.get_zurueck(), tabelle)) return res.display()
def fall_auswahl_form(self): default_sort = ( "bgy", "fn_count", "akte__na", "zuletzt_zustaendig__mit__na", "has_fachstatistik", "has_jghstatistik", ) default_sort_code = "012345" # Indizes in default_sort tmpl = '<option value="%s"%s>%s</option>' # erster Wert ist Index in default_sort sort_options_data = ( (0, "Jahr des Fallbeginns"), (1, "Fallnummer"), (2, "Name des Klienten"), (3, "Name des Mitarbeiters"), (4, "Fachstatistik vorhanden"), (5, "Bundesstatistik vorhanden"), ) welche = check_str_not_empty(self.form, "w", "Keine Fallart", "laufend") jahr = check_int_not_empty(self.form, "jahr", "Fehler in ab Jahr", "") fn_count = check_int_not_empty(self.form, "fnc", "Fehler in laufender Nummer", "") bis_jahr = check_int_not_empty(self.form, "bis_jahr", "Fehler in bis Jahr", "") bis_fn_count = check_int_not_empty(self.form, "bis_fnc", "Fehler in bis laufender Nummer", "") ab_jahr_zda = check_int_not_empty(self.form, "ab_jahr_zda", "Fehler in ab Jahr Abschluss", "") bis_jahr_zda = check_int_not_empty(self.form, "bis_jahr_zda", "Fehler in ab Jahr Abschluss", "") if fn_count and not jahr: raise EE("Ab laufende Fallnummer nur zusammen mit ab Jahr") if bis_fn_count and not bis_jahr: raise EE("Bis laufende Fallnummer nur zusammen mit bis Jahr") if ab_jahr_zda or bis_jahr_zda: # in diesem Fall nur abgeschlossene Fälle welche = "abgeschlossen" mit_id = check_str_not_empty(self.form, "mitid", "Kein Mitarbeiter", "") seq = check_str_not_empty(self.form, "seq", "Keine Sortierung", default_sort_code) seq = [int(x) for x in seq] seq_new = check_str_not_empty(self.form, "seqn", "Keine Sortierung", "1") if seq_new: seq_new = int(seq_new) assert seq_new in seq, "Fehler beim Sortieren" if seq_new == 1: seq.remove(1) seq.remove(0) seq = [0, 1] + seq else: seq.remove(seq_new) seq = [seq_new] + seq sort = tuple([default_sort[i] for i in seq]) mitarbeiter = None if self.mitarbeiter["benr__code"] == "verw": if mit_id: mitarbeiter = Mitarbeiter(mit_id) elif self.mitarbeiter["benr__code"] == "bearb": mitarbeiter = self.mitarbeiter legend = ("Anzuzeigende Beratungen",) return dict( welche=welche, ab_jahr=jahr, ab_fallnummer=fn_count, bis_jahr=bis_jahr, bis_fallnummer=bis_fn_count, ab_jahr_zda=ab_jahr_zda, bis_jahr_zda=bis_jahr_zda, mitarbeiter=mitarbeiter, sort_options_data=sort_options_data, sort_sel=seq_new, # index der auswahl sort_seq=seq, # liste von indices sort=sort, # tuple der sortier-felder )
def xprocessForm(self, REQUEST, RESPONSE): default_sort = ( "bgy", "fn_count", "akte__na", "zuletzt_zustaendig__mit__na", "has_fachstatistik", "has_jghstatistik", ) default_sort_code = "012345" # Indizes in default_sort tmpl = '<option value="%s"%s>%s</option>' # erster Wert ist Index in default_sort sort_options_data = ( (0, "Jahr des Fallbeginns"), (1, "Fallnummer"), (2, "Name des Klienten"), (3, "Name des Mitarbeiters"), (4, "Fachstatistik vorhanden"), (5, "Bundesstatistik vorhanden"), ) welche = check_str_not_empty(self.form, "w", "Keine Fallart", "laufend") sel = ' selected="selected"' welche_options = "\n".join( [tmpl % (v, v == welche and sel or "", v.capitalize()) for v in ("laufend", "abgeschlossen", "alle")] ) title = ( welche == "laufend" and "Laufende" or welche == "abgeschlossen" and "Abgeschlossene" or welche == "alle" and "Alle" or "" ) + " Beratungen" legend_app = "" jahr = check_int_not_empty(self.form, "jahr", "Fehler im Jahr", "") fn_count = check_int_not_empty(self.form, "fnc", "Fehler in laufender Nummer", "") if fn_count and not jahr: raise EE("Laufende Fallnummer nur zusammen mit Jahr") if fn_count: legend_app += " ab Fallnummer %s-%s%s" % (fn_count, jahr, self.stelle["code"]) elif jahr: legend_app += " ab Jahr %s" % (jahr,) mit_id = check_str_not_empty(self.form, "mitid", "Kein Mitarbeiter", "") seq = check_str_not_empty(self.form, "seq", "Keine Sortierung", default_sort_code) seq = [int(x) for x in seq] seq_new = check_str_not_empty(self.form, "seqn", "Keine Sortierung", "1") if seq_new: seq_new = int(seq_new) assert seq_new in seq, "Fehler beim Sortieren" if seq_new == 1: seq.remove(1) seq.remove(0) seq = [0, 1] + seq else: seq.remove(seq_new) seq = [seq_new] + seq sort_options = "\n".join([tmpl % (c, c == seq_new and sel or "", n) for c, n in sort_options_data]) sort = tuple([default_sort[i] for i in seq]) mitarbeiter = None if self.mitarbeiter["benr__code"] == "verw": if mit_id: mitarbeiter = Mitarbeiter(mit_id) mitarbeiter_options = tmpl % ("", "", "Alle") + self.for_mitarbeiter(sel=int(mit_id)) else: mitarbeiter_options = tmpl % ("", 'selected="selected"', "Alle") + self.for_mitarbeiter(sel=None) elif self.mitarbeiter["benr__code"] == "bearb": mitarbeiter = self.mitarbeiter beratungen = self.beratungen( welche=welche, stelle=self.stelle, mitarbeiter=mitarbeiter, ab_jahr=jahr, ab_fallnummer=fn_count, sort=sort ) anzeige = h.FieldsetInputTable( legend="Anzuzeigende Beratungen", daten=[ [ h.SelectItem( label="Welche", name="w", options=welche_options, tip="Nur laufende, nur abgeschlossene, oder alle Fälle zeigen", ), h.SelectItem( label="Fallbeginn ab Jahr", name="jahr", class_="listbox45", tip="Nur Fälle ab dem gewählten Jahr zeigen", options=self.for_jahre(sel=jahr, erster_eintrag="Alle"), ), h.TextItem( label="ab laufender Nummer", name="fnc", class_="textboxmid", value=fn_count, tip="z.B. 9, 23, etc.", ), ], [ self.mitarbeiter["benr__code"] == "verw" and h.SelectItem( label="Mitarbeiter", name="mitid", tip="Nur Fälle des gewählten Mitarbeiters zeigen", options=mitarbeiter_options, ) or h.TextItem(label="Mitarbeiter", name="xxx", value=mitarbeiter["na"], readonly=True), h.SelectItem( label="Sortieren nach", name="seqn", tip="Wonach die Fälle sortiert sein sollen", options=sort_options, ), ], [h.Dummy(n_col=8)], [h.Button(value="Anzeigen", name="op", tip="Beratungen anzeigen", type="submit", n_col=8)], ], ) # faelle = ('fn', 'vn', 'na', 'gb', 'fallbeginn', 'fallende', 'mitarbeiter', 'fs', 'jgh') report = h.FieldsetDataTable( legend=title + legend_app, headers=("Fallnr.", "Vorname", "Name", "Geb.", "Beginn", "z.d.A", "Zuständig", "FS", "BS"), daten=[ [ h.Link(string=fall["fn"], url="klkarte?akid=%(akte_id)s" % fall), h.String(string=fall["akte__vn"]), h.String(string=fall["akte__na"]), h.String(string=fall["akte__gb"]), h.Datum(date=fall.getDate("bg")), h.Datum(date=fall.getDate("zda")), h.String(string=fall["zuletzt_zustaendig__mit__na"]), h.String(string=fall["has_fachstatistik"]), h.String(string=fall["has_jghstatistik"]), ] for fall in beratungen ], ) res = h.FormPage( title=title, name="beratungen", action="abfr1", method="post", breadcrumbs=(("Hauptmenü", "menu"),), hidden=(("seq", "".join([("%s" % i) for i in seq])),), rows=(self.get_auswertungs_menu(), anzeige, report), ) return res.display()