From d8dabf0f9e8ae6c7c177c6453c2d07651840abff Mon Sep 17 00:00:00 2001 From: Martastain Date: Fri, 26 Apr 2024 18:28:32 +0200 Subject: [PATCH] Optional explicit ID for project level entities post requests --- ayon_server/entities/models/__init__.py | 26 ++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/ayon_server/entities/models/__init__.py b/ayon_server/entities/models/__init__.py index dd6dfe60..f95a711d 100644 --- a/ayon_server/entities/models/__init__.py +++ b/ayon_server/entities/models/__init__.py @@ -249,11 +249,27 @@ def _generate_entity_model(self) -> Type[BaseModel]: def _generate_post_model(self) -> Type[BaseModel]: """Generate the post model.""" model_name = f"{self.entity_name.capitalize()}PostModel" - fields = [ - f - for f in (self.fields + self._project_level_fields + self._common_fields) - if not f.get("dynamic") - ] + # Allow setting the ID explicitly + fields = ( + [ + { + "name": "id", + "type": "string", + "title": "Entity ID", + "factory": "uuid", + "description": "Explicitly set the ID of the entity", + "regex": ENTITY_ID_REGEX, + "example": ENTITY_ID_EXAMPLE, + } + ] + if self.has_id + else [] + ) + for f in self.fields + self._project_level_fields + self._common_fields: + if f.get("dynamic"): + continue + fields.append(f) + return generate_model(model_name, fields, EntityModelConfig) def _generate_patch_model(self) -> Type[BaseModel]: