From 21af3fb10904ae8d2194a17f28d2063da3c243ef Mon Sep 17 00:00:00 2001 From: Simon Edwards Date: Fri, 29 Sep 2017 17:17:57 +0200 Subject: [PATCH 1/2] Show a notification when a configuration change is needed for your print CL-271 --- .../NetworkClusterPrinterOutputDevice.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 2a14b1d6dc..297d2b971f 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -413,6 +413,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._print_jobs = print_jobs self._notifyFinishedPrintJobs(old_print_jobs, print_jobs) + self._notifyConfigurationChangeRequired(old_print_jobs, print_jobs) # Yes, this is a hacky way of doing it, but it's quick and the API doesn't give the print job per printer # for some reason. ugh. @@ -475,6 +476,38 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte username = self.__get_username() return [print_job for print_job in print_jobs if print_job["owner"] == username] + def _notifyConfigurationChangeRequired(self, old_print_jobs, new_print_jobs): + if old_print_jobs is None: + return + + old_change_required_print_jobs = self.__filterConfigChangePrintJobs(self.__filterOurPrintJobs(old_print_jobs)) + new_change_required_print_jobs = self.__filterConfigChangePrintJobs(self.__filterOurPrintJobs(new_print_jobs)) + old_change_required_print_job_uuids = set([pj["uuid"] for pj in old_change_required_print_jobs]) + + for print_job in new_change_required_print_jobs: + if print_job["uuid"] not in old_change_required_print_job_uuids: + + printer_name = self.__getPrinterNameFromUuid(print_job["assigned_to"]) + if printer_name is None: + printer_name = i18n_catalog.i18nc("@info:status", "Unknown printer") + + message_text = (i18n_catalog.i18n("{printer_name} is reserved to print '{job_name}'.Please change the printer's configuration to match the job, for it to start printing.") + .format(printer_name=printer_name, job_name=print_job["name"])) + message = Message(text=message_text, title=i18n_catalog.i18nc("@label:status", "Action required")) + Application.getInstance().showMessage(message) + Application.getInstance().showToastMessage( + i18n_catalog.i18nc("@label:status", "Action required"), + message_text) + + def __filterConfigChangePrintJobs(self, print_jobs): + return filter(self.__isConfigurationChangeRequiredPrintJob, print_jobs) + + def __isConfigurationChangeRequiredPrintJob(self, print_job): + if print_job["status"] == "queued": + changes_required = print_job.get("configuration_changes_required", []) + return len(changes_required) != 0 + return False + def __getPrinterNameFromUuid(self, printer_uuid): for printer in self._printers: if printer["uuid"] == printer_uuid: From b7a6a1333619d931b5848a5b3906ad0167aa1107 Mon Sep 17 00:00:00 2001 From: Jack Ha Date: Mon, 2 Oct 2017 10:14:34 +0200 Subject: [PATCH 2/2] CL-271 correct string and change Unknown printer to Unknown which is already in the catalog --- .../UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 297d2b971f..94bd6bc9a3 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -144,7 +144,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte name = self._selected_printer.get("friendly_name") if name != self._automatic_printer.get("friendly_name"): return name - # Return name of cluster master. + # Return name of cluster master. return self._properties.get(b"name", b"").decode("utf-8") def connect(self): @@ -461,7 +461,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte printer_name = self.__getPrinterNameFromUuid(print_job["printer_uuid"]) if printer_name is None: - printer_name = i18n_catalog.i18nc("@info:status", "Unknown printer") + printer_name = i18n_catalog.i18nc("@label", "Unknown") message_text = (i18n_catalog.i18nc("@info:status", "Printer '{printer_name}' has finished printing '{job_name}'.") @@ -491,7 +491,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte if printer_name is None: printer_name = i18n_catalog.i18nc("@info:status", "Unknown printer") - message_text = (i18n_catalog.i18n("{printer_name} is reserved to print '{job_name}'.Please change the printer's configuration to match the job, for it to start printing.") + message_text = (i18n_catalog.i18n("{printer_name} is reserved to print '{job_name}'. Please change the printer's configuration to match the job, for it to start printing.") .format(printer_name=printer_name, job_name=print_job["name"])) message = Message(text=message_text, title=i18n_catalog.i18nc("@label:status", "Action required")) Application.getInstance().showMessage(message)