From 8f35dec4c342bfcd9b615cab205f3fe88986d6e6 Mon Sep 17 00:00:00 2001 From: Birth Markus Date: Wed, 8 Mar 2017 15:48:28 +0100 Subject: [PATCH] Mark deleted mosObjects as such in the DB. --- MosDb.py | 14 +++++++++++++- MosXml.py | 9 ++++++++- scan_moslogs.py | 3 ++- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/MosDb.py b/MosDb.py index 9277db2..f4a68b8 100644 --- a/MosDb.py +++ b/MosDb.py @@ -79,11 +79,23 @@ class MosDb(): valuesTuple ) + def mark_deleted(self, objData): + """Sets the isDeleted column to 1 for the specified object. + + *objData* is a dictionary containing mosId and objId values. + + """ + self.c.execute( + "UPDATE mosobjects SET isDeleted=1 WHERE mosId=? AND objId=?", + ( self.get_mos_id(objData["mosId"]), objData["objId"] ) + ) + def add_or_replace(self, objData): insertObj = { - "objId": objData["objId"], "mosId": self.get_mos_id(objData["mosId"]), + "objId": objData["objId"], "statusId": self.get_status_id(objData["status"]), + "isDeleted": objData["isDeleted"], "objSlug": objData["objSlug"], "objPath": objData["objPath"], "description": objData["description"], diff --git a/MosXml.py b/MosXml.py index f8e75c5..568c82a 100644 --- a/MosXml.py +++ b/MosXml.py @@ -17,14 +17,21 @@ def parse_mos_xml(mosElem: xml.etree.ElementTree.Element) -> bool: status = mosObj.find("status").text if status == "DELETED": - return False + objData = { + "mosId": mosId, + "objId": objId, + "isDeleted": 1 + } + return objData objData = { "mosId": mosId, "objId": objId, "status": status, + "isDeleted": 0, "objSlug": get_text_or_default(mosObj, "objSlug", ""), "objPath": get_text_or_default(mosObj, ["objPaths", "objPath"], ""), + "objProxyPath": get_text_or_default(mosObj, ["objPaths", "objProxyPath"], ""), "objGroup": get_text_or_default(mosObj, "objGroup", ""), "objAir": get_text_or_default(mosObj, "objAir", ""), "created": get_text_or_default(mosObj, "created", ""), diff --git a/scan_moslogs.py b/scan_moslogs.py index f3c9af2..f559c4d 100755 --- a/scan_moslogs.py +++ b/scan_moslogs.py @@ -52,10 +52,11 @@ for file in files_to_parse: mos = elem.find("mos") objData = MosXml.parse_mos_xml(mos) - if objData: + if objData['isDeleted'] == 0: db.add_or_replace(objData) print(".", end="") else: + db.mark_deleted(objData) print("x", end="") db.finish()