From c3cd119e21c61625774816fd83c5b88aec122d1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Fri, 11 Mar 2022 17:30:15 +0100 Subject: [PATCH] Addon: start of generating OAPI SubmittedJob object Work in progress. --- addon/flamenco/job_types.py | 41 +++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/addon/flamenco/job_types.py b/addon/flamenco/job_types.py index 79a9f5bf..8ee59f3d 100644 --- a/addon/flamenco/job_types.py +++ b/addon/flamenco/job_types.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: GPL-3.0-or-later -from inspect import isclass import logging +import uuid from typing import TYPE_CHECKING, Callable, Optional, Union import bpy @@ -38,10 +38,12 @@ _prop_types = { if TYPE_CHECKING: - from flamenco.manager.model.available_job_type import AvailableJobType + from flamenco.manager.models import AvailableJobType, SubmittedJob, JobSettings _available_job_types: Optional[list[AvailableJobType]] = None else: + SubmittedJob = object + JobSettings = object _available_job_types = None # Items for a bpy.props.EnumProperty() @@ -114,6 +116,41 @@ def update_job_type_properties(scene: bpy.types.Scene) -> None: ) +def get_job_settings(scene: bpy.types.Scene) -> Optional[JobSettings]: + job_settings = getattr(scene, "flamenco_job_settings", None) + if job_settings is None: + return None + assert isinstance(job_settings, JobSettings), "expected JobSettings, got %s" % ( + type(job_settings) + ) + return job_settings + + +def job_for_scene(scene: bpy.types.Scene) -> Optional[SubmittedJob]: + from flamenco.manager.models import SubmittedJob, JobSettings, JobMetadata + + settings_propgroup = get_job_settings(scene) + if settings_propgroup is None: + return None + + # TODO: convert settings_propgroup to JobSettings. + # dict(settings_propgroup) only includes the user-modified items, which + # isn't enough; the JobSettings() object should also have explicit values + # for the still-default ones. + settings = JobSettings() + metadata = JobMetadata() + + job = SubmittedJob( + name=scene.flamenco_job_name, + type=settings_propgroup.job_type.name, + priority=50, + id=str(uuid.uuid4()), + settings=settings, + metadata=metadata, + ) + return job + + def _clear_available_job_types(): global _available_job_types global _job_type_enum_items