Fix issue where custom job name was being ignored

This commit is contained in:
Brett Williams
2024-08-04 11:47:56 -05:00
parent 220b3fcc25
commit 86977b9d6d
3 changed files with 20 additions and 17 deletions

View File

@@ -49,12 +49,11 @@ def handle_uploaded_project_files(request, jobs_list, upload_directory):
raise ValueError(f"Error downloading file from URL: {project_url}") raise ValueError(f"Error downloading file from URL: {project_url}")
elif local_path and os.path.exists(local_path): elif local_path and os.path.exists(local_path):
referred_name = os.path.basename(local_path) referred_name = os.path.basename(local_path)
else: else:
raise ValueError("Cannot find any valid project paths") raise ValueError("Cannot find any valid project paths")
# Prepare the local filepath # Prepare the local filepath
cleaned_path_name = os.path.splitext(referred_name)[0].replace(' ', '_') cleaned_path_name = jobs_list[0].get('name', os.path.splitext(referred_name)[0]).replace(' ', '-')
job_dir = os.path.join(upload_directory, '-'.join( job_dir = os.path.join(upload_directory, '-'.join(
[datetime.now().strftime("%Y.%m.%d_%H.%M.%S"), renderer, cleaned_path_name])) [datetime.now().strftime("%Y.%m.%d_%H.%M.%S"), renderer, cleaned_path_name]))
os.makedirs(job_dir, exist_ok=True) os.makedirs(job_dir, exist_ok=True)

View File

@@ -62,7 +62,10 @@ class BlenderRenderWorker(BaseRenderWorker):
# Export format # Export format
export_format = self.args.get('export_format', None) or 'JPEG' export_format = self.args.get('export_format', None) or 'JPEG'
path_without_ext = os.path.splitext(self.output_path)[0] + "_" main_part, ext = os.path.splitext(self.output_path)
# Remove the extension only if it is not composed entirely of digits
path_without_ext = main_part if not ext[1:].isdigit() else self.output_path
path_without_ext += "_"
cmd.extend(['-E', blender_engine, '-o', path_without_ext, '-F', export_format]) cmd.extend(['-E', blender_engine, '-o', path_without_ext, '-F', export_format])
# set frame range # set frame range

View File

@@ -55,7 +55,7 @@ class NewRenderJobForm(QWidget):
self.priority_input = None self.priority_input = None
self.end_frame_input = None self.end_frame_input = None
self.start_frame_input = None self.start_frame_input = None
self.output_path_input = None self.render_name_input = None
self.scene_file_input = None self.scene_file_input = None
self.scene_file_browse_button = None self.scene_file_browse_button = None
self.job_name_input = None self.job_name_input = None
@@ -136,11 +136,11 @@ class NewRenderJobForm(QWidget):
self.output_settings_group = QGroupBox("Output Settings") self.output_settings_group = QGroupBox("Output Settings")
output_settings_layout = QVBoxLayout(self.output_settings_group) output_settings_layout = QVBoxLayout(self.output_settings_group)
# output path # output path
output_path_layout = QHBoxLayout() render_name_layout = QHBoxLayout()
output_path_layout.addWidget(QLabel("Render name:")) render_name_layout.addWidget(QLabel("Render name:"))
self.output_path_input = QLineEdit() self.render_name_input = QLineEdit()
output_path_layout.addWidget(self.output_path_input) render_name_layout.addWidget(self.render_name_input)
output_settings_layout.addLayout(output_path_layout) output_settings_layout.addLayout(render_name_layout)
# file format # file format
file_format_layout = QHBoxLayout() file_format_layout = QHBoxLayout()
file_format_layout.addWidget(QLabel("Format:")) file_format_layout.addWidget(QLabel("Format:"))
@@ -281,7 +281,7 @@ class NewRenderJobForm(QWidget):
output_name, _ = os.path.splitext(os.path.basename(self.scene_file_input.text())) output_name, _ = os.path.splitext(os.path.basename(self.scene_file_input.text()))
output_name = output_name.replace(' ', '_') output_name = output_name.replace(' ', '_')
self.output_path_input.setText(output_name) self.render_name_input.setText(output_name)
file_name = self.scene_file_input.text() file_name = self.scene_file_input.text()
# setup bg worker # setup bg worker
@@ -292,7 +292,7 @@ class NewRenderJobForm(QWidget):
def browse_output_path(self): def browse_output_path(self):
directory = QFileDialog.getExistingDirectory(self, "Select Output Directory") directory = QFileDialog.getExistingDirectory(self, "Select Output Directory")
if directory: if directory:
self.output_path_input.setText(directory) self.render_name_input.setText(directory)
def args_help_button_clicked(self): def args_help_button_clicked(self):
url = (f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/renderer/' url = (f'http://{self.server_proxy.hostname}:{self.server_proxy.port}/api/renderer/'
@@ -316,8 +316,6 @@ class NewRenderJobForm(QWidget):
self.renderer_type.setCurrentIndex(0) #todo: find out why we don't have renderer info yet self.renderer_type.setCurrentIndex(0) #todo: find out why we don't have renderer info yet
# not ideal but if we don't have the renderer info we have to pick something # not ideal but if we don't have the renderer info we have to pick something
self.output_path_input.setText(os.path.basename(input_path))
# cleanup progress UI # cleanup progress UI
self.load_file_group.setHidden(True) self.load_file_group.setHidden(True)
self.toggle_renderer_enablement(True) self.toggle_renderer_enablement(True)
@@ -451,14 +449,16 @@ class SubmitWorker(QThread):
job_json = {'owner': psutil.Process().username() + '@' + socket.gethostname(), job_json = {'owner': psutil.Process().username() + '@' + socket.gethostname(),
'renderer': self.window.renderer_type.currentText().lower(), 'renderer': self.window.renderer_type.currentText().lower(),
'engine_version': self.window.renderer_version_combo.currentText(), 'engine_version': self.window.renderer_version_combo.currentText(),
'args': {'raw': self.window.raw_args.text()}, 'args': {'raw': self.window.raw_args.text(),
'output_path': self.window.output_path_input.text(), 'export_format': self.window.file_format_combo.currentText()},
'output_path': self.window.render_name_input.text(),
'start_frame': self.window.start_frame_input.value(), 'start_frame': self.window.start_frame_input.value(),
'end_frame': self.window.end_frame_input.value(), 'end_frame': self.window.end_frame_input.value(),
'priority': self.window.priority_input.currentIndex() + 1, 'priority': self.window.priority_input.currentIndex() + 1,
'notes': self.window.notes_input.toPlainText(), 'notes': self.window.notes_input.toPlainText(),
'enable_split_jobs': self.window.enable_splitjobs.isChecked(), 'enable_split_jobs': self.window.enable_splitjobs.isChecked(),
'split_jobs_same_os': self.window.splitjobs_same_os.isChecked()} 'split_jobs_same_os': self.window.splitjobs_same_os.isChecked(),
'name': self.window.render_name_input.text()}
# get the dynamic args # get the dynamic args
for i in range(self.window.renderer_options_layout.count()): for i in range(self.window.renderer_options_layout.count()):
@@ -487,7 +487,8 @@ class SubmitWorker(QThread):
for cam in selected_cameras: for cam in selected_cameras:
job_copy = copy.deepcopy(job_json) job_copy = copy.deepcopy(job_json)
job_copy['args']['camera'] = cam job_copy['args']['camera'] = cam
job_copy['name'] = pathlib.Path(input_path).stem.replace(' ', '_') + "-" + cam.replace(' ', '') job_copy['name'] = job_copy['name'].replace(' ', '-') + "_" + cam.replace(' ', '')
job_copy['output_path'] = job_copy['name']
job_list.append(job_copy) job_list.append(job_copy)
else: else:
job_list = [job_json] job_list = [job_json]