From af24bc6bebe9c8b7b431f2a800bf631de47a35bc Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Sat, 3 Jun 2023 12:49:04 -0500 Subject: [PATCH] Created start_client.py and moved server_proxy.py to server directory --- dashboard.py | 37 +------------------------- lib/client/client.py | 18 +++++++++---- lib/client/new_job_window.py | 2 +- lib/{client => server}/server_proxy.py | 0 start_client.py | 4 +++ 5 files changed, 19 insertions(+), 42 deletions(-) rename lib/{client => server}/server_proxy.py (100%) create mode 100644 start_client.py diff --git a/dashboard.py b/dashboard.py index b1f08c7..2cd7bd5 100755 --- a/dashboard.py +++ b/dashboard.py @@ -18,6 +18,7 @@ from rich.text import Text from rich.tree import Tree from lib.render_workers.base_worker import RenderStatus, string_to_status +from lib.server.server_proxy import RenderServerProxy from start_server import start_server """ @@ -177,42 +178,6 @@ def create_status_panel(all_server_data): return "no status" -class RenderServerProxy: - - def __init__(self, server_ip=None, server_port="8080"): - self.hostname = server_ip - self.port = server_port - self.local_hostname = local_hostname - self.fetched_status_data = None - - def connect(self): - status = self.request_data('status') - return status - - def request_data(self, payload, timeout=5): - try: - req = requests.get(f'http://{self.hostname}:{self.port}/api/{payload}', timeout=timeout) - if req.ok: - return req.json() - except Exception as e: - pass - return None - - def get_jobs(self): - all_jobs = self.request_data('jobs') - sorted_jobs = [] - if all_jobs: - for status_category in categories: - found_jobs = [x for x in all_jobs if x['status'] == status_category.value] - if found_jobs: - sorted_jobs.extend(found_jobs) - return sorted_jobs - - def get_data(self, timeout=5): - all_data = self.request_data('full_status', timeout=timeout) - return all_data - - class KeyboardThread(threading.Thread): def __init__(self, input_cbk = None, name='keyboard-input-thread'): diff --git a/lib/client/client.py b/lib/client/client.py index 227f04a..8bb3603 100644 --- a/lib/client/client.py +++ b/lib/client/client.py @@ -8,8 +8,9 @@ import socket import os, sys from tkinter import ttk, messagebox from PIL import Image, ImageTk -from new_job_window import NewJobWindow -from server_proxy import RenderServerProxy +from lib.client.new_job_window import NewJobWindow +from lib.server.server_proxy import RenderServerProxy + sys.path.append("../") from lib.server.zeroconf_server import ZeroconfServer @@ -42,7 +43,9 @@ def available_servers(): class ZordonClient: - default_image = Image.open("../server/static/images/desktop.png") + lib_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + image_path = os.path.join(lib_path, 'server', 'static', 'images', 'desktop.png') + default_image = Image.open(image_path) def __init__(self): @@ -239,6 +242,7 @@ class ZordonClient: if values[0] == id: tree.item(item, values=new_values, tags=tags) break + job_fetch = self.server_proxy.get_jobs() if job_fetch is not None: if len(job_fetch) < len(self.job_cache) or len(job_fetch) == 0: @@ -246,7 +250,7 @@ class ZordonClient: self.job_cache = job_fetch # update the cache only if its good data for job in self.job_cache: display_status = job['status'] if job['status'] != 'running' else \ - ('%.0f%%' % (job['percent_complete'] * 100)) # if running, show percentage, otherwise just show status + ('%.0f%%' % (job['percent_complete'] * 100)) # if running, show percent, otherwise just show status tags = (job['status'],) values = (job['id'], job['name'] or os.path.basename(job['input_path']), @@ -279,6 +283,10 @@ class ZordonClient: x.pack() -if __name__ == '__main__': +def start_client(): x = ZordonClient() x.mainloop() + + +if __name__ == '__main__': + start_client() diff --git a/lib/client/new_job_window.py b/lib/client/new_job_window.py index 1fa4f99..0502387 100755 --- a/lib/client/new_job_window.py +++ b/lib/client/new_job_window.py @@ -14,7 +14,7 @@ import requests import sys sys.path.append('../../') from lib.render_workers.blender_worker import Blender -from server_proxy import RenderServerProxy +from lib.server.server_proxy import RenderServerProxy logger = logging.getLogger() diff --git a/lib/client/server_proxy.py b/lib/server/server_proxy.py similarity index 100% rename from lib/client/server_proxy.py rename to lib/server/server_proxy.py diff --git a/start_client.py b/start_client.py new file mode 100644 index 0000000..38b8e8d --- /dev/null +++ b/start_client.py @@ -0,0 +1,4 @@ +from lib.client.client import start_client + +if __name__ == '__main__': + start_client() \ No newline at end of file