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