Created start_client.py and moved server_proxy.py to server directory

This commit is contained in:
Brett Williams
2023-06-03 12:49:04 -05:00
parent 77aa40c4cc
commit af24bc6beb
5 changed files with 19 additions and 42 deletions

View File

@@ -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()

View File

@@ -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()

View File

@@ -1,58 +0,0 @@
import os
import json
import requests
from lib.render_workers.base_worker import RenderStatus
status_colors = {RenderStatus.ERROR: "red", RenderStatus.CANCELLED: 'orange1', RenderStatus.COMPLETED: 'green',
RenderStatus.NOT_STARTED: "yellow", RenderStatus.SCHEDULED: 'purple',
RenderStatus.RUNNING: 'cyan'}
categories = [RenderStatus.RUNNING, RenderStatus.ERROR, RenderStatus.NOT_STARTED, RenderStatus.SCHEDULED,
RenderStatus.COMPLETED, RenderStatus.CANCELLED, RenderStatus.UNDEFINED]
class RenderServerProxy:
def __init__(self, hostname=None, server_port="8080"):
self.hostname = hostname
self.port = server_port
self.fetched_status_data = None
def connect(self):
status = self.request_data('status')
return status
def request_data(self, payload, timeout=5):
try:
req = self.request(payload, timeout)
if req.ok:
return req.json()
except Exception as e:
pass
return None
def request(self, payload, timeout=5):
return requests.get(f'http://{self.hostname}:{self.port}/api/{payload}', timeout=timeout)
def get_jobs(self, timeout=5):
all_jobs = self.request_data('jobs', timeout=timeout)
if all_jobs is not None:
sorted_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)
all_jobs = sorted_jobs
return all_jobs
def get_data(self, timeout=5):
all_data = self.request_data('full_status', timeout=timeout)
return all_data
def post_job_to_server(self, input_path, job_list):
# Pack job data and submit to server
job_files = {'file': (os.path.basename(input_path), open(input_path, 'rb'), 'application/octet-stream'),
'json': (None, json.dumps(job_list), 'application/json')}
req = requests.post(f'http://{self.hostname}:{self.port}/api/add_job', files=job_files)
return req