diff --git a/requirements.txt b/requirements.txt index fc5656a..8875d0f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,4 +12,6 @@ Pillow==10.1.0 zeroconf==0.119.0 Pypubsub~=4.0.3 tqdm==4.66.1 -dmglib==0.9.4 \ No newline at end of file +dmglib==0.9.4 +plyer==2.1.0 +pyobjus==1.2.3 \ No newline at end of file diff --git a/src/distributed_job_manager.py b/src/distributed_job_manager.py index 7690ed6..fc505e6 100644 --- a/src/distributed_job_manager.py +++ b/src/distributed_job_manager.py @@ -4,10 +4,11 @@ import socket import time import zipfile +from plyer import notification from pubsub import pub -from src.render_queue import RenderQueue from src.api.server_proxy import RenderServerProxy +from src.render_queue import RenderQueue from src.utilities.misc_helper import get_file_size_human from src.utilities.status_utils import RenderStatus, string_to_status from src.utilities.zeroconf_server import ZeroconfServer @@ -55,6 +56,29 @@ class DistributedJobManager: # todo: handle cancelling all the children pass + # UI Notifications + if new_status == RenderStatus.COMPLETED: + logger.debug("show render complete notification") + notification.notify( + title='Render Job Complete', + message=f'Render completed for {render_job.name}', + timeout=10 # Display time in seconds + ) + elif new_status == RenderStatus.ERROR: + logger.debug("show render complete notification") + notification.notify( + title='Render Job Failed', + message=f'Failed rendering {render_job.name}', + timeout=10 # Display time in seconds + ) + elif new_status == RenderStatus.RUNNING: + logger.debug("show render complete notification") + notification.notify( + title='Render Job Started', + message=f'Render started for {render_job.name}', + timeout=10 # Display time in seconds + ) + @classmethod def handle_subjob_status_change(cls, local_job, subjob_data): """ diff --git a/src/render_queue.py b/src/render_queue.py index e1b3188..2a081b7 100755 --- a/src/render_queue.py +++ b/src/render_queue.py @@ -33,10 +33,6 @@ class RenderQueue: def start_queue(cls): cls.load_state() - @classmethod - def job_status_change(cls, job_id, status): - logger.debug(f"Job status changed: {job_id} -> {status}") - @classmethod def add_to_render_queue(cls, render_job, force_start=False): logger.debug('Adding priority {} job to render queue: {}'.format(render_job.priority, render_job))