Exemple #1
0
 def processForm(self, REQUEST, RESPONSE):
     alt_ids = check_list(self.form, 'uebern', 'Fehler in Altdaten', [])
     if len(alt_ids) > 1:
         raise EE("Bitte nur einen Eintrag zur Übernahme markieren!")
     if alt_ids:
         alt = Altdaten(alt_ids[0])
     else:
         alt = {}
     gs_alt = alt.get('geschlecht')
     if gs_alt:
         gs = (gs_alt=='w' and cc('gs', '2')) or (gs_alt=='m' and cc('gs', '1'))
     else:
         gs = ' '
     if alt:
         no = "Alte Fallnummer: %(fallnummer)s, Jahr: %(jahr)s, Früherer Mitarbeiter: %(mitarbeiter)s" % alt
     else:
         no = ''
     str = alt.get('strasse', '')
     if str:
         for end in ('trasse', 'traße'):
             if str.endswith(end):
                 i = str.index(end)
                 str = str[:i] + 'tr.'
     akte = Akte()
     akte.init(
         id=Akte().getNewId(),
         fs=cc('fsfs', '999'),
         vn=alt.get('vorname', ''),
         na=alt.get('name', ''),
         gb=alt.get('geburtsdatum', ''),
         ort=alt.get('ort', ''),
         plz=alt.get('plz', ''),
         str=str,
         hsnr=alt.get('hausnummer', '').upper(),
         gs=gs,
         tl1=alt.get('telefon1', ''),
         tl2=alt.get('telefon2', ''),
         no=no,
         aufbew=cc('aufbew', '1'),
         stzbg=self.stelle['id'],
         lage=(config.STRASSENKATALOG and  cc('lage', '0') or
               cc('lage', '1')),
         )
     return self._process(
         title='Neue Akte anlegen',
         file='akteeinf',
         akte=akte,
         formname='akteform',
         hidden=(('stzbg', akte['stzbg']),
                 )
         )
Exemple #2
0
 def processForm(self, REQUEST, RESPONSE):
     download = self.form.get('download')
     plz = check_list(self.form, 'plz', 'Keine PLZ', [])
     if download == '1':
         if plz:
             where = "plz in (%s)" % ','.join([("'%s'" % p) for p in plz])
         else:
             where = ''
         content = self.csv_gen(where)
         self.RESPONSE.setHeader('content-type', "text/csv; charset=iso-8859-1")
         self.RESPONSE.setHeader('content-disposition',
                                 'attachment; filename=%s' % 'strassenkatalog.csv')
         self.RESPONSE.setBody(content)
         return
     strexport = h.FieldsetFormInputTable(
         name='strkatexport',action='strkatexport',method='post',
         hidden=(('download', '1'),
                 ),
         legend='Straßenkatalog exportieren',
         daten=[[h.SelectItem(label='Postleitzahlen',
                              name='plz',
                              multiple=True,
                              size=20,
                              options=self.for_plz(),
                              tip="Einträge für gewählte PLZ, oder alle Einträge",
                              ),
                 ]],
         button=h.Button(value="Herunterladen",
                         name='op',
                         tip="Straßenkatalog für gewählte PLZ bzw. insgesamt herunterladen",
                         type='submit',
                         n_col=2,
                         ),
         )
     res = h.Page(
         title='Straßenkatalog exportieren',
         breadcrumbs = (('Administratorhauptmenü', 'menu'),
                        ),
         rows=(self.get_hauptmenu(),
               strexport,
               ),
         )
     return res.display()
Exemple #3
0
 def processForm(self, REQUEST, RESPONSE):
     from ebkus.app.ebapi import check_list
     #print self.form
     op = self.form.get('op')
     rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '')
     if op == 'loeschen_confirmed' and rm:
         if rm:
             akten = [Akte(r) for r in rm]
             for a in akten:
                 # vor dem Löschen holen!
                 a['zda'] = a['letzter_fall'].getDate('zda')
                 assert not a['aktueller_fall']
             from ebkus.app.ebupd import removeakten
             anzahl_akten_geloescht, anzahl_gruppen_geloescht = removeakten(self.form)
             assert anzahl_akten_geloescht == len(akten), 'Fehler beim Löschen von Akten'
         else:
             raise EE('Keine Akten zum löschen markiert')
         geloeschte_akten = h.FieldsetDataTable(
             legend='Endgültig gelöschte Akten (Statistik bleibt erhalten)',
             headers=('Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss'),
             daten=[[h.String(string=akte['na']),
                     h.String(string=akte['vn']),
                     h.String(string=akte['gb']),
                     h.Datum(date=akte['zda']),
                     ] for akte in akten],
             )
         
     else:
         geloeschte_akten = None
     res = h.Page(
         title='Akten gelöscht',
         breadcrumbs = (('Aministratorhauptmenü', 'menu'),
                        ('Akten löschen', None),
                        ),
         rows=(self.get_hauptmenu(),
               geloeschte_akten,
               ),
         )
     return res.display()
    def processForm(self, REQUEST, RESPONSE):
        #print 'FORM', self.form
        welche = self.form.get('w')
        von_jahr = self.form.get('von_jahr')
        bis_jahr = self.form.get('bis_jahr')
        if bis_jahr:
            bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
        else:
            bis_jahr = today().year
        von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
        if von_jahr > bis_jahr:
            von_jahr = bis_jahr

##         von_jahr = self.form.get('von_jahr')
##         bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
##         if not von_jahr or von_jahr > bis_jahr:
##             von_jahr = bis_jahr
# TODO
##         if von_jahr <= 2006 and bis_jahr >= 2007:
##             return h.Meldung(legend='Ungültige Jahresangaben',
##                              zeilen=('Bitte entweder nur Jahre bis 2006 (alte Bundesstatistik)',
##                                      ' oder nur Jahre ab 2007 (neue Bundesstatistik) angeben!',
##                                      ),
##                              ).display()
        stz = check_list(self.form, 'stz', 'Keine Stelle')
        item_auswahl = check_list(self.form, 'item_auswahl', 'Bitte gewünschte Auszählung ankreuzen.')
        teilm = self.form.get('teilm')
        if teilm:
            abfr = Abfrage(teilm)
            query = Query(abfr)
        else:
            query = Query()
        fs, jgh, jgh07 = self.check_params(von_jahr, bis_jahr, stz, item_auswahl, query)
##         # jgh-Liste dabei?
##         jgh = 'jgh_gesamt' in item_auswahl or query.jgh
##         # fs-Liste dabei?
##         fs = 'fs_gesamt' in item_auswahl or query.fs
##         #############
##         # Statistik nur für Fälle, wo beide Formulare ausgefüllt sind
##         # und wo bei der Bundesstatistik das Endejahr eingetragen ist.
##         fs = jgh = True
##         #############
##         if not jgh and not fs:
##             # Diese Annahme ist falsch für Teilmengenauswertung, weil manche sich
##             # auf jgh beziehen können.
##             # Bei Regionen problematisch, weil dadurch die GG festgelegt wird.
##             fs = True
        if fs:
            fs_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr,
                                              FachstatistikList)
        if jgh:
            jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr,
                                               JugendhilfestatistikList)
        if jgh07:
            jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr,
                                               Jugendhilfestatistik2007List)
        if fs and (jgh or jgh07):
            # beide nötig: erzeugt wird eine Liste von Paaren (fs, jgh) für jeden Fall
            # für den beide Statistiken vorliegen
            ggl = self.join_fs_jgh_list(fs_ggl, jgh_ggl)
            #ggl = ggl*500  # Performance bei längeren Listen? ---> ok, 3sec bei 3000 Fälle
            #ggl = ggl*5000 # Performance bei längeren Listen? ---> ok, 26sec bei 30000 Fälle
        elif fs:
            ggl = fs_ggl
        else:
            ggl = jgh_ggl
        anzeige_gg = self.get_grundgesamtheit_anzeige(stz, von_jahr, bis_jahr,
                                                      fs, jgh, jgh07, len(ggl))
        if not ggl:
            raise EE("Keine Datensätze für die gewünschte Grundgesamtheit:"
                     "\n\n%s\n%s" % anzeige_gg)
        if query.always_true():
            ggl_teilm = ggl
        else:
            def qfilter(el):
                return query.test(el)
            #ggl_teilm = ggl.filter(qfilter)
            ggl_teilm = [el for el in ggl if(qfilter(el))]
            if not ggl_teilm:
                raise EE("Keine Datensätze für Teilmenge '%s'" % abfr['name'])
        return self._display_ergebnis(
            ggl_teilm,
            anzeige_gg=anzeige_gg,
            query=query,
            item_auswahl=item_auswahl,
            )
 def processForm(self, REQUEST, RESPONSE):
     #print 'FORM abfragedef', self.form
     op = self.form.get('op')
     cgi_name = 'query1'
     assert op in (None, 'new', 'edit', 'del', 'Weiter')
     abfr_id = self.form.get('abfrid')
     if abfr_id:
         abfrold = ebapi.Abfrage(abfr_id)
     else:
         abfrold = None
     if op in ('edit', 'del'):
         # altes Objekt ist vorhanden, nur das wird dargestellt
         if not abfr_id:
             raise ebapi.EE('Keine ID für Abfrage')
         name = abfrold['name']
         if op == 'del':
             return h.SubmitOrBack(
                 legend='Teilmengendefinition löschen',
                 action='statabfr',
                 #onclick_abbrechen="window.close()",
                 method='post',
                 hidden=(('abfrid', abfr_id),
                         ('file', 'rmabfr'), # wird in statabfr abgefragt -->
                                             # ebupd.rmabfr
                         ),
                 zeilen=("Soll Teilmengendefinition '%s' gelöscht werden?" % name,
                         )
                 ).display()
         else:
             #op == 'edit':
             return self._process(abfrold, cgi_name)
     elif op == 'new':
         # default Objekt bauen, in Form steht nichts
         abfr = ebapi.Abfrage()
         abfr.init(zeit=time.time(),
                   mit_id=self.mitarbeiter['id'],
                   name='',
                   dok='',
                   value='',
                   typ='statistik_teilmengen_definition',
                   )
     else:
         # Objekt aus den Form-Parametern bauen
         query_list = ebapi.check_list(self.form,
                                       cgi_name,
                                       'Keine Query',
                                       [])
         #print 'QUERY_LIST for q', query_list
         q = Query(query_list)
         #print 'QUERY_STRING from q', q.get_query_string(),
         name=self.form.get('name', '')
         # name nicht prüfen, darf leer sein, solange nicht gespeichert wird
         if abfrold:
             # Solange nicht gespeichert, immer die alten Daten anzeigen
             zeit = abfrold['zeit']
             mit_id = abfrold['mit_id']
         else:
             zeit = time.time()
             mit_id = self.mitarbeiter['id']
         abfr = ebapi.Abfrage()
         abfr.init(id=abfr_id,
                   zeit=zeit,
                   mit_id=mit_id,
                   name=name,
                   dok=self.form.get('dok', ''),
                   value=q.get_query_string(),
                   typ='statistik_teilmengen_definition',
                   )
     return self._process(abfr, cgi_name)
 def processForm(self, REQUEST, RESPONSE):
     #print 'FORM', self.form
     welche = self.form.get('w')
     ohne_bk_raus = self.form.get('ohne_bk_raus')
     von_jahr = self.form.get('von_jahr')
     bis_jahr = self.form.get('bis_jahr')
     if bis_jahr:
         bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
     else:
         bis_jahr = today().year
     von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
     if von_jahr > bis_jahr:
         von_jahr = bis_jahr
     stz = check_list(self.form, 'stz', 'Keine Stelle')
     item_auswahl = check_list(self.form, 'item_auswahl', 'Bitte gewünschte Auszählung ankreuzen.')
     teilm = self.form.get('teilm')
     if teilm:
         abfr = Abfrage(teilm)
         query = Query(abfr)
     else:
         query = Query()
     fs, jgh, jgh07 = self.check_params(von_jahr, bis_jahr, stz, item_auswahl, query, welche)
     if fs:
         fs_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche,
                                           FachstatistikList, ohne_bk_raus)
     if jgh:
         jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche,
                                            JugendhilfestatistikList, ohne_bk_raus)
     if jgh07:
         jgh_ggl = self.get_grundgesamtheit(stz, von_jahr, bis_jahr, welche,
                                            Jugendhilfestatistik2007List, ohne_bk_raus)
     if fs and (jgh or jgh07):
         # beide nötig: erzeugt wird eine Liste von Paaren (fs, jgh) für jeden Fall
         # für den beide Statistiken vorliegen
         ggl = self.join_fs_jgh_list(fs_ggl, jgh_ggl)
         #ggl = ggl*500  # Performance bei längeren Listen? ---> ok, 3sec bei 3000 Fälle
         #ggl = ggl*5000 # Performance bei längeren Listen? ---> ok, 26sec bei 30000 Fälle
     elif fs:
         ggl = fs_ggl
     else:
         ggl = jgh_ggl
     anzeige_gg = self.get_grundgesamtheit_anzeige(stz, von_jahr, bis_jahr, welche,
                                                   fs, jgh, jgh07, len(ggl), ohne_bk_raus)
     
     if not ggl:
         raise EE("Keine Datensätze für die gewünschte Grundgesamtheit:"
                  "\n\n%s\n und %s" % (anzeige_gg[0], anzeige_gg[1]))
     if query.always_true():
         ggl_teilm = ggl
     else:
         def qfilter(el):
             return query.test(el)
         #ggl_teilm = ggl.filter(qfilter)
         ggl_teilm = [el for el in ggl if(qfilter(el))]
         if not ggl_teilm:
             raise EE("Keine Datensätze für Teilmenge '%s'" % abfr['name'])
     return self._display_ergebnis(
         ggl_teilm,
         anzeige_gg=anzeige_gg,
         query=query,
         item_auswahl=item_auswahl,
         )
    def _process_fall(self, REQUEST, RESPONSE):
        submitop = self.form.get('submitop')
        adr = check_list(self.form, 'adr', 'Keine Auswahl', [])
        params = self.fall_auswahl_form()

        welche_faelle = params['welche']
        ab_jahr =  params['ab_jahr']
        ab_fallnummer =  params['ab_fallnummer']
        mitarbeiter = params['mitarbeiter']
        sort_options_data = params['sort_options_data']
        sort_sel = params['sort_sel']
        sort_seq = params['sort_seq']
        sort = params['sort']
        bis_jahr = params['bis_jahr']
        bis_fallnummer = params['bis_fallnummer']
        ab_jahr_zda =  params['ab_jahr_zda']
        bis_jahr_zda =  params['bis_jahr_zda']



        adressen = []
        if submitop == 'Anzeigen':
            beratungen = self.beratungen(welche=welche_faelle,
                                         stelle=self.stelle,
                                         mitarbeiter=mitarbeiter,
                                         ab_jahr=ab_jahr,
                                         ab_fallnummer=ab_fallnummer,
                                         bis_jahr=bis_jahr,
                                         bis_fallnummer=bis_fallnummer,
                                         ab_jahr_zda=ab_jahr_zda,
                                         bis_jahr_zda=bis_jahr_zda,
                                         sort=sort)

            #print 'BERATUNGEN', beratungen
            if beratungen:
                adressen = self._get_fall_address_data(beratungen)
                #print 'ADRESSEN', adressen
                if not adressen:
                    raise EE('Keine Adressen für gewählte Fälle vorhanden.')
                self.session.data['falladressen'] = adressen
            else:
                raise EE('Keine Fälle in der Auswahl!')
        elif submitop:
            adressen = self.session.data.get('falladressen')
            if not adressen:
                raise EE('Keine Adressen, bitte neu anzeigen lassen!')
            if submitop == 'Markierte behalten':
                adressen = [a for a in adressen if a.key in adr]
                #adressen = [a for a in adressen if a[0][1] in adr]
                self.session.data['falladressen'] = adressen
            elif submitop == 'Markierte entfernen':
                adressen = [a for a in adressen if a.key not in adr]
                #adressen = [a for a in adressen if a[0][1] not in adr]
                self.session.data['falladressen'] = adressen
            elif submitop == 'Herunterladen':
                return self.send_csv(adressen, RESPONSE)
            else:
                raise EE('Fehler: Unbekannter Submit-Button')

        anzeige = self.get_fall_auswahl('Fallauswahl für anzuzeigende Adressen', welche_faelle, 
                                        ab_jahr, ab_fallnummer, 
                                        bis_jahr, bis_fallnummer, 
                                        ab_jahr_zda, bis_jahr_zda,
                                        mitarbeiter, 
                                        sort_options_data, sort_sel,
                                        submitop='submitop',
                                        )


        hidden = (('wel', 'fall'),)
        res = h.FormPage(
            title='Adressenexport',
            name="adr",action="adressen",method="post",
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            hidden=hidden,
            rows=(self.get_auswertungs_menu(),
                  anzeige,
                  self._get_address_list(adressen),
                  ),
            )
        return res.display()
    def _process_gruppe(self, REQUEST, RESPONSE):
        submitop = self.form.get('submitop')
        adr = check_list(self.form, 'adr', 'Keine Auswahl', [])
        #gruppen_ids = [1]
        gruppen_ids = check_list(self.form, 'grid', 
                                 'Keine Gruppe ausgewählt', [])
        if gruppen_ids:
            # Duplikate entfernen, absteigend sortieren
            gruppen_ids = [int(g) for g in gruppen_ids]
            id_dict = dict([(id, True) for id in gruppen_ids])
            gruppen_ids = id_dict.keys()
            gruppen_ids.sort()
            gruppen_ids.reverse()
        
        #print 'GRUPPEN_IDS:', gruppen_ids
        adressen = []
        if submitop == 'Anzeigen':
            if gruppen_ids:
                adressen = self._get_gruppe_address_data(gruppen_ids)
                if not adressen:
                    raise EE('Keine Adressen für gewählte Gruppe(n) vorhanden.')
                self.session.data['gruppenadressen'] = adressen
            else:
                raise EE('Keine Gruppe ausgewählt!')
        elif submitop:
            adressen = self.session.data.get('gruppenadressen')
            if not adressen:
                raise EE('Keine Adressen, bitte neu anzeigen lassen!')
            if submitop == 'Markierte behalten':
                #adressen = [a for a in adressen if a[0][1] in adr]
                adressen = [a for a in adressen if a.key in adr]
                self.session.data['gruppenadressen'] = adressen
            elif submitop == 'Markierte entfernen':
                #adressen = [a for a in adressen if a[0][1] not in adr]
                adressen = [a for a in adressen if a.key not in adr]
                self.session.data['gruppenadressen'] = adressen
            elif submitop == 'Herunterladen':
                return self.send_csv(adressen, RESPONSE)
            else:
                raise EE('Fehler: Unbekannter Submit-Button')
        anzeige = h.FieldsetInputTable(
            legend='Gruppenauswahl für anzuzeigende Adressen',
            daten=[
                   [h.SelectItem(name='grid',
                                 size="6",
                                 class_="listbox280",
                                 tip="Alle Gruppen, für die Sie Zugriffsrechte haben",
                                 options=self.for_gruppen(sel=gruppen_ids),
                                 sel=gruppen_ids,
                                 multiple=True,
                                 #n_col=4,
                                 nolabel=True,
                                 ),
                    ],
                ],
            button=h.Button(value="Anzeigen",
                     name='submitop',
                     tip="Alle Adressen der gewählten Gruppen anzeigen",
                     type='submit',
                     ),
            )

        #hidden = tuple([('grid', id) for id in gruppen_ids])
        hidden = (('wel', 'gruppe'),)
        #print 'HIDDEN', hidden
        res = h.FormPage(
            title='Adressenexport',
            name="adr",action="adressen",method="post",
            breadcrumbs = (('Hauptmenü', 'menu'),
                           ),
            hidden=hidden,
            rows=(self.get_auswertungs_menu(gruppenmenu=True),
                  anzeige,
                  self._get_address_list(adressen),
                  ),
            )
        return res.display()
Exemple #9
0
 def processForm(self, REQUEST, RESPONSE):
     #print self.form
     alter = self.form.get('alter')
     if alter == None:
         alter = config.LOESCHFRIST
     else:
         alter = check_int_not_empty(
         self.form, 'alter', 'Fehler im Alter in Monaten')
         if alter < config.LOESCHFRIST:
             raise EE('Löschfrist beträgt mindestens %s Monate' % config.LOESCHFRIST)
     aufbew = self.form.get('aufbew')
     if aufbew == None:
         aufbew = cc('aufbew', '1')
     else:
         aufbew = check_code(self.form, 'aufbew', 'aufbew',
                             'Fehler in Aufbewahrungskategorie')
     op = self.form.get('op')
     rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '')
     if op == 'Endgültig löschen' and rm:
         hidden = [('rmak', r) for r in rm] + [('op', 'loeschen_confirmed')]
         return h.SubmitOrBack(
             legend='Endgültig löschen',
             action='rmakten2',
             method='post',
             hidden=hidden,
             zeilen=("Sollen die markierten Akten endgültig gelöscht werden?",
                     )
             ).display()
     alter_und_kategorie = h.FieldsetFormInputTable(
         name="rmaktenanzeigen",
         action="rmakten",
         method="post",
         hidden = (),
         legend='Alter und Kategorie der zu löschenden Akten wählen',
         daten=[[h.SelectItem(label='Aufbewahrungskategorie',
                              name='aufbew',
                              options=self.for_kat('aufbew',
                                                   sel=aufbew or cc('aufbew', '1')),
                              ),
                 h.TextItem(label='Monate seit Abschluss des letzten Falls',
                            name='alter',
                            value=alter or '',
                            class_='textboxsmall',
                            maxlength=3,
                            tip='Mindesanzahl der Monate seit Abschluss des letzten Falls'
                            ),
                 ],
                [h.Dummy(n_col=4)],
                [h.Button(value="Anzeigen",
                          name='op',
                          tip="Akten der gewählten Kategorie und des gewählten Alters anzeigen",
                          type='submit',
                          n_col=4,
                          ),
                 ],
                ],
         )
     if alter and aufbew:
         rmdatum = today().add_month(-(alter+1)) # damit immer mindestens die Anzahl Monate
                                                 # dazwischen liegt
         #print 'LOESCHDATUM', rmdatum
         alle_faelle = FallList(
             where = 'zday <= %(year)s and zdam <= %(month)s and zday > 0'
             % rmdatum)
         faelle = [f for f in alle_faelle
                   if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']]
         akten = h.FieldsetFormDataTable(
             name="rmakten",
             #action="abfragedef",
             action="rmakten",
             method="post",
             hidden = (),
             legend='Akten zum löschen auswählen (Statistiken bleiben erhalten)',
             headers=('Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss', '', 'Löschen'),
             daten=[[h.String(string=fall['akte__na']),
                     h.String(string=fall['akte__vn']),
                     h.String(string=fall['akte__gb']),
                     h.Datum(date=fall.getDate('zda')),
                     h.CheckItem(label='',
                                 name='rmak',
                                 value=fall['akte_id'],
                                 checked=False,
                                 tip='Hier markieren, um die Akte endgültig zu löschen',
                                 ),
                     ] for fall in faelle],
             no_button_if_empty=True,
             button=h.Button(value="Endgültig löschen",
                        name='op',
                        tip="Markierte endgültig Akten löschen",
                        type='submit',
                        class_='buttonbig',
                        n_col=6,
                  ),
             empty_msg="Keine Akten gefunden.",
             )
         
     else:
         akten = None
     res = h.Page(
         title='Akten löschen nach Ablauf der Löschfrist',
         breadcrumbs = (('Aministratorhauptmenü', 'menu'),
                        ),
         rows=(self.get_hauptmenu(),
               alter_und_kategorie,
               akten,
               ),
         )
     return res.display()
Exemple #10
0
 def processForm(self, REQUEST, RESPONSE):
     #print 'FORM', self.form
     von_jahr = self.form.get('von_jahr')
     bis_jahr = self.form.get('bis_jahr')
     if bis_jahr:
         bis_jahr = check_int_not_empty(self.form, 'bis_jahr', "Jahr fehlt")
     else:
         bis_jahr = today().year
     von_jahr = check_int_not_empty(self.form, 'von_jahr', "Jahr fehlt", bis_jahr)
     if von_jahr > bis_jahr:
         von_jahr = bis_jahr
     stellen_ids = [int(id) for id in check_list(self.form, 'stz', 'Keine Stelle',
                                                 [self.stelle['id']])]
     quartal = self.form.get('quartal')
     if quartal:
         quartal = check_int_not_empty(self.form, 'quartal', 'Fehler im Quartal')
         if von_jahr != bis_jahr:
             raise EE('Quartalsauswertungen nur in einem Jahr möglich')
     else:
         quartal == None
     mitarbeiter, res = self.count(stellen_ids, von_jahr, bis_jahr, quartal)
     aktivitaets_arten = [c['code'] for c in get_codes('fuabs')]
     def row(name, tupl):
         netto, brutto = tupl
         row = [h.String(string=name)]
         for ka in aktivitaets_arten:
             row.append(h.String(string="%s / %s" %
                                 (netto[ka], brutto[ka]),
                                 tip='Netto/Brutto')
                        )
         return row
     mitarbeiter_daten = [row(m['name'], res[m['id']])
                          for m in mitarbeiter]
     stellen_row = row(', '.join([Code(s)['name'] for s in stellen_ids]),
                       res['summe'])
     headers = [''] + [c['name'] for c in get_codes('fuabs')]
     
     fuer = ''
     if von_jahr < bis_jahr:
         fuer += " für %(von_jahr)s bis %(bis_jahr)s" % locals()
     else:
         fuer += " für %(bis_jahr)s" % locals()
     if quartal:
         fuer += " Quartal %(quartal)s" % locals()
     tabelle_mitarbeiter = h.FieldsetDataTable(
         legend='Zeiten für fallunabhängige Aktivitäten Mitarbeiter' + fuer,
         headers=headers,
         daten=mitarbeiter_daten,
         )
     tabelle_stellen = h.FieldsetDataTable(
         legend='Zeiten für fallunabhängige Aktivitäten summiert für Stellen' + fuer,
         headers=headers,
         daten=[stellen_row],
         )
     res = h.FormPage(
         name="fuaform",action="fuabsabfr",method="post",
         title='Auswertung fallunabhängige Aktivitäten',
         breadcrumbs = (('Hauptmenü', 'menu'),
                        ),
         hidden = (),
         rows=(self.get_auswertungs_menu(),
               self.grundgesamtheit(von_jahr=von_jahr,
                                    bis_jahr=bis_jahr,
                                    quartal=quartal,
                                    stellen_ids=stellen_ids,
                                    legend='Jahr und Stelle wählen',
                                    submit_value='Anzeigen'),
               tabelle_mitarbeiter,
               tabelle_stellen,
               ),
         )
     return res.display()
Exemple #11
0
 def processForm(self, REQUEST, RESPONSE):
     #print self.form
     alter = self.form.get('alter')
     if alter == None:
         alter = config.LOESCHFRIST
     else:
         alter = check_int_not_empty(
         self.form, 'alter', 'Fehler im Alter in Monaten')
         if alter < config.LOESCHFRIST:
             raise EE('Löschfrist beträgt mindestens %s Monate' % config.LOESCHFRIST)
     aufbew = self.form.get('aufbew')
     if aufbew == None:
         aufbew = cc('aufbew', '1')
     else:
         aufbew = check_code(self.form, 'aufbew', 'aufbew',
                             'Fehler in Aufbewahrungskategorie')
     op = self.form.get('op')
     rm = check_list(self.form, 'rmak', 'Fehler in markierten Akten', '')
     if op == 'Endgültig löschen' and rm:
         hidden = [('rmak', r) for r in rm] + [('op', 'loeschen_confirmed')]
         return h.SubmitOrBack(
             legend='Endgültig löschen',
             action='rmakten2',
             method='post',
             hidden=hidden,
             zeilen=("Sollen die markierten Akten endgültig gelöscht werden?",
                     )
             ).display()
     alter_und_kategorie = h.FieldsetFormInputTable(
         name="rmaktenanzeigen",
         action="rmakten",
         method="post",
         hidden = (),
         legend='Alter und Kategorie der zu löschenden Akten wählen',
         daten=[[h.SelectItem(label='Aufbewahrungskategorie',
                              name='aufbew',
                              options=self.for_kat('aufbew',
                                                   sel=aufbew or cc('aufbew', '1')),
                              ),
                 h.TextItem(label='Monate seit Abschluss des letzten Falls',
                            name='alter',
                            value=alter or '',
                            class_='textboxsmall',
                            maxlength=3,
                            tip='Mindesanzahl der Monate seit Abschluss des letzten Falls'
                            ),
                 ],
                [h.Dummy(n_col=4)],
                [h.Button(value="Anzeigen",
                          name='op',
                          tip="Akten der gewählten Kategorie und des gewählten Alters anzeigen",
                          type='submit',
                          n_col=4,
                          ),
                 ],
                ],
         )
     if alter and aufbew:
         rmdatum = today().add_month(-(alter+1)) # damit immer mindestens die Anzahl Monate
                                                 # dazwischen liegt
         #print 'LOESCHDATUM', rmdatum
         #alle_faelle = FallList(
         #    where = 'zday <= %(year)s and zdam <= %(month)s and zday > 0'
         #    % rmdatum)
         alle_faelle = FallList(
             where = '(zday < %(year)s or (zday = %(year)s and zdam <= %(month)s)) and zday > 0'
                % rmdatum, 
             order = 'zday, zdam, zdad')
         # Hier gab es einen Fehler (in Reinickendorf):
         # AttributeError: Could not resolve field 'akte__letzter_fall' for instance of 'Fall'
         # Daher wurde nichts zum löschen angezeigt
         # faelle = [f for f in alle_faelle
         #           if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']]
         faelle = []
         for f in alle_faelle:
             try:
                 if f == f['akte__letzter_fall'] and aufbew == f['akte__aufbew']:
                     faelle.append(f)
             except Exception, e:
                 t = sys.exc_info()[0]
                 logging.exception("Interner Fehler: %s: %s", t, e)
                 logging.exception("  Falle ohne Akte? fall_id=%s" % f['id'])
         akten = h.FieldsetFormDataTable(
             name="rmakten",
             #action="abfragedef",
             action="rmakten",
             method="post",
             hidden = (),
             legend='Akten zum löschen auswählen (Statistiken bleiben erhalten)',
             headers=('Fallnummer', 'Name', 'Vorname', 'Geburtsdatum', 'Letzter Fallabschluss', '', 'Löschen'),
             daten=[[h.String(string=fall['fn']),
                     h.String(string=fall['akte__na']),
                     h.String(string=fall['akte__vn']),
                     h.String(string=fall['akte__gb']),
                     h.Datum(date=fall.getDate('zda')),
                     h.CheckItem(label='',
                                 name='rmak',
                                 value=fall['akte_id'],
                                 checked=False,
                                 tip='Hier markieren, um die Akte endgültig zu löschen',
                                 ),
                     ] for fall in faelle],
             no_button_if_empty=True,
             button=h.Button(value="Endgültig löschen",
                        name='op',
                        tip="Markierte endgültig Akten löschen",
                        type='submit',
                        class_='buttonbig',
                        n_col=6,
                  ),
             empty_msg="Keine Akten gefunden.",
             )