Forráskód Böngészése

cleanup / Besserer Workflow

gc-server3 1 éve
szülő
commit
ac15a800fc
2 módosított fájl, 19 hozzáadás és 7 törlés
  1. 17 5
      fehlerbericht/mail_import.py
  2. 2 2
      fehlerbericht/prepare_logfiles.py

+ 17 - 5
fehlerbericht/mail_import.py

@@ -1,12 +1,13 @@
+import sys
 from config import DSN, MAILBOX
 from model import StatusMeldung
 
-from datetime import date, time
+from datetime import date, time, timedelta
 from email.message import EmailMessage
 from sqlalchemy import create_engine
 from sqlalchemy.orm import Session
 from sqlalchemy.exc import IntegrityError
-from imap_tools import MailBox
+from imap_tools import MailBox, AND
 import json
 
 
@@ -16,7 +17,7 @@ class MailImport:
             MAILBOX["user"], MAILBOX["password"], MAILBOX["folder"]
         )
 
-    def mail_import(self):
+    def mail_import(self) -> int:
         with (
             Session(create_engine(DSN)) as db_session,
             self.open_mailbox() as mb,
@@ -38,6 +39,7 @@ class MailImport:
                     print(e.args[0])
 
             mb.delete(imported)
+            return len(imported)
 
     def get_status_message(self, msg: EmailMessage) -> StatusMeldung:
         subject = msg.subject.split(";")
@@ -76,10 +78,20 @@ class MailImport:
         )
 
     def cleanup(self):
-        pass
+        date_criteria = date.today() - timedelta(days=7)
+
+        with self.open_mailbox() as mb:
+            messages = mb.fetch(
+                criteria=AND(date_lt=date_criteria, seen=True),
+                limit=500,
+            )
+            selected = [msg.uid for msg in messages]
+            mb.delete(selected)
 
 
 if __name__ == "__main__":
     mi = MailImport()
-    mi.mail_import()
+    res = mi.mail_import()
     mi.cleanup()
+    if res == 0:
+        sys.exit(1)

+ 2 - 2
fehlerbericht/prepare_logfiles.py

@@ -93,13 +93,13 @@ class PrepareLogfiles:
                     sm.anzahl -= 1
 
         sm.fehlerbericht = json.dumps(list(fehlerbericht.values()), indent=2)
-        self.export_log_files(sm, fehlerbericht)
+        # self.export_log_files(sm, fehlerbericht)
         # batch_log = [f for f in fehlerbericht if ".bat" in f["Name"]].pop(0)
         systeminfo_log = SysteminfoLog(
             fehlerbericht.get("system.info", {"Errors": [""]})
         )
         # if systeminfo_log.ip_address == "0.0.0.0":
-        print(sm.kunde)
+        # print(sm.kunde)
 
     def in_whitelist(self, e, whitelist):
         return any(