def processForm(self, REQUEST, RESPONSE):
     fallid = self.form.get('fallid')
     jahr = today().year
     jghiddel = self.form.get('jghiddel')
     typ = self.form.get('typ')
     if jghiddel and typ == 'jgh' and fallid:
         # alte Statistik auf neue upgraden
         upgrade_jgh(jghiddel, old2new=True)
     if not fallid:
         raise EE('Bundesstatistik nur für einen gültigen Fall')
     fall = Fall(fallid)
     ex_jgh = fall['jgh']
     if ex_jgh:
         raise EE('Bundesstatistik bereits vorhanden.')
     jgh = Jugendhilfestatistik2007()
     jgh['jghid'] = Jugendhilfestatistik2007().getNewId()
     jgh['stz'] = self.stelle['id']
     jgh['file'] = 'jgh07einf'
     jgh['mit_id'] = fall['zustaendig__mit_id']
     #jgh.setDate('bg', fall.getDate('bg'))
     jgh.setDate('bg', fall['leistungsbeginn'])
     jgh['fall_fn'] = fall['fn']
     jgh['fall_id'] = fall['id']
     jgh['jahr'] = jahr
     dmy = [int(e) for e in fall['akte__gb'].split('.')]
     dmy.reverse()
     geburtsdatum = ebapi.Date(*dmy)
     jgh['gey'] = geburtsdatum.year
     jgh['gem'] = geburtsdatum.month
     jgh['gs'] = fall['akte__gs']
     assert isinstance(jgh['gs'], (int, long))
     if config.BERATUNGSKONTAKTE:
         from ebkus.html.beratungskontakt import get_jgh_kontakte
         jgh['nbkakt'], jgh['nbkges'] = get_jgh_kontakte(fall, jahr)
     return self._formular(jgh)
    def processForm(self, REQUEST, RESPONSE):
        fallid = self.form.get('fallid')
        jghiddel = self.form.get('jghiddel')
        typ = self.form.get('typ')
        logging.info('JGHNEU %s %s %s' % (fallid, jghiddel, typ))
        if jghiddel and typ == 'jgh07' and fallid:
            logging.info('JGHNEU upgrading %s %s %s' % (fallid, jghiddel, typ))
            # neue Statistik auf alte 'upgraden'
            upgrade_jgh(jghiddel, old2new=False)
##             fall = Fall(fallid)
##             # diese Fall ist noch unzureichend initialisiert
##             jghstat = fall['jgh']
        
        if not fallid:
            raise EE('Bundesstatistik nur für einen gültigen Fall')
        fall = Fall(fallid)
        akte = fall['akte']
        fn = fall['fn']
        bgd = fall['bgd']
        bgm = fall['bgm']
        bgy = fall['bgy']
        ex_jgh = fall['jgh']
        if ex_jgh:
            raise EE('Bundesstatistik bereits vorhanden')
        alter_klient = calc_age(akte['gb'],fall.getDate('bg'))
        geschwisterfaelle = get_codes('gfall')
        stellenzeichen = get_codes('stzei')
        bezirke = get_codes('rbz')
        kreise = get_codes('kr')
        gemeinde = get_codes('gm')
        gemeindeteile = get_codes('gmt')
        traeger = get_codes('traeg')
        beendigungsgruende = get_codes('bgr')
        geschlechter = get_codes('gs')
        altersgruppen = get_codes('ag')
        lebtbeipersonen = get_codes('fs')
        staatsangehoerigkeiten = get_codes('hke')
        erstekontaktaufnahmel = get_codes('zm')
        berschwerpunkte = get_codes('schw')
        geschwister = get_codes('gsa')
        
        hidden ={'file': 'jgheinf'}
        jghid = Jugendhilfestatistik().getNewId()
        hiddenid ={'name': 'jghid', 'value': jghid}
        hiddenid2 ={'name': 'stz', 'value': self.stelle['id']}
        mitarb_data = {'mit_id': self.mitarbeiter['id'],'mit_name' : self.mitarbeiter['ben']}
        res = []
        res.append(head_normal_t % 'Neue Bundesstatistik erstellen')
        res.append(jghstatneu_t % ({'id':fallid}))
        res.append(jghstatneufn_t  %({'fall_fn' : fn} ))
        res.append(jghstatneugemeinde_t %(Code(cc('gm','000'))['id']))
        res.append(jghstatneugemeindeteil_t %(Code(cc('gmt','000'))['id']))
        res.append(formhiddenvalues_t % hidden)
        res.append(formhiddennamevalues_t % hiddenid)
        res.append(formhiddennamevalues_t % hiddenid2)
        res.append(jghstatneumit_t % mitarb_data)
        res.append(jghstatneubeginn_t  % ({'bgd': bgd, 'bgm': bgm , 'bgy' : bgy} ))
        mksel(res, codeliste_t, bezirke)
        res.append(jghstatneuende_t %(today()))
        res.append(jghstatneukreis_t)
        mksel(res, codeliste_t, kreise)
        if config.BERLINER_VERSION:
            res.append(jghstatneuwbz_berlin_t)
            res.append(jghstatneugfall_berlin_t)
        else:
            res.append(jghstatneuwbz_t)
            res.append(jghstatneugfall_t)
        mksel(res,codeliste_t, geschwisterfaelle, 'name', 'Nein')
        res.append(jghstatneutraeger_t)
        mksel(res, codeliste_t, traeger)
        res.append(jghstatneukontakt_t)
        mksel(res, codeliste_t, erstekontaktaufnahmel)
        res.append(jghstatneuendegrund_t)
        mksel(res, codeliste_t, beendigungsgruende)
        res.append(jghstatneuanlass_t)
        res.append(codelisteos_t % Code(cc('ba0', '1')) )
        res.append(codelisteos_t % Code(cc('ba1', '1')) )
        res.append(codelisteos_t % Code(cc('ba2', '1')) )
        res.append(codelisteos_t % Code(cc('ba3', '1')) )
        res.append(codelisteos_t % Code(cc('ba4', '1')) )
        res.append(codelisteos_t % Code(cc('ba5', '1')) )
        res.append(codelisteos_t % Code(cc('ba6', '1')) )
        res.append(codelisteos_t % Code(cc('ba7', '1')) )
        res.append(codelisteos_t % Code(cc('ba8', '1')) )
        res.append(codelisteos_t % Code(cc('ba9', '1')) )
        res.append(jgstatneuschwerpunkt_t)
        mksel(res, codeliste_t, berschwerpunkte)
        res.append(jghstatneulebtbei_t)
        mksel(res, codeliste_t, lebtbeipersonen)
        res.append(jghstatneugeschlecht_t)
        mksel(res, codeliste_t, geschlechter)
        res.append(jghstatneualter_t)
        if(alter_klient < 3):
            altersgruppe_kat = cc('ag', '1')
        elif(alter_klient >= 3 and alter_klient < 6):
            altersgruppe_kat = cc('ag', '2')
        elif(alter_klient >= 6 and alter_klient < 9):
            altersgruppe_kat = cc('ag', '3')
        elif(alter_klient >= 9 and alter_klient < 12):
            altersgruppe_kat = cc('ag', '4')
        elif(alter_klient >= 12 and alter_klient < 15):
            altersgruppe_kat = cc('ag', '5')
        elif(alter_klient >= 15 and alter_klient < 18):
            altersgruppe_kat = cc('ag', '6')
        elif(alter_klient >= 18 and alter_klient < 21):
            altersgruppe_kat = cc('ag', '7')
        elif(alter_klient >= 21 and alter_klient < 24):
            altersgruppe_kat = cc('ag', '8')
        elif(alter_klient >= 24 and alter_klient < 27):
            altersgruppe_kat = cc('ag', '9')
        else:
            altersgruppe_kat = " "
        mksel(res, codeliste_t, altersgruppen, 'id', altersgruppe_kat)
        res.append(jghstatneu_t2a)
        res.append(jghstatneu_t2b)
        mksel(res, codeliste_t, staatsangehoerigkeiten)
        res.append(jghstatneu_t3  % Code(cc('gsu', '1')))
        res.append(radio_t % Code(cc('fbe0', '1' )) )
        res.append(jghstatneu_t4)
        res.append(radio_t % Code(cc('fbe0', '2' )) )
        res.append(jghstatneu_t5)
        res.append(radio_t % Code(cc('fbe1', '1')) )
        res.append(jghstatneu_t6)
        res.append(radio_t % Code(cc('fbe1', '2')) )
        res.append(jghstatneu_t7)
        res.append(jghansaetzefamilie_t % Code(cc('fbe2', '1')) )
        res.append(jghstatneu_t8)
        res.append(jghansaetzeumfeld_t % Code(cc('fbe3', '1')) )
        res.append(jghstatneu_t9)
        return string.join(res, '')