mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 08:48:13 +00:00
Fix some issues around adding jobs through local rest call
This commit is contained in:
@@ -140,33 +140,32 @@ def add_job_handler():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
"""Create new job and add to server render queue"""
|
"""Create new job and add to server render queue"""
|
||||||
json_string = request.form.get('json', None)
|
if not request.form.get('json', None) and not request.is_json:
|
||||||
uploaded_file = request.files.get('file', None)
|
|
||||||
if not json_string:
|
|
||||||
return 'missing json data', 400
|
return 'missing json data', 400
|
||||||
|
|
||||||
# handle uploaded files
|
# handle uploaded files
|
||||||
|
uploaded_file = request.files.get('file', None)
|
||||||
uploaded_file_local_path = None
|
uploaded_file_local_path = None
|
||||||
job_dir = None
|
job_dir = None
|
||||||
if uploaded_file and uploaded_file.filename:
|
if uploaded_file and uploaded_file.filename:
|
||||||
logger.info(f"Receiving uploaded file {uploaded_file.filename}")
|
logger.info(f"Receiving uploaded file {uploaded_file.filename}")
|
||||||
new_id = RenderJob.generate_id()
|
job_dir = os.path.join(server.config['UPLOAD_FOLDER'], (uploaded_file.filename + "_" +
|
||||||
job_dir = os.path.join(server.config['UPLOAD_FOLDER'], new_id + "-" + uploaded_file.filename)
|
datetime.now().strftime("%Y.%m.%d_%H.%M.%S")))
|
||||||
if not os.path.exists(job_dir):
|
os.makedirs(job_dir, exist_ok=True)
|
||||||
os.makedirs(job_dir)
|
|
||||||
uploaded_file_local_path = os.path.join(job_dir, secure_filename(uploaded_file.filename))
|
uploaded_file_local_path = os.path.join(job_dir, secure_filename(uploaded_file.filename))
|
||||||
uploaded_file.save(uploaded_file_local_path)
|
uploaded_file.save(uploaded_file_local_path)
|
||||||
|
|
||||||
# convert job input paths for uploaded files and add jobs
|
# convert job input paths for uploaded files and add jobs
|
||||||
jobs_list = json.loads(json_string)
|
json_string = request.form.get('json', None)
|
||||||
|
jobs_list = json.loads(json_string) if json_string else [request.json]
|
||||||
results = []
|
results = []
|
||||||
for job in jobs_list:
|
for job in jobs_list:
|
||||||
if uploaded_file_local_path:
|
if uploaded_file_local_path:
|
||||||
job['input_path'] = uploaded_file_local_path
|
job['input_path'] = uploaded_file_local_path
|
||||||
output_dir = os.path.join(job_dir, job.get('name', 'output'))
|
output_dir = os.path.join(job_dir, job.get('name', None) or 'output')
|
||||||
os.makedirs(output_dir, exist_ok=True)
|
os.makedirs(output_dir, exist_ok=True)
|
||||||
job['output_path'] = os.path.join(output_dir, os.path.basename(job['output_path']))
|
job['output_path'] = os.path.join(output_dir, os.path.basename(job['output_path']))
|
||||||
remove_job_dir = len(jobs_list) == 1 # remove failed job dir for single file uploads only
|
remove_job_dir = len(jobs_list) == 1 and uploaded_file_local_path # remove failed job dir for single file uploads only
|
||||||
add_result = add_job(job, remove_job_dir_on_failure=remove_job_dir)
|
add_result = add_job(job, remove_job_dir_on_failure=remove_job_dir)
|
||||||
results.append(add_result)
|
results.append(add_result)
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ class RenderJob:
|
|||||||
self.date_created = datetime.now()
|
self.date_created = datetime.now()
|
||||||
self.scheduled_start = None
|
self.scheduled_start = None
|
||||||
self.renderer = renderer
|
self.renderer = renderer
|
||||||
self.name = name or os.path.basename(input_path) + '_' + self.date_created.isoformat()
|
self.name = name or os.path.basename(input_path) + '_' + self.date_created.strftime("%Y.%m.%d_%H.%M.%S")
|
||||||
|
|
||||||
self.worker = RenderWorkerFactory.create_worker(renderer, input_path, output_path, args)
|
self.worker = RenderWorkerFactory.create_worker(renderer, input_path, output_path, args)
|
||||||
self.worker.log_path = os.path.join(os.path.dirname(input_path), self.name + '.log')
|
self.worker.log_path = os.path.join(os.path.dirname(input_path), self.name + '.log')
|
||||||
@@ -45,7 +45,7 @@ class RenderJob:
|
|||||||
try:
|
try:
|
||||||
job_dict = self.__dict__.copy()
|
job_dict = self.__dict__.copy()
|
||||||
job_dict['status'] = self.render_status().value
|
job_dict['status'] = self.render_status().value
|
||||||
job_dict['file_hash'] = self.file_hash if isinstance(self.file_hash, str) else self.file_hash()
|
job_dict['file_hash'] = self.file_hash if self.file_hash and isinstance(self.file_hash, str) else self.file_hash()
|
||||||
job_dict['worker'] = self.worker.__dict__.copy()
|
job_dict['worker'] = self.worker.__dict__.copy()
|
||||||
job_dict['worker']['status'] = job_dict['status']
|
job_dict['worker']['status'] = job_dict['status']
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user