def beratungen_bezugsperson(self, mitarbeiter=None, bzpname=None): join=[('zustaendigkeit', 'zustaendigkeit.fall_id=fall.id'), ('akte', 'bezugsperson.akte_id=akte.id'), ('fall', 'fall.akte_id=akte.id'), ('mitarbeiter', 'zustaendigkeit.mit_id=mitarbeiter.id')] # nur die eigene Stelle where = "akte.stzbg=%s" % self.stelle['id'] # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist where += """ and fall.zday = zustaendigkeit.ey and fall.zdam = zustaendigkeit.em and fall.zdad = zustaendigkeit.ed""" if bzpname: expr = escape('%' + bzpname + '%') where += " and (bezugsperson.vn like %s or bezugsperson.na like %s)" % \ (expr, expr) if mitarbeiter: where += " and mitarbeiter.id = %s" % mitarbeiter['id'] bezugsperson_list = BezugspersonList( where=where, join=join, ) sort = ('na', 'vn', 'bezugsperson__akte__letzter_fall__bgy', 'bezugsperson__akte__letzter_fall__bgm', 'bezugsperson__akte__letzter_fall__bgd', ) bezugsperson_list.sort(*sort) return bezugsperson_list
def beratungen_gruppe(self, welche=None, mitarbeiter=None, stelle=None, ab_jahr=None, grname=None): join=[('mitarbeitergruppe', 'gruppe.id=mitarbeitergruppe.gruppe_id'), ('mitarbeiter', 'mitarbeitergruppe.mit_id=mitarbeiter.id')] # nur die eigene Stelle where = [] if stelle: where.append("gruppe.stz=%s" % stelle['id']) if ab_jahr: where.append("gruppe.bgy>=%s" % ab_jahr) if mitarbeiter: where.append("mitarbeiter.id=%s" % mitarbeiter['id']) if grname: expr = escape('%' + grname + '%') where.append("(gruppe.name like %s or gruppe.thema like %s)" % \ (expr, expr)) if welche=='laufend': where.append('gruppe.ey=0') elif welche=='abgeschlossen': where.append('gruppe.ey>0') gruppe_list = GruppeList( where=' and '.join(where), join=join, ) sort = ('bgy', 'bgm', 'bgd', 'name') gruppe_list.sort(*sort) return gruppe_list
def beratungen_fall(self, mitarbeiter=None, klname=None, klvorname=None, klnachname=None, fn=None, sort=()): join=[('zustaendigkeit', 'zustaendigkeit.fall_id=fall.id'), ('akte', 'fall.akte_id=akte.id'), ('mitarbeiter', 'zustaendigkeit.mit_id=mitarbeiter.id')] # nur die eigene Stelle where = "akte.stzbg=%s" % self.stelle['id'] # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist where += """ and fall.zday = zustaendigkeit.ey and fall.zdam = zustaendigkeit.em and fall.zdad = zustaendigkeit.ed""" if klname: expr = escape('%' + klname + '%') where += " and (akte.vn like %s or akte.na like %s)" % \ (expr, expr) if klvorname: expr = escape('%' + klvorname + '%') where += " and (akte.vn like %s)" % (expr,) if klnachname: expr = escape('%' + klnachname + '%') where += " and (akte.na like %s)" % (expr,) if klname or klvorname or klnachname: sort = ('akte__na', 'akte__vn', 'bgy', 'bgm', 'bgd') if fn: expr = escape('%' + fn + '%') where += " and fall.fn like %s" % expr sort = ('bgy', 'fn_count') if mitarbeiter: where += " and mitarbeiter.id = %s" % mitarbeiter['id'] fall_list = FallList( where=where, join=join, ) fall_list.sort(*sort) return fall_list
def get_strassen_list(form, exact=False): """Rückgabe: Exception: bei Fehlern in den Suchstrings None: Keine Suchstrings Sonst: die Liste der Ergebnisse, die leer sein kann""" #print 'GET_STRASSEN_LIST FORM', form if exact: joker = '' else: joker = '%' str_id = form.get('strid') str_felder = ('ort', 'plz', 'bezirk', 'samtgemeinde', 'ortsteil') where = [] if str_id: where.append("id = %s" % str_id) for f in str_felder: val = form.get(f, '') if val: where.append("%s like %s" % (f, escape(val + joker))) str = check_strasse(form.get('str', '')) if str: where.append("name like %s" % (escape(str + joker))) hsnr = check_hausnr(form.get('hsnr', '')) if hsnr.startswith('-'): # ausdrücklich keine Hausnummer where.append("von IS NULL and bis IS NULL") elif hsnr: gu = split_hausnummer(hsnr)[2] where.append("(von <= '%s' or von IS NULL)" % hsnr) where.append("(bis >= '%s' or bis IS NULL)" % hsnr) where.append("(gu = '%s' or gu IS NULL)" % gu) strassen_list = [] if where: wherestr = ' and '.join(where) #print 'GET_STRASSEN_LIST WHERE', where strassen_list = StrassenkatalogNeuList(where=wherestr, order='ort, plz, name') return strassen_list else: return None
def beratungen_bezugsperson(self, mitarbeiter=None, bzpname=None): join = [ ("zustaendigkeit", "zustaendigkeit.fall_id=fall.id"), ("akte", "bezugsperson.akte_id=akte.id"), ("fall", "fall.akte_id=akte.id"), ("mitarbeiter", "zustaendigkeit.mit_id=mitarbeiter.id"), ] # nur die eigene Stelle where = "akte.stzbg=%s" % self.stelle["id"] # nur die letzte Zuständigkeit deren Endedatum gleich dem ZDA-Datum ist where += """ and fall.zday = zustaendigkeit.ey and fall.zdam = zustaendigkeit.em and fall.zdad = zustaendigkeit.ed""" if bzpname: expr = escape("%" + bzpname + "%") where += " and (bezugsperson.vn like %s or bezugsperson.na like %s)" % (expr, expr) if mitarbeiter: where += " and mitarbeiter.id = %s" % mitarbeiter["id"] bezugsperson_list = BezugspersonList(where=where, join=join) sort = ("na", "vn", "akte__letzter_fall__bgy", "akte__letzter_fall__bgm", "akte__letzter_fall__bgd") bezugsperson_list.sort(*sort) return bezugsperson_list
def beratungen_gruppe(self, welche=None, mitarbeiter=None, stelle=None, ab_jahr=None, grname=None): join = [ ("mitarbeitergruppe", "gruppe.id=mitarbeitergruppe.gruppe_id"), ("mitarbeiter", "mitarbeitergruppe.mit_id=mitarbeiter.id"), ] # nur die eigene Stelle where = [] if stelle: where.append("gruppe.stz=%s" % stelle["id"]) if ab_jahr: where.append("gruppe.bgy>=%s" % ab_jahr) if mitarbeiter: where.append("mitarbeiter.id=%s" % mitarbeiter["id"]) if grname: expr = escape("%" + grname + "%") where.append("(gruppe.name like %s or gruppe.thema like %s)" % (expr, expr)) if welche == "laufend": where.append("gruppe.ey=0") elif welche == "abgeschlossen": where.append("gruppe.ey>0") gruppe_list = GruppeList(where=" and ".join(where), join=join) sort = ("bgy", "bgm", "bgd", "name") gruppe_list.sort(*sort) return gruppe_list
def processForm(self, REQUEST, RESPONSE): vorname = self.form.get('vorname', '') name = self.form.get('name', '') fallnummer = self.form.get('fallnummer', '') rest = self.form.get('rest', '') where = [] altdaten = [] if vorname: vorname_e = escape('%' + vorname + '%') where.append("vorname like %(vorname_e)s" % locals()) if name: name_e = escape('%' + name + '%') where.append("name like %(name_e)s" % locals()) if fallnummer: fallnummer_e = escape('%' + fallnummer + '%') where.append("fallnummer like %(fallnummer_e)s" % locals()) if rest: rest_e = escape('%' + rest + '%') where.append("(strasse like %(rest_e)s or " "ort like %(rest_e)s or " "plz like %(rest_e)s or " "memo like %(rest_e)s or " "mitarbeiter like %(rest_e)s)" % locals()) if where: altdaten = AltdatenList(where=' and '.join(where), order='name, vorname, fallnummer') aktuelle_daten = [] if vorname or name: mitarbeiter = None if self.mitarbeiter['benr__code'] == 'bearb': mitarbeiter = self.mitarbeiter aktuelle_daten = self.beratungen_fall(mitarbeiter=mitarbeiter, klvorname=vorname, klnachname=name, ) auswahl_kriterien = h.FieldsetFormInputTable( name="altlist", #action="abfragedef", action="altlist", method="post", hidden = (), legend='Suchkriterien eingeben', daten=[[h.TextItem(label='Vorname enthält', name='vorname', value=vorname, tip='Groß/Kleinschreibung egal, kann mittendrin erscheinen', ), h.TextItem(label='Nachname enthält', name='name', value=name, tip='Groß/Kleinschreibung egal, kann mittendrin erscheinen', ), ], [h.TextItem(label='Alte Fallnummer enthält', name='fallnummer', value=fallnummer, tip='Groß/Kleinschreibung egal, kann mittendrin erscheinen', ), h.TextItem(label='Memo-, Mitarbeiter- oder Adressfeld enthält', name='rest', value=rest, tip='Zeichenkette erscheint in einem der Felder', ), ], [h.Dummy(n_col=4)], [h.Button(value="Anzeigen", name='op', tip="Altdaten entsprechend den Suchkriterien anzeigen", type='submit', n_col=4, ), ], ], ) daten = [] for altd in altdaten: daten.append([h.String(string=altd['vorname']), h.String(string=altd['name']), h.String(string=altd['geburtsdatum']), h.String(string=altd['geschlecht']), h.String(string=altd['jahr']), h.String(string=altd['fallnummer']), h.String(string=altd['mitarbeiter']), h.String(string="%(strasse)s %(hausnummer)s, %(plz)s %(ort)s" % altd), h.String(string="%(telefon1)s, %(telefon2)s" % altd), h.CheckItem(label='', name='uebern', value=altd['id'], checked=False, tip='Hier markieren, um die Daten in die Neuaufnahme zu übernehmen', ), ]) daten.append([h.String(string=altd['memo'], n_col=9), h.DummyItem(), ]) daten.append([h.Dummy(n_col=11), ]) altdaten_table = h.FieldsetFormDataTable( name="altdaten", #action="abfragedef", action="akteneu", method="post", hidden = (), legend='Altdaten passend zu den Suchkriterien', headers=('Vorname', 'Name', 'Geb.', 'm/w', 'Jahr', 'Fallnr.', 'Mitarbeiter', 'Adresse', 'Telefon', '', 'Übern.'), daten=daten, no_button_if_empty=False, buttons=[daten and h.Button(value="Übernehmen", name='op', tip="Markierten Datensatz für die Neuaufnahme übernehmen", type='submit', ) or None, h.Button(value="Abbrechen", name='op', tip="Zurück zur Neuaufnahme ohne Datenübernahme", type='button', onClick="go_to_url('akteneu')", ), ], empty_msg="Keine passenden Altdaten gefunden.", ) aktuelle_daten_table = h.FieldsetDataTable( legend='Klienten passend zu den Suchkriterien Vorname/Nachname', headers=('Fallnr', 'Vorname', 'Name', 'Geb.', 'Beginn', 'z.d.A.', 'Zuständig',), 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']), ] for fall in aktuelle_daten], empty_msg="Keine Klienten gefunden.", ) res = h.Page( title='Altdaten', breadcrumbs = (('Hauptmenü', 'menu'), ('Neue Akte anlegen', 'akteneu'), ), rows=(self.get_hauptmenu(), auswahl_kriterien, altdaten_table, aktuelle_daten_table, ), ) return res.display()