fix: add duplicate name validation when updating templates

Fixes #1658

Add validation in the update_template method to check if a template
with the same name already exists before updating. This prevents
users from creating duplicate template names by editing existing
templates.

The check excludes the current template being edited to allow
updating other properties without changing the name.
This commit is contained in:
YueGuobin 2026-05-03 11:06:02 +08:00
parent 165209ba24
commit 1d715e146b
No known key found for this signature in database

View File

@ -281,6 +281,14 @@ class TemplatesService:
if not db_template:
raise ControllerNotFoundError(f"Template '{template_id}' not found")
# Check for duplicate name (excluding current template)
if template_update.name is not None:
existing_template = await self._templates_repo.get_template_by_name_and_version(
template_update.name, db_template.version
)
if existing_template and existing_template.template_id != template_id:
raise ControllerError(f"A template with name '{template_update.name}' already exists")
try:
# validate the update settings
update_settings = jsonable_encoder(template_update, exclude_unset=True)