mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Multi client jobs (#15)
* Add API to expose if RenderQueue is available to take new jobs for a given renderer and priority * Fix issue with calculating Blender percent complete when not starting at 1 * Rename owner / client properties to parent / children * Add make_ready method to API * Create and submit subjobs to other servers * Update make_ready to update children jobs and some misc fixes * Misc GUI cleanup
This commit is contained in:
@@ -85,7 +85,7 @@ class DashboardWindow:
|
||||
self.job_tree.tag_configure('running', background='lawn green', font=('', 0, 'bold'))
|
||||
self.job_tree.bind("<<TreeviewSelect>>", self.job_picked)
|
||||
self.job_tree["columns"] = ("id", "Name", "Renderer", "Priority", "Status", "Time Elapsed", "Frames",
|
||||
"Date Added", "Owner", "")
|
||||
"Date Added", "Parent", "")
|
||||
|
||||
# Format the columns
|
||||
self.job_tree.column("id", width=0, stretch=False)
|
||||
@@ -96,7 +96,7 @@ class DashboardWindow:
|
||||
self.job_tree.column("Time Elapsed", width=100, stretch=False)
|
||||
self.job_tree.column("Frames", width=50, stretch=False)
|
||||
self.job_tree.column("Date Added", width=150, stretch=True)
|
||||
self.job_tree.column("Owner", width=250, stretch=True)
|
||||
self.job_tree.column("Parent", width=250, stretch=True)
|
||||
|
||||
# Create the column headings
|
||||
for name in self.job_tree['columns']:
|
||||
@@ -200,7 +200,7 @@ class DashboardWindow:
|
||||
def stop_job(self):
|
||||
job_ids = self.selected_job_ids()
|
||||
for job_id in job_ids:
|
||||
self.current_server_proxy.request_data(f'job/{job_id}/cancel?confirm=true')
|
||||
self.current_server_proxy.cancel_job(job_id, confirm=True)
|
||||
self.update_jobs(clear_table=True)
|
||||
|
||||
def delete_job(self):
|
||||
@@ -250,7 +250,8 @@ class DashboardWindow:
|
||||
self.set_image(self.default_image)
|
||||
|
||||
# update button status
|
||||
job = next((d for d in self.current_server_proxy.get_jobs() if d.get('id') == job_id), None)
|
||||
current_jobs = self.current_server_proxy.get_jobs() or []
|
||||
job = next((d for d in current_jobs if d.get('id') == job_id), None)
|
||||
stop_button_state = 'normal' if job and job['status'] == 'running' else 'disabled'
|
||||
self.stop_button.config(state=stop_button_state)
|
||||
|
||||
@@ -304,11 +305,14 @@ class DashboardWindow:
|
||||
new_proxy.start_background_update()
|
||||
self.server_proxies[hostname] = new_proxy
|
||||
|
||||
for hostname, proxy in self.server_proxies.items():
|
||||
if hostname not in self.server_tree.get_children():
|
||||
self.server_tree.insert("", tk.END, iid=hostname, values=(hostname, proxy.status(), ))
|
||||
else:
|
||||
update_row(self.server_tree, hostname, new_values=(hostname, proxy.status()))
|
||||
try:
|
||||
for hostname, proxy in self.server_proxies.items():
|
||||
if hostname not in self.server_tree.get_children():
|
||||
self.server_tree.insert("", tk.END, iid=hostname, values=(hostname, proxy.status(), ))
|
||||
else:
|
||||
update_row(self.server_tree, hostname, new_values=(hostname, proxy.status()))
|
||||
except RuntimeError:
|
||||
pass
|
||||
|
||||
# remove any servers that don't belong
|
||||
for row in self.server_tree.get_children():
|
||||
@@ -351,7 +355,7 @@ class DashboardWindow:
|
||||
get_time_elapsed(start_time, end_time),
|
||||
job['total_frames'],
|
||||
job['date_created'],
|
||||
job['owner'])
|
||||
job['parent'])
|
||||
try:
|
||||
if self.job_tree.exists(job['id']):
|
||||
update_row(self.job_tree, job['id'], new_values=values, tags=tags)
|
||||
|
||||
Reference in New Issue
Block a user