1- """ rest API schema models for projects
1+ """rest API schema models for projects
22
33
44SEE rationale in https://fastapi.tiangolo.com/tutorial/extra-models/#multiple-models
1919 PlainSerializer ,
2020 field_validator ,
2121)
22+ from pydantic .config import JsonDict
2223
2324from ..api_schemas_long_running_tasks .tasks import TaskGet
2425from ..basic_types import LongTruncatedStr , ShortTruncatedStr
@@ -53,9 +54,9 @@ class ProjectCreateNew(InputSchema):
5354 access_rights : dict [GroupIDStr , AccessRights ]
5455
5556 tags : Annotated [list [int ], Field (default_factory = list )] = DEFAULT_FACTORY
56- classifiers : Annotated [
57- list [ ClassifierID ], Field ( default_factory = list )
58- ] = DEFAULT_FACTORY
57+ classifiers : Annotated [list [ ClassifierID ], Field ( default_factory = list )] = (
58+ DEFAULT_FACTORY
59+ )
5960
6061 ui : StudyUI | None = None
6162
@@ -143,7 +144,31 @@ class ProjectGet(OutputSchema):
143144 none_to_empty_str_pre_validator
144145 )
145146
146- model_config = ConfigDict (frozen = False )
147+ @staticmethod
148+ def _update_json_schema_extra (schema : JsonDict ) -> None :
149+ schema .update (
150+ examples = [
151+ {
152+ "uuid" : "a8b0f384-bd08-4793-ab25-65d5a755f4b6" ,
153+ "name" : "My Project" ,
154+ "description" : "This is a sample project" ,
155+ "thumbnail" : "http://example.com/thumbnail.png" ,
156+ "workbench" : {},
157+ 158+ "access_rights" : {},
159+ "trashed_at" : None ,
160+ "trashed_by" : None ,
161+ "dev" : {},
162+ "tags" : [],
163+ "workspace_id" : None ,
164+ "folder_id" : None ,
165+ "creation_date" : "2023-01-01T00:00:00Z" ,
166+ "last_change_date" : "2023-01-02T00:00:00Z" ,
167+ }
168+ ]
169+ )
170+
171+ model_config = ConfigDict (frozen = False , json_schema_extra = _update_json_schema_extra )
147172
148173 @classmethod
149174 def from_domain_model (cls , project_data : dict [str , Any ]) -> Self :
@@ -168,8 +193,7 @@ def from_domain_model(cls, project_data: dict[str, Any]) -> Self:
168193TaskProjectGet : TypeAlias = TaskGet
169194
170195
171- class ProjectListItem (ProjectGet ):
172- ...
196+ class ProjectListItem (ProjectGet ): ...
173197
174198
175199class ProjectReplace (InputSchema ):
0 commit comments