def _get_ort_zusatz_items(self, data): "Optionale, konfigurierbare Felder für Klientendaten readonly" from ebkus.html.strkat import get_strasse items = [h.DummyItem(), h.DummyItem()] strasse = get_strasse(data) if strasse: items_dict = {'bezirk': h.TextItem(label='Bezirk', tip='Bezirk', value=strasse.get('bezirk',''), readonly=True, ), 'ortsteil': h.TextItem(label='OT', tip='Ortsteil', value=strasse.get('ortsteil', ''), readonly=True, ), 'samtgemeinde': h.TextItem(label='SG', tip='Samtgemeinde', value=strasse.get('samtgemeinde', ''), readonly=True, ), } zusatzfelder = [k for k in config.STRASSENSUCHE.split() if k != 'ort'] ## if strasse.get('samtgemeinde') == strasse['ort']: ## if 'samtgemeinde' in zusatzfelder: ## zusatzfelder.remove('samtgemeinde') if len(zusatzfelder) == 1: items[0] = items_dict[zusatzfelder[0]] elif len(zusatzfelder) > 1: items[0] = items_dict[zusatzfelder[0]] items[1] = items_dict[zusatzfelder[1]] return items
def regional_abgleich(self): if config.STRASSENKATALOG: akte_list = AkteList(where='') from ebkus.html.strkat import get_strasse count = 0 def fs_iter(akte): for fall in akte['faelle']: for fs in fall['fachstatistiken']: yield fs for a in akte_list: strasse = get_strasse(a) if strasse: count += 1 upd = {} for f in ('ort', 'plz', 'ortsteil', 'bezirk', 'samtgemeinde', 'plraum'): upd[f]= strasse[f] for fs in fs_iter(a): fs.update(upd) a.update({'plraum': strasse['plraum']}) else: # dieser Fall ist schon durch planungsr_ort_plz_kopieren() geregelt pass logging.info("Abgleich mit dem Strassenkatalog %s mal (aus %s) gelungen" % (count, len(akte_list)))
def _get_adress_data(jgh): """Holt Adressdaten erg鋘zt um Info aus dem Strassenkatalog falls vorhanden. Zur Zeit nur aus Akte, also Klient selber. Evt. auch aus Bezugsperson, aber nicht klar wie. Klient k鰊nte allein wohnen, o�. Es werden nur Adressen herangezogen, wenn es eine 5-stellige PLZ und einen Eintrag f黵 den Ort gibt. """ # def daten_ausreichend(data): # if not re.match(r'^\d{5,5}$', data['plz']): # Nur korrekt geformte plz verwenden. # data['plz'] = '' # if not data['plz'] or not data['ort']: # Ohne korrekte plz und ort kann 'wohnt ausserhalb' nicht best鋞igt werden. # return False def data_from_obj(obj): data = dict( hsnr=obj.get('hsnr', ''), str=obj.get('str', ''), plz=obj.get('plz', ''), ort=obj.get('ort', ''), ortsteil=obj.get('ortsteil', ''), samtgemeinde=obj.get('samtgemeinde', ''), bezirk=obj.get('bezirk', ''), plraum=obj.get('plraum', ''), ) return data # update nimmt keine keyword-Argumente in python 2.3: # data.update(hsnr=obj['hsnr'], str=obj['str'], plz=obj['plz'], ort=obj['ort'], plraum=obj['plraum']) # data.update(d) # d = (hsnr=obj['hsnr'], str=obj['str'], plz=obj['plz'], ort=obj['ort'], plraum=obj['plraum']) # for k in data.keys(): # v = obj.get(k) # if v: # data[k] = v akte = jgh['fall__akte'] if akte: adressquelle = akte data = data_from_obj(adressquelle) # passiert alles sp鋞er: # if not daten_ausreichend(data): # return None # for art in ('Mutter', 'Vater',): # for bp in akte['bezugspersonen']: # if bp['verw__name'] == art: if config.STRASSENKATALOG: strasse = get_strasse(adressquelle) data.update(strasse) data['fall_fn'] = jgh['fall_fn'] return data return None
def get_anschrift(self, data, force_strkat=None): from ebkus.html.strkat import get_strasse if force_strkat != None: strkat_on = force_strkat else: strkat_on = (data.get('lage') == cc('lage', '0')) n_col = 3 # eine Spalte mehr wg. icons such_icon = h.Icon(href="javascript:view_strkat()", #href="javascript:open('strkat','Strassensuche')", tip="Passende Einträge im Straßenkatalog suchen", icon="/ebkus/ebkus_icons/strkatview_button.jpg", ) strkat_ein_aus = h.CheckItem(label='Straßenkatalog verwenden', tip='Häkchen entfernen, um Adresse ohne Abgleich mit dem Straßenkatalog einzugeben', name='strkat_on', value=1, checked=strkat_on, onClick="javascript:warn_kein_strkat()", n_label=2, n_col=n_col, ) reset_icon = h.Icon(#href="strkat", href="javascript:reset_strkat()", #href="javascript:open('strkat','Strassensuche')", tip="Adressfelder leeren", icon="/ebkus/ebkus_icons/neu_button.gif", ) str = h.TextItem(label='Straße', name='str', value=data['str'], tip='Straße', icon=reset_icon, ) hsnr = h.TextItem(label='Hausnummer', name='hsnr', value=data['hsnr'], tip='Hausnummer', n_col=n_col, ) plz = h.TextItem(label='Postleitzahl', name='plz', value=data['plz'], tip="Postleitzahl", n_col=n_col, ) ort = h.TextItem(label='Ort', name='ort', value=data['ort'], tip="Wohnort", n_col=n_col, ) if strkat_on: strasse = get_strasse(data) ortsteil = h.TextItem(label='Ortsteil', name='ortsteil', value=strasse.get('ortsteil', ''), tip="Ortsteil", n_col=n_col, ) bezirk = h.TextItem(label='Bezirk', name='bezirk', value=strasse.get('bezirk', ''), n_col=n_col, ) samtgemeinde = h.TextItem(label='Samtgemeinde', name='samtgemeinde', tip="Samtgemeinde", value=strasse.get('samtgemeinde', ''), n_col=n_col, ) # TODO klären, ob die 0 nicht ganz weg kann. # wird in setAdresse eingesetzt, wenn kein planungsr angegeben wurde planungsr_value = data.get('plraum', '') if planungsr_value == '0': planungsr_value = '' if isinstance(data, Akte): planungsr = h.TextItem(label='Planungsraum', name='plraum', value=planungsr_value, tip="Der Planungsraum des Klienten", n_col=n_col, ) else: planungsr = h.DummyItem(n_col=n_col,) if config.STRASSENKATALOG: items = (strkat_ein_aus,) else: items = () items += (str, hsnr, plz, ort,) if config.STRASSENKATALOG and strkat_on: zusatzfelder = [f for f in config.STRASSENSUCHE.split() if f != 'ort'] for f in zusatzfelder: if f == 'bezirk': items += (bezirk,) if f == 'ortsteil': items += (ortsteil,) if f == 'samtgemeinde': items += (samtgemeinde,) else: items += (planungsr,) # Suche hinter das letzte item if config.STRASSENKATALOG: items[-1].icon = such_icon items[-1].n_col = 2 anschrift = h.FieldsetInputTable( # tip überdeckt die tips der einzelnen Elemente in der Statuszeile ## tip="Anfangsbuchstaben in einem oder " ## "mehreren Feldern genügen für eine Suche!", legend = 'Anschrift', daten = [[i] for i in items]) return anschrift
def _get_strkat_ortsangabe(self, key): strasse = self.get('strasse') if strasse == None: from ebkus.html.strkat import get_strasse strasse = self['strasse'] = get_strasse(self) return strasse.get(key)
def processForm(self, REQUEST, RESPONSE): fallid = self.form.get('fallid') if not fallid: raise EE('Erstellen einer Fachstatistik nur für einen Fall moeglich.') fall = Fall(fallid) akte = fall['akte'] geschlecht = akte['gs'] if not geschlecht: raise EE("Bitte zuerst das Geschlecht in die Klientenkarte eintragen!") # Ich kanns mir nicht anders vorstellen: if akte['aktueller_fall']: assert fall['id'] == akte['aktueller_fall']['id'] == akte['letzter_fall']['id'] # das geht nicht immer weil Gleichheit nicht richtig definiert ist #assert fall == akte['letzter_fall'] == akte['aktueller_fall'] leistungen = fall['leistungen'] jahresl = ebapi.FachstatistikList(where = "fall_fn = '%s'" % fall['fn']) if jahresl: raise EE('Fachstatistik für den Fall schon vorhanden') fs = Fachstatistik() # Alter relativ zum Fallbeginn alter = calc_age(akte['gb'], fall.getDate('bg')) def altersgruppe(): ag = cc('fsag','999') try: ag = bcode('fsag', alter)['id'] except: pass # kein bereich gefunden return ag def altersgruppeeltern(verwcode): ag = cc('fsagel','999') try: for b in akte['bezugspersonen']: if b['verw__code'] == verwcode: if b['gb']: alter = calc_age(b['gb'], fall.getDate('bg')) ag = bcode('fsagel', alter)['id'] except: pass # kein valides Geburtsdatum gefunden return ag if config.STRASSENKATALOG: strasse = get_strasse(akte) else: strasse = {} fs.init( id=Fachstatistik().getNewId(), mit_id=fall['zustaendig__mit_id'], fall_id=fall['id'], fall_fn=fall['fn'], jahr=str(today().year), stz=akte['stzbg'], plraum=akte['plraum'], ort=akte['ort'], plz=akte['plz'], ortsteil=strasse.get('ortsteil', ''), bezirk=strasse.get('bezirk', ''), samtgemeinde=strasse.get('samtgemeinde', ''), gs=akte['gs'], ag=altersgruppe(), agkm=altersgruppeeltern('1'), # code klerv für Mutter agkv=altersgruppeeltern('2'), # code klerv für Vater fs=akte['fs'], anmprobleme=None, kindprobleme=None, elternprobleme=None, ) fs['eleistungen'] = ' '.join([str(leist['le']) for leist in leistungen]) single_kat_felder = ('zm', 'qualij', 'hkm', 'hkv', 'bkm', 'bkv', 'qualikm', 'qualikv', 'ba1', 'ba2', 'pbe', 'pbk', ) for f in single_kat_felder: fs[f] = ' ' # leere, selektierte Option, es muss aktiv ausgewählt werden # falls unter 14 Beschäftigung vorbelegen try: if alter < 14: fs['qualij'] = cc('fsqualij', '7') except: pass anm = fall['anmeldung'] if anm: fs['zm'] = anm[0]['zm'] joker_felder = ('joka1', 'joka2', 'joka3', 'joka4', 'jokf5', 'jokf6', 'jokf7', 'jokf8',) for f in joker_felder: if fs_customize.multifeld(f): fs[f] = None else: fs[f] = ' ' # leere, selektierte Option, es muss aktiv ausgewählt werden termin_felder = ('kkm', 'kkv', 'kki', 'kpa', 'kfa', 'ksoz', 'kleh', 'kerz', 'kkonf', 'kson', 'kat',) if config.BERATUNGSKONTAKTE and not config.BERATUNGSKONTAKTE_BS: from ebkus.html.beratungskontakt import get_fs_kontakte get_fs_kontakte(fall, fs) else: for f in termin_felder: fs[f] = 0 #print '***********FSNEU', fs return self._process(title='Neue Fachstatistik erstellen', file='fseinf', fs=fs, )