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,
                             )