Display test result separately
Add option to mark them as reviewed to sort them by priority
PRODX-35953
Change-Id: If45d137b234db0fa42d5fb4316497989c5cd12bf
diff --git a/testrail_bot/control/utils.py b/testrail_bot/control/utils.py
index 6c41f58..73ea55f 100644
--- a/testrail_bot/control/utils.py
+++ b/testrail_bot/control/utils.py
@@ -1,6 +1,8 @@
+import logging
from typing import Any, Callable, Dict, List
from django.core.cache import cache
+from django.db.models import Model
from parse import parse
@@ -109,5 +111,35 @@
return decorator
+class DBHandler(logging.Handler):
+
+ def __init__(self, storage: Model) -> None:
+ logging.Handler.__init__(self)
+ self.storage = storage
+
+ def emit(self, record: logging.LogRecord) -> None:
+ msg = self.format(record)
+ color = "black"
+ if record.levelno == logging.ERROR:
+ color = "red"
+ if record.levelno == logging.DEBUG:
+ color = "grey"
+ self.storage.text += f"<a style='color:{color}'>{msg} </a>\n"
+ self.storage.save()
+ print(self.storage.text)
+
+
+def DBlogger(name: str, storage: Model) -> logging.Logger:
+ _log = logging.getLogger(name)
+ _log.setLevel(logging.DEBUG)
+ formatter = logging.Formatter(
+ "[%(asctime)s] %(message)s", "%d %b %H:%M:%S"
+ )
+ db_h = DBHandler(storage)
+ db_h.setFormatter(formatter)
+ _log.addHandler(db_h)
+ return _log
+
+
if __name__ == "__main__":
pass