示例#1
0
def archive_sql_protocol(user):
    """Löscht die Daten aus der Protokolltabelle und schreibt
    sie in eine Archivdatei.
    Code weitestgehend von MSG übernommen."""
    tmp_yek = "2001.12.31" # ?? :-)
    # diesen abschnitt. hier wird zu erst in eine datei archiviert, dann gelöscht
    # zeit generieren und fileobjekt erstellen.
    local_time_insec = time.time()
    local_time_tupel = time.localtime(local_time_insec)
    zeitstempel = time.strftime("%d%m%y%H%M%S", local_time_tupel)
    zeitstempel2 =time.strftime("%d.%m.%y um %H:%M:%S", local_time_tupel)
    pfad = os.path.join(config.PROTOCOL_DIR, zeitstempel + ".txt")
    #if os.exists(PROTOCOL_DIR) != true:
    #mkdir(PROTOCOL_DIR)
    fdatei = open(pfad, "wb")
    # jede zeile aus der protokolltabelle wird in die datei geschrieben
    protokolleintraege = ProtokollList(where = '', order='nr')
    rot = rotor.newrotor(tmp_yek)
    from ebkus.app_surface.protokoll_templates import datei_t
    for p in protokolleintraege:
        fdatei.write(rot.encryptmore(datei_t % p))
        fdatei.write(rot.encryptmore('<br>'))
    fdatei.write(rot.encryptmore("""<br>****************************<br>
Die Protokolltabellen wurden am %s von %s geloescht
und in die Datei %s archiviert.
<br>****************************<br>""" % (zeitstempel2, user, pfad)))
    fdatei.close()
    # Maxist in tabid für protokolltabelle wird gesetzt
    prottabid = TabellenID(table_name = 'protokoll',
                           dbsite = cc('dbsite',  config.SITE))
    prottabid.update({'maxist': 0})
    # protokolltabelle wird gelöscht
    protokolleintraege2 = ProtokollList(where = '')
    protokolleintraege2.deleteall()
示例#2
0
def set_protocol_limit(limit):
    """Setzte die maximale Anzahl der Einträge in die Protokolltabelle.
    Wenn diese Anzal überschritten wird, wird automatisch archiviert.
    """
    try:
        temp_off()
        limit = min(int(limit), 200000)
        prottabid = TabellenID(table_name = 'protokoll',
                               dbsite = cc('dbsite',  config.SITE))
        prottabid.update({'maxid': limit})
    finally:
        temp_on()
示例#3
0
def create_new_table():
    tables = get_schema_info(schemainfo)
    jghstat07 = [t for t in tables if t.tablename == "jghstat07"][0]
    db = getDBHandle()
    # print jghstat07.sql_create()
    db.query(jghstat07.sql_create())
    # table_id = 32
    # field_id = 333
    table_id = Tabelle().getNewId()
    # print jghstat07.sql_insert(table_id)
    db.query(jghstat07.sql_insert(table_id))
    for f in jghstat07.fields:
        field_id = Feld().getNewId()
        # print f.sql_insert(field_id)
        db.query(f.sql_insert(field_id))
    j07 = Tabelle(tabelle="jghstat07")
    logging.info("Neue Tabelle für %s: %s" % (j07["name"], "jghstat07"))

    if config.BERLINER_VERSION:
        merkmale = "merkmale_berlin.py"
    else:
        merkmale = "merkmale_standard.py"
    create_new_kategorien(jghstat07, join(config.EBKUS_HOME, "sql", merkmale))
    for f in jghstat07.fields:
        fupd = Feld()
        v = Code(code=f.verwtyp, kat_code="verwtyp")
        fupd["verwtyp"] = v["id"]
        if f.verwtyp in "kb":
            kat = Kategorie(code=f.kat_code)
            fupd["kat_id"] = kat["id"]
            fupd["kat_code"] = kat["code"]
        if f.verwtyp in "fk":  # kodierte Felder sind Fremdschlüssel nach code
            fupd["ftab_id"] = Tabelle(tabelle=f.ftable)["id"]
            if f.verwtyp in "f":  # Name für inverse Beziehung
                fupd["inverse"] = f.inverse
        feld = Feld(feld=f.fieldname, tab_id=j07["id"])
        feld.update(fupd)

    site = Code(kat_code="dbsite", code=config.SITE)
    t = TabellenID()
    t["table_id"] = j07["id"]
    t["table_name"] = j07["tabelle"]
    t["dbsite"] = site["id"]
    t["minid"] = site["mini"]
    t["maxid"] = site["maxi"]
    t["maxist"] = 1
    t.insert()
    return True
示例#4
0
def _getNewId(self):
    """Überschreibt die Standardmethode, um neue Werte für
    Schlüsselfelder zu erzeugen, für die Protokolltabelle.
    """
    tid = TabellenID(table_name = self.table,
                     dbsite = cc('dbsite',  config.SITE))
    maxist = tid['maxist']
    max = tid['maxid']
    min = tid['minid']
    if maxist:
        newid = maxist + 1
    else:
        newid = 1
    if newid > max:
        raise ProtokolltabelleVoll(
            "Die Protokolltabelle hat den gesetzten Füllstand erreicht: %s" % max)
    tid.update({'maxist' : newid})
    return newid