From bba97d1bf4205d15a9605fa53b2313b3725d8bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Brunner?= Date: Fri, 30 Jun 2023 20:40:48 +0200 Subject: [PATCH] Add images number --- scan_to_paperless/status.html | 5 ++++- scan_to_paperless/status.py | 30 +++++++++++++++++++----------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/scan_to_paperless/status.html b/scan_to_paperless/status.html index eb1a61c0..d937f547 100644 --- a/scan_to_paperless/status.html +++ b/scan_to_paperless/status.html @@ -65,7 +65,10 @@

Jobs status

{% for name, folder in status.items(): %} {% set tr_attributes = ' class="alert alert-info"' if name == self._current_folder else "" %} - {{ name }} + {{ name }}{% + if folder.nb_images > 0 %}({{ folder.nb_images }} image{% + if folder.nb_images > 1 %}s){% + endid %} {{ folder.status }} {{ folder.details | safe }} diff --git a/scan_to_paperless/status.py b/scan_to_paperless/status.py index 38505db1..bfe24507 100644 --- a/scan_to_paperless/status.py +++ b/scan_to_paperless/status.py @@ -21,6 +21,7 @@ class _Folder(NamedTuple): + mb_images: int status: str details: str @@ -62,13 +63,15 @@ def set_current_config(self, name: str) -> None: name = os.path.basename(os.path.dirname(name)) self._current_folder = name - def set_status(self, name: str, status: str, details: str = "") -> None: + def set_status(self, name: str, nb_images: int, status: str, details: str = "") -> None: """Set the status of a folder.""" # Config file name if name.endswith("/config.yaml"): name = os.path.basename(os.path.dirname(name)) - self._status[name] = _Folder(html.escape(status), details) + if nb_images <= 0 and name in self._status: + nb_images = self._status[name].nb_images + self._status[name] = _Folder(nb_images, html.escape(status), details) if self.no_write: print(f"{name}: {status}") @@ -104,12 +107,12 @@ def _update_status(self, name: str) -> None: error = yaml.load(error_file) self.set_status( - name, "Error: " + error["error"], "" + "
".join(error["traceback"]) + "
" + name, -1, "Error: " + error["error"], "" + "
".join(error["traceback"]) + "
" ) return if os.path.exists(os.path.join(os.environ.get("SCAN_SOURCE_FOLDER", "/source"), name, "DONE")): - self.set_status(name, "Done") + self.set_status(name, -1, "Done") return if not os.path.exists( @@ -126,7 +129,7 @@ def _update_status(self, name: str) -> None: ) if os.path.isfile(f) ] - self.set_status(name, "Missing config", ", ".join(files)) + self.set_status(name, -1, "Missing config", ", ".join(files)) return with open( @@ -136,7 +139,7 @@ def _update_status(self, name: str) -> None: config = yaml.load(config_file) if config is None: - self.set_status(name, "Empty config") + self.set_status(name, -1, "Empty config") return if os.path.exists( @@ -146,19 +149,24 @@ def _update_status(self, name: str) -> None: for image in config["steps"][-1]["sources"]: if not os.path.exists(image): rerun = True + nb_images = -1 + if config.get("steps", []): + nb_images = len(config["steps"][-1]["sources"]) + elif "sources" in config: + nb_images = len(config["sources"]) if rerun: if len(config["steps"]) >= 2: - self.set_status(name, "Waiting to " + config["steps"][-2]) + self.set_status(name, nb_images, "Waiting to " + config["steps"][-2]) else: - self.set_status(name, "Waiting to transform") + self.set_status(name, nb_images, "Waiting to transform") else: - self.set_status(name, WAITING_STATUS_NAME, WAITING_STATUS_DESCRIPTION) + self.set_status(name, nb_images, WAITING_STATUS_NAME, WAITING_STATUS_DESCRIPTION) else: if len(config["steps"]) >= 1: - self.set_status(name, "Waiting to " + config["steps"][-1]["name"]) + self.set_status(name, nb_images, "Waiting to " + config["steps"][-1]["name"]) else: - self.set_status(name, "Waiting to transform") + self.set_status(name, nb_images, "Waiting to transform") def write(self) -> None: """Write the status file."""