def update_from_antragsbuch(antragsbuch_fn, to_fn, pretend): logg.info("---- Antragsbuch-Update gestartet ----") updated = {} failed = {} # to_order = read_TO(to_fn) to_order = [] with open(antragsbuch_fn) as f: antragsbuch = json.load(f) for antrag in antragsbuch: code = translate_antrags_code(antrag) # find position in TO, 0 if not found try: to_pos = to_order.index(code) + 1 except ValueError: to_pos = 0 try: diff = update_antrag(antrag, to_pos, pretend) except Exception as e: logg.error("error inserting antrag '%s', error '%s'", antrag[K["id"]], e) failed[antrag[K["id"]]] = e session.rollback() else: if diff: updated[antrag[K["id"]]] = diff if pretend: logg.info("---- Nichts geändert, es werden nur die Unterschiede angezeigt ----") else: logg.info("---- Antragsbuch-Update beendet ----") # show updated and failed antraege if updated: logg.debug("Geänderte Anträge:\n%s", pformat(updated)) if failed: logg.warn("Es traten Fehler bei folgenden Anträgen auf:\n%s", pformat(failed)) # show counts logg.info("Geänderte Anträge (Anzahl): %s", len(updated)) if failed: logg.warn("Es traten Fehler bei Anträgen auf (Anzahl): %s", len(failed)) return updated, failed
def update_antragsbuch(filename): logg.info("---- Antragsbuch-Update gestartet ----") updated = {} failed = {} with open(filename) as f: antragsbuch = json.load(f) for antrag in antragsbuch: try: diff = update_antrag(translate_antrags_code(antrag)) except Exception as e: logg.error("error inserting antrag '%s', error '%s'", antrag["id"], e) failed[antrag["id"]] = e session.rollback() if diff: updated[antrag["id"]] = diff logg.info("---- Antragsbuch-Update beendet ----") if updated: logg.info("%s geänderte Anträge:\n%s", len(updated), pformat(updated)) if failed: logg.warn("Es traten Fehler bei %s Anträgen auf:\n%s", len(failed), pformat(failed)) return updated, failed