def _customize_item(self, item): if fs_customize.deaktiviert(item.name): return None if fs_customize.jokerfeld(item.name): feld = fs_customize.fd[item.name] kat_code = feld['kat_code'] if kat_code: #multiple = feld['verwtyp'] == cc('verwtyp', 'm') multiple = fs_customize.multifeld(item.name) if fs_customize.jokerfeld_eigenstaendig(item.name): self._legend = feld['name'] item.label = '' else: item.label = feld['name'] if multiple: item.multiple = True item.size = 8 if self._fs: # fachstat Objekt vorhanden, wir sind in updfs print 'FS CUSTOMIZE', self._fs[item.name], type(self._fs[item.name]) item.options = self.for_kat(kat_code, self._fs[item.name]) elif multiple: # initialisieren item.options = self.for_kat(kat_code, None) else: item.options = self.for_kat(kat_code, ' ') ## try: ## item.label = '>>' + item.label ## except: ## pass return item
def processForm(self, REQUEST, RESPONSE): fsid = self.form.get('fsid') fallid = self.form.get('fallid') if fsid: fs = Fachstatistik(fsid) elif fallid: fall = Fall(fallid) fs_list = fall['fachstatistiken'] if not fs_list: raise EE('Noch keine Fachstatistik für den Fall vorhanden.') else: fs = fs_list[-1] # müsste eigentlich immer nur eine sein ... else: self.last_error_message = "Keine ID für die Fachstatistik erhalten" return self.EBKuSError(REQUEST, RESPONSE) joker_felder = ('joka1', 'joka2', 'joka3', 'joka4', 'jokf5', 'jokf6', 'jokf7', 'jokf8',) # Für den Fall, dass ein Joker aktiviert wird und Fachstatistik # bereits vorhanden ist. # Diese Lösung führt dazu, dass alte Statistiken nicht mehr # abspeicherbar sind, wenn man keinen Wert einträgt. Das ist aber # akzeptabel. fsjok = {} # Ersatzobjekt, da echtem fs keine Werte zugewiesen werden dürfen for f in joker_felder: print 'FS: ', f, fs[f], fs_customize.multifeld(f) if fs[f] == None and not fs_customize.multifeld(f): print 'FS SINGLE: ', f, fs[f] fsjok[f] = ' ' # leere, selektierte Option, es muss aktiv ausgewählt werden else: print 'FS MULTI: ', f, fs[f] fsjok[f] = fs[f] return self._process(title='Fachstatistik ändern', file='updfs', fs=fs, fsjok=fsjok, )
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, )