Exemple #1
0
    def _hauptmenu_admin(self):
        mitarbeiter = h.FieldsetInputTable(
            legend='Mitarbeiter',
            daten=[[h.Button(value='Bearbeiten',
                             onClick="go_to_url('mitausw')",
                             tip="Merkmale von Mitarbeitern bearbeiten",
                             ),
                    h.Button(value='Neu',
                             onClick="go_to_url('mitneu')",
                             tip="Neuen Mitarbeiter eintragen",
                             ),
                    ]],
            )
        akten = h.FieldsetInputTable(
            legend='Akten',
            daten=[[h.Button(value='Löschen/Datenschutz',
                             onClick="go_to_url('rmakten')",
                             tip="Löschen von Akten nach Ablauf der Löschfrist",
                             class_="buttonbig",
                             ),
                    h.Button(value='Altdaten importieren',
                             onClick="go_to_url('altimport')",
                             tip="Importieren von Klientendaten aus früheren Systemen",
                             class_="buttonbig",
                             ),
                    ],
                   [h.Button(value='Löschen/Fehlerkorrektur',
                             onClick="go_to_url('rmaktenf')",
                             tip="Löschen von fehlerhaften Fällen und Akten",
                             class_="buttonbig",
                             ),
                    h.DummyItem(),
                    ]],
            )
        bundesstatistik = h.FieldsetInputTable(
            legend='Bundesstatistik',
            daten=[[h.Button(value='Exportieren',
                             onClick="go_to_url('formabfrjghexport')",
                             tip="Bundesstatistik im amtlichen Format erstellen",
                             ),
                    h.Button(value='Download',
                             onClick="go_to_url('jghexportlist')",
                             tip="Bundesstatistik herunterladen",
                             ),
                    ]],
            )
        fachstatistik = h.FieldsetInputTable(
            legend='Fachstatistik',
            daten=[[h.Button(value='Konfigurieren',
                             onClick="go_to_url('fskonfig')",
                             tip="Fachstatistik konfigurieren",
                             ),
                    ]],
            )
        # Tabellen, die Kategorien verwenden
        klassen = [t['klasse'] for t in
                   TabelleList(where='feld.kat_id IS NOT NULL',
                               join=[('feld', 'tabelle.id=feld.tab_id')]).sorted('klasse')]
        options = '<option value="nothing">[Tabelle auswählen]</option>\n'
        options += '<option value="codelist?tbl=Alle">Alle Tabellen</option>\n'
        options += '\n'.join(['<option value="codelist?tbl=%s">%s</option>' % (kln,kln)
                              for kln in klassen])
        tip = "Merkmalskataloge der gewählten Tabelle bearbeiten"
        merkmalskataloge = h.FieldsetFormInputTable(
            legend='Merkmalskataloge bearbeiten',
            daten=[[h.String(string="der Tabelle:",
                             class_="labeltext",
                             tip=tip,
                             ),
                    h.SelectGoto(name='tbl',
                                 tip=tip,
                                 options=options),
                    ]],
            )
        strassenkatalog = h.FieldsetInputTable(
            legend='Straßenkatalog',
            daten=[[h.Button(value='Importieren',
                             onClick="go_to_url('strkatimport')",
                             tip="Straßenkatalog aus einer CSV-Datei importieren",
                             ),
                    h.Button(value='Exportieren',
                             onClick="go_to_url('strkatexport')",
                             tip="Straßenkatalog als CSV-Datei exportieren",
                             ),
                    ]],
            )

        if config.SQL_ABFRAGE:
            sql_abfrage = h.FieldsetInputTable(
                legend='SQL Abfragen',
                daten=[[h.Button(value='Abfragen',
                                 onClick="go_to_url('sql_abfrage')",
                                 tip="Ergebnis einer SQL-Abfrage als CSV-Datei herunterladen",
                                 ),
                        ]],
                )
        else:
            sql_abfrage = None
        from ebkus.app.protocol import is_on
        if is_on():
            from ebkus.app.protocol import get_protocol_limit
            grenze = get_protocol_limit()
            protokoll = h.FieldsetFormInputTable(
                legend='Protokoll',
                name="fuellgrenze",
                action="admin_protocol",
                method="post",
                hidden = (('auswahl', 'pgrenze'),
                          ),
                daten=[[h.Button(value='Archivieren',
                                 onClick="go_to_url('admin_protocol?auswahl=archiv')",
                                 tip="Protokolldatensätze archivieren",
                                 ),
                        h.DummyItem(),
                        h.TextItem(label='Füllgrenze',
                                   tip="Max. Größe der Protokolltabelle vor automatischer Archivierung",
                                   name='grenze',
                                   value=grenze,
                                   maxlength=9,
                                   class_='textbox52',
                                   ),
                        h.Button(value='Speichern',
                                 type='submit',
                                 tip="Füllgrenze speichern",
                                 ),
                        ]],
                )
        else:
            protokoll = None
        res = h.Page(
            title='Administratorhauptmenü',
            help="das-hauptmen",
            breadcrumbs = ((),),
            rows=(self.get_abmelden_pw(),
                  h.Pair(left=mitarbeiter,
                         right=akten,
                         ),
                  h.Pair(left=bundesstatistik,
                         right=fachstatistik,
                         ),
                  h.Pair(left=merkmalskataloge,
                         right=strassenkatalog,
                         ),
                  h.Pair(left=sql_abfrage,
                         right='',
                         ),
                  protokoll,
                  ),
            )
        return res.display()
    def processForm(self, REQUEST, RESPONSE):
        # Formulardaten holen
        archivfiles = os.listdir(config.PROTOCOL_DIR)
        protokolleintrag = self.form.get('protokolleintrag')
        von_id = self.form.get('von_id')
        bis_id = self.form.get('bis_id')
        archivdatei = self.form.get('archiv_datei')
        protocolanaus = self.form.get('protocolanaus')

        # toggle Protokoll an/aus
        if protocolanaus == 'protocolanaus':
            if protocol.is_on():
                protocol.off()
                anaustext = 'aus'
            else:
                protocol.on()
                anaustext = 'an'
            meldung = {
                'titel':'Prokollierung',
                'legende':'Protokollierung',
                'url':'menu_protocol',
                'zeile1':'Folgende &Auml;nderungen wurden durchgef&uuml;hrt:',
                'zeile2':'Die Protokollierung wurde %sgeschaltet' % anaustext
                }
            return meldung_weiterleitung_t % meldung

        res = []
        res.append(head_normal_ohne_help_t % ('Protokollansicht/-bearbeitung'))

        # Einzelanzeige
        if protokolleintrag:
            res.append(singleprotocolview_head_t)
            protokolleintraege = self.get_protokoll_eintraege(id_list=protokolleintrag)
            for p in protokolleintraege:
                res.append(singleprotocolview_mid_t % p)
            res.append(singleprotocolview_end_t)
            return ''.join(res)

        # Archivdatei anzeigen
        if archivdatei:
             # für Datumskonvertierung
            tmp_yek = "2001.12.31"
            archivfile = os.path.join(config.PROTOCOL_DIR, archivdatei)
            rot = rotor.newrotor(tmp_yek)
            fdatei1 = open(archivfile, "rb")
            line = fdatei1.readline()
            res.append(dateitop_t)
            while line:
                res.append( rot.decryptmore(line))
                line = fdatei1.readline()
            res.append(dateiend_t)
            fdatei1.close()
            return ''.join(res)
        
        # Ansonsten Menu anzeigen
        if protocol.is_on():
            anaustext = 'Aus'
        else:
            anaustext = 'An'
        protokolleintraege = self.get_protokoll_eintraege(von_id, bis_id)
        von_id = von_id or protokolleintraege and protokolleintraege[0]['nr'] or '0'
        bis_id = bis_id or protokolleintraege and protokolleintraege[-1]['nr'] or '0'
        res.append(auswahlprotocol_t % (anaustext, von_id, bis_id, self.get_max_id()))
        for p in protokolleintraege:
            res.append(protocolauswahl_t % p)
        res.append(protocolsubmit_t )
        res.append(archivfile_head_t)

        files_to_sort = [(os.stat(os.path.join(config.PROTOCOL_DIR, f))[stat.ST_CTIME],
                          f) for f in archivfiles]
        files_to_sort.sort()
        files_to_sort.reverse()
        for ctime, afile in files_to_sort:
            dateides = os.stat(os.path.join(config.PROTOCOL_DIR, afile))
            dateigroesse = dateides[6]
            local_time_tupel = time.localtime(ctime)
            dateitime =time.strftime("%d.%m.%y um %H:%M:%S", local_time_tupel)
            local_time_tupel = time.localtime(dateides[8]) # ST_MTIME
            dateitime2 =time.strftime("%d.%m.%y um %H:%M:%S", local_time_tupel)
            res.append(archivfile_mid_t % ("archiv_datei", afile, afile,
                                           dateigroesse, dateitime, dateitime2))

        res.append(archivfile_end_t)
        return ''.join(res)