Skip to content

Commit a991543

Browse files
committed
refactor(manager): reuse parse_model_chain for camerachain validation
Replace manual model validation in CamCreateForm.clean_camerachain() with parse_model_chain() from ppl_generator. This aligns validation with the existing pipeline parser and ensures future compatibility with potential chain syntax changes. Also includes minor indentation fixes.
1 parent d9b9fe7 commit a991543

File tree

1 file changed

+15
-21
lines changed

1 file changed

+15
-21
lines changed

manager/src/django/forms.py

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -190,34 +190,28 @@ def __init__(self, *args, **kwargs):
190190
def clean_camerachain(self):
191191
camerachain = self.cleaned_data.get('camerachain', '').strip()
192192
if not camerachain:
193-
return camerachain
193+
return camerachain
194194

195195
from pathlib import Path
196-
from manager.ppl_generator.model_chain import CameraChainOperations
197-
198-
# Load model config
196+
from manager.ppl_generator.model_chain import parse_model_chain
197+
from manager.ppl_generator import PipelineGenerationValueError, PipelineGenerationNotImplementedError
198+
199199
model_config_path = Path(os.environ.get('MODEL_CONFIGS_FOLDER', '/models/model_configs')) / 'model_config.json'
200200
if not model_config_path.is_file():
201-
raise ValidationError(f"Model config file not found at {model_config_path}")
202-
201+
raise ValidationError(f"Model config file not found at {model_config_path}")
202+
203203
try:
204-
with open(model_config_path, 'r') as f:
205-
model_config = json.load(f)
204+
with open(model_config_path, 'r') as f:
205+
model_config = json.load(f)
206206
except (json.JSONDecodeError, IOError) as e:
207-
raise ValidationError(f"Error reading model config: {str(e)}")
208-
209-
# Extract model names from chain
210-
chain_parts = camerachain.replace(CameraChainOperations.PARALLEL.value, CameraChainOperations.SEQUENTIAL.value)
211-
model_names = [part.split('=')[0].strip() for part in chain_parts.split(CameraChainOperations.SEQUENTIAL.value) if part.strip()]
212-
213-
# Validate models exist
214-
missing = [m for m in model_names if m not in model_config]
215-
if missing:
216-
missing_str = ', '.join(f"'{m}'" for m in missing)
217-
available = ', '.join(f"'{m}'" for m in sorted(model_config.keys()))
218-
raise ValidationError(f"Error adding camera: Model(s) {missing_str} not found in model config file. Available models: {available}")
207+
raise ValidationError(f"Error reading model config: {str(e)}")
208+
209+
try:
210+
parse_model_chain(camerachain, settings.MODEL_ROOT, model_config)
211+
except (PipelineGenerationValueError, PipelineGenerationNotImplementedError) as e:
212+
raise ValidationError(str(e))
219213

220-
return camerachain
214+
return camerachain
221215

222216
class ChildSceneForm(forms.ModelForm):
223217
class Meta:

0 commit comments

Comments
 (0)