Break get_time_elapsed into misc_helper (#10)

This commit is contained in:
2023-06-09 11:10:42 -05:00
committed by GitHub
parent 05c8ac506c
commit 75de367153
4 changed files with 43 additions and 42 deletions

View File

@@ -19,6 +19,7 @@ from rich.tree import Tree
from lib.render_workers.base_worker import RenderStatus, string_to_status
from lib.server.server_proxy import RenderServerProxy
from lib.utilities.misc_helper import get_time_elapsed
from start_server import start_server
"""
@@ -133,19 +134,14 @@ def create_jobs_table(all_server_data) -> Table:
if job_status == RenderStatus.ERROR and job['errors']:
job_text = job_text + "\n" + "\n".join(job['errors'])
# calculate elapsed time
elapsed_time = job['time_elapsed']
if job['start_time'] and job_status == RenderStatus.RUNNING:
start_time = datetime.datetime.fromisoformat(job['start_time'])
elapsed_time = str(datetime.datetime.now() - start_time)
# Project name
project_name = job_color + job['name']
project_name = job_color + (job['name'] or os.path.basename(job['input_path']))
elapsed_time = get_time_elapsed(datetime.datetime.fromisoformat(job['start_time']),
datetime.datetime.fromisoformat(job['end_time']))
if job_status == RenderStatus.RUNNING:
job_text = f"{job_color}[bold]Running - {float(job['percent_complete']) * 100:.1f}%"
delta = datetime.datetime.now() - datetime.datetime.fromisoformat(job['start_time'])
elapsed_time = "[bold]" + str(delta)
elapsed_time = "[bold]" + elapsed_time
project_name = "[bold]" + project_name
elif job_status == RenderStatus.CANCELLED or job_status == RenderStatus.ERROR:
project_name = "[strike]" + project_name

View File

@@ -1,3 +1,4 @@
import datetime
import logging
import tkinter as tk
import threading
@@ -9,7 +10,7 @@ from PIL import Image, ImageTk
from lib.client.new_job_window import NewJobWindow
from lib.server.server_proxy import RenderServerProxy
from lib.server.zeroconf_server import ZeroconfServer
from lib.utilities.misc_helper import launch_url, file_exists_in_mounts
from lib.utilities.misc_helper import launch_url, file_exists_in_mounts, get_time_elapsed
logger = logging.getLogger()
@@ -300,7 +301,8 @@ class DashboardWindow:
job['renderer'] + "-" + job['renderer_version'],
job['priority'],
display_status,
job['time_elapsed'],
get_time_elapsed(datetime.datetime.fromisoformat(job['start_time']),
datetime.datetime.fromisoformat(job['end_time'])),
job['total_frames'],
job['date_created'],
job['owner'])

View File

@@ -9,8 +9,9 @@ import glob
from datetime import datetime
from enum import Enum
from sqlalchemy import Column, Integer, String, DateTime, JSON, event
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
from lib.utilities.misc_helper import get_time_elapsed
import psutil
@@ -273,35 +274,7 @@ class BaseRenderWorker(Base):
raise NotImplementedError("_parse_stdout not implemented")
def time_elapsed(self):
from string import Template
class DeltaTemplate(Template):
delimiter = "%"
def strfdelta(tdelta, fmt='%H:%M:%S'):
d = {"D": tdelta.days}
hours, rem = divmod(tdelta.seconds, 3600)
minutes, seconds = divmod(rem, 60)
d["H"] = '{:02d}'.format(hours)
d["M"] = '{:02d}'.format(minutes)
d["S"] = '{:02d}'.format(seconds)
t = DeltaTemplate(fmt)
return t.substitute(**d)
# calculate elapsed time
elapsed_time = None
start_time = self.start_time
end_time = self.end_time
if start_time:
if end_time:
elapsed_time = end_time - start_time
elif self.status == RenderStatus.RUNNING:
elapsed_time = datetime.now() - start_time
elapsed_time_string = strfdelta(elapsed_time) if elapsed_time else "Unknown"
return elapsed_time_string
return get_time_elapsed(self.start_time, self.end_time)
def file_list(self):
job_dir = os.path.dirname(self.output_path)
@@ -322,7 +295,6 @@ class BaseRenderWorker(Base):
'start_time': self.start_time,
'end_time': self.end_time,
'status': self.status.value,
'time_elapsed': self.time_elapsed(),
'file_hash': self.file_hash,
'percent_complete': self.percent_complete(),
'file_count': len(self.file_list()),

View File

@@ -1,6 +1,7 @@
import logging
import os
import subprocess
from datetime import datetime
logger = logging.getLogger()
@@ -55,3 +56,33 @@ def file_exists_in_mounts(filepath):
possible_mount_path = os.path.join(root, mount, filepath.split(component)[-1].lstrip('/'))
if os.path.exists(possible_mount_path):
return possible_mount_path
def get_time_elapsed(start_time=None, end_time=None):
from string import Template
class DeltaTemplate(Template):
delimiter = "%"
def strfdelta(tdelta, fmt='%H:%M:%S'):
d = {"D": tdelta.days}
hours, rem = divmod(tdelta.seconds, 3600)
minutes, seconds = divmod(rem, 60)
d["H"] = '{:02d}'.format(hours)
d["M"] = '{:02d}'.format(minutes)
d["S"] = '{:02d}'.format(seconds)
t = DeltaTemplate(fmt)
return t.substitute(**d)
# calculate elapsed time
elapsed_time = None
if start_time:
if end_time:
elapsed_time = end_time - start_time
else:
elapsed_time = datetime.now() - start_time
elapsed_time_string = strfdelta(elapsed_time) if elapsed_time else None
return elapsed_time_string