fastgenerateapi 1.2.10__tar.gz → 1.2.11__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/PKG-INFO +1 -1
  2. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/__version__.py +1 -1
  3. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/base_view.py +10 -1
  4. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/get_all_view.py +7 -3
  5. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/get_one_view.py +2 -13
  6. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/common_function.py +8 -3
  7. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/common_schema_factory.py +4 -4
  8. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +24 -24
  9. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +32 -25
  10. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +25 -25
  11. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -77
  12. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi.egg-info/PKG-INFO +1 -1
  13. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/LICENSE +0 -0
  14. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/README.md +0 -0
  15. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/__init__.py +0 -0
  16. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/__init__.py +0 -0
  17. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/api_view.py +0 -0
  18. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/create_view.py +0 -0
  19. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/delete_filter_view.py +0 -0
  20. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/delete_tree_view.py +0 -0
  21. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/delete_view.py +0 -0
  22. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/get_relation_view.py +0 -0
  23. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/get_tree_view.py +0 -0
  24. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
  25. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
  26. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
  27. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
  28. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
  29. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
  30. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
  31. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
  32. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
  33. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
  34. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
  35. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -0
  36. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
  37. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/sql_get_view.py +0 -0
  38. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/switch_view.py +0 -0
  39. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/update_relation_view.py +0 -0
  40. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/api_view/update_view.py +0 -0
  41. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/cache/__init__.py +0 -0
  42. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/cache/cache_decorator.py +0 -0
  43. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/cache/key_builder.py +0 -0
  44. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/channel/__init__.py +0 -0
  45. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/channel/connection_manager.py +0 -0
  46. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/channel/consumer.py +0 -0
  47. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/channel/websocket_view.py +0 -0
  48. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/controller/__init__.py +0 -0
  49. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/controller/filter_controller.py +0 -0
  50. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/controller/router_controller.py +0 -0
  51. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/controller/rpc_controller.py +0 -0
  52. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/controller/search_controller.py +0 -0
  53. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/controller/ws_controller.py +0 -0
  54. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/data_type/__init__.py +0 -0
  55. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/data_type/data_type.py +0 -0
  56. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
  57. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/deps/__init__.py +0 -0
  58. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/deps/filter_params_deps.py +0 -0
  59. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/deps/paginator_deps.py +0 -0
  60. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/deps/tree_params_deps.py +0 -0
  61. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/example/__init__.py +0 -0
  62. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/example/models.py +0 -0
  63. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/example/routers.py +0 -0
  64. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/example/schemas.py +0 -0
  65. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/example/views.py +0 -0
  66. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
  67. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/fastapi_utils/all.py +0 -0
  68. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
  69. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
  70. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/fastapi_utils/tortoise_utils.py +0 -0
  71. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/model/__init__.py +0 -0
  72. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/model/base_model.py +0 -0
  73. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/__init__.py +0 -0
  74. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/aes_field.py +0 -0
  75. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/enum_field.py +0 -0
  76. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/pk_field.py +0 -0
  77. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/pwd_field.py +0 -0
  78. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
  79. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/my_fields/validator.py +0 -0
  80. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
  81. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
  82. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
  83. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
  84. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/__init__.py +0 -0
  85. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/create_schema_factory.py +0 -0
  86. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
  87. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
  88. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
  89. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/schemas_factory/update_schema_factory.py +0 -0
  90. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/__init__.py +0 -0
  91. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/all_settings.py +0 -0
  92. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/app_settings.py +0 -0
  93. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/db_settings.py +0 -0
  94. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/etcd_settings.py +0 -0
  95. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/file_settings.py +0 -0
  96. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/jwt_settings.py +0 -0
  97. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/otlp_settings.py +0 -0
  98. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/redis_settings.py +0 -0
  99. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/sms_settings.py +0 -0
  100. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/settings/system_settings.py +0 -0
  101. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/__init__.py +0 -0
  102. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/aes.py +0 -0
  103. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/auto_discover.py +0 -0
  104. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/exception.py +0 -0
  105. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/file_utils.py +0 -0
  106. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/pwd_utils.py +0 -0
  107. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/ramdom_utils.py +0 -0
  108. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/snowflake.py +0 -0
  109. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/str_util.py +0 -0
  110. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi/utils/swagger_to_js.py +0 -0
  111. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi.egg-info/SOURCES.txt +0 -0
  112. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
  113. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/fastgenerateapi.egg-info/top_level.txt +0 -0
  114. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/script/__init__.py +0 -0
  115. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/setup.cfg +0 -0
  116. {fastgenerateapi-1.2.10 → fastgenerateapi-1.2.11}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.10
3
+ Version: 1.2.11
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com
@@ -8,7 +8,7 @@
8
8
  # d8888P
9
9
 
10
10
 
11
- VERSION = (1, 2, 10)
11
+ VERSION = (1, 2, 11)
12
12
 
13
13
  __version__ = '.'.join(map(str, VERSION))
14
14
 
@@ -220,7 +220,16 @@ class BaseView(BaseMixin, ResponseMixin, ToolMixin, DBModelMixin):
220
220
  :return:
221
221
  """
222
222
  if not self.response_schema:
223
- self.response_schema = get_one_schema_factory(model_class=self.model_class)
223
+ get_one_schema_include = []
224
+ if self.is_with_prefetch and self.prefetch_related_fields:
225
+ for key, value in self.prefetch_related_fields.items():
226
+ if value and type(value) in [list, tuple, set]:
227
+ for val in value:
228
+ val_str = val
229
+ if type(val) in [list, tuple, set]:
230
+ val_str = val[0]
231
+ get_one_schema_include.append(key + "__" + val_str)
232
+ self.response_schema = get_one_schema_factory(self.model_class, extra_include=get_one_schema_include)
224
233
 
225
234
  return self.response_schema
226
235
 
@@ -152,9 +152,10 @@ class GetAllView(BaseView, GetMixin):
152
152
  key_builder=generate_key_builder))
153
153
  async def route(
154
154
  request: Request,
155
- paginator = Depends(paginator_deps()),
155
+ paginator=Depends(paginator_deps()),
156
156
  search: Optional[str] = Depends(search_params_deps(self.search_fields)),
157
- filters: dict = Depends(filter_params_deps(model_class=self.model_class, fields=self.filter_fields, schema=self.filter_schema)),
157
+ filters: dict = Depends(filter_params_deps(model_class=self.model_class, fields=self.filter_fields,
158
+ schema=self.filter_schema)),
158
159
  extra_filters: dict = Depends(extra_filter_params_deps(schema=self.extra_filter_schema)),
159
160
  token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
160
161
  ) -> JSONResponse:
@@ -193,7 +194,10 @@ class GetAllView(BaseView, GetMixin):
193
194
  if type(val) in [list, tuple, set]:
194
195
  val_str = val[0]
195
196
  get_all_schema_include.append(key + "__" + val_str)
196
- self.get_all_schema = get_all_schema_factory(self.model_class, extra_include=get_all_schema_include)
197
+ if hasattr_get_all_schema(self.model_class) or get_all_schema_include:
198
+ self.get_all_schema = get_all_schema_factory(self.model_class, extra_include=get_all_schema_include)
199
+ else:
200
+ self.get_all_schema = self.get_response_schema()
197
201
  self.get_page_schema = get_page_schema_factory(self.get_all_schema)
198
202
  self.get_list_schema = get_list_schema_factory(self.get_all_schema)
199
203
  self.get_all_response_schema_factory = response_factory(self.get_page_schema, name="GetPage")
@@ -75,19 +75,8 @@ class GetOneView(BaseView, GetMixin):
75
75
  if func_type != inspect._empty and func_type is not None:
76
76
  self.get_one_schema = func_type
77
77
  if not self.get_one_schema:
78
- get_one_schema_include = []
79
- if self.is_with_prefetch and self.prefetch_related_fields:
80
- for key, value in self.prefetch_related_fields.items():
81
- if value and type(value) in [list, tuple, set]:
82
- for val in value:
83
- val_str = val
84
- if type(val) in [list, tuple, set]:
85
- val_str = val[0]
86
- get_one_schema_include.append(key + "__" + val_str)
87
- self.get_one_schema = get_one_schema_factory(
88
- model_class=self.model_class,
89
- extra_include=get_one_schema_include
90
- )
78
+ self.get_one_schema = self.get_response_schema()
79
+
91
80
  self.get_one_response_schema_factory = response_factory(self.get_one_schema, name="GetOne")
92
81
  if not self.get_one_summary:
93
82
  doc = self.get_one.__doc__
@@ -77,11 +77,16 @@ def get_field_info_from_model_class(model_class: Type[Model], field: str, descri
77
77
  return Optional[str], FieldInfo(default=None, description=f"{field}")
78
78
  return get_field_info(value, description=description)
79
79
 
80
- field_info = model_class._meta.fields_map.get(field.split("__", maxsplit=1)[0])
80
+ split_left_field = field.split("__", maxsplit=1)[0]
81
+ field_info = model_class._meta.fields_map.get(split_left_field)
81
82
  if field_info:
82
83
  description += field_info.description or ""
84
+ elif split_left_field.endswith("_id"):
85
+ field_info = model_class._meta.fields_map.get(split_left_field.removesuffix("_id"))
86
+ if field_info:
87
+ description += field_info.description or ""
83
88
 
84
- model_class = DBModelMixin._get_foreign_key_relation_class(model_class, field.split("__", maxsplit=1)[0])
89
+ model_class = DBModelMixin._get_foreign_key_relation_class(model_class, split_left_field)
85
90
 
86
91
  return get_field_info_from_model_class(model_class, field.split("__", maxsplit=1)[1], description)
87
92
 
@@ -103,7 +108,7 @@ def get_dict_from_pydanticmeta(model_class: Type[Model], data: Union[list, tuple
103
108
  if len(field) == 2:
104
109
  if isinstance(field[1], str):
105
110
  key_field = field[1]
106
- if isinstance(field[2], FieldInfo):
111
+ elif isinstance(field[1], FieldInfo):
107
112
  field_info = field[1]
108
113
  else:
109
114
  field_type = field[1]
@@ -31,18 +31,18 @@ def common_schema_factory(
31
31
  exclude_fields.update(["id", "created_at", "modified_at", "updated_at"])
32
32
  if include:
33
33
  include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
34
- all_fields_info.update(include_fields_dict)
34
+ all_fields_info = {**include_fields_dict, **all_fields_info}
35
35
  include_fields.update(include_fields_dict.keys())
36
36
  else:
37
37
  if hasattr(model_class, "PydanticMeta"):
38
38
  if pydantic_meta_include:
39
39
  include_fields_dict = get_dict_from_pydanticmeta(model_class, pydantic_meta_include)
40
- all_fields_info.update(include_fields_dict)
40
+ all_fields_info = {**include_fields_dict, **all_fields_info}
41
41
  include_fields.update(include_fields_dict.keys())
42
42
  else:
43
43
  if hasattr(model_class.PydanticMeta, "include"):
44
44
  include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
45
- all_fields_info.update(include_fields_dict)
45
+ all_fields_info = {**include_fields_dict, **all_fields_info}
46
46
  include_fields.update(include_fields_dict.keys())
47
47
  else:
48
48
  include_fields.update(all_fields_info.keys())
@@ -53,7 +53,7 @@ def common_schema_factory(
53
53
 
54
54
  if extra_include:
55
55
  include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
56
- all_fields_info.update(include_fields_dict)
56
+ all_fields_info = {**include_fields_dict, **all_fields_info}
57
57
  include_fields.update(include_fields_dict.keys())
58
58
  if exclude:
59
59
  exclude_fields.update(exclude)
@@ -91,7 +91,7 @@ def get_all_schema_factory(
91
91
  text_to_list_fields = set()
92
92
  if include:
93
93
  include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
94
- all_fields_info.update(include_fields_dict)
94
+ all_fields_info = {**include_fields_dict, **all_fields_info}
95
95
  include_fields.update(include_fields_dict.keys())
96
96
  else:
97
97
  if hasattr(model_class, "PydanticMeta"):
@@ -131,29 +131,29 @@ def get_all_schema_factory(
131
131
  else:
132
132
  include_fields.update(all_fields_info.keys())
133
133
 
134
- if extra_include:
135
- include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
136
- all_fields_info.update(include_fields_dict)
137
- include_fields.update(include_fields_dict.keys())
138
- if exclude:
139
- exclude_fields.update(exclude)
140
-
141
- all_fields = include_fields.difference(exclude_fields)
142
- if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
143
- try:
144
- all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
145
- except Exception:
146
- ...
147
-
148
- schema_name = name if name else model_class.__name__ + "GetAllSchema"
149
- text_to_list_validators_dict = get_model_validate_text_to_list(text_to_list_fields)
150
- schema: Type[T] = create_model(
151
- schema_name,
152
- **{field: all_fields_info[field] for field in all_fields},
153
- __config__=model_config,
154
- __validators__={**text_to_list_validators_dict},
155
- )
156
- return schema
134
+ if extra_include:
135
+ include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
136
+ all_fields_info.update(include_fields_dict)
137
+ include_fields.update(include_fields_dict.keys())
138
+ if exclude:
139
+ exclude_fields.update(exclude)
140
+
141
+ all_fields = include_fields.difference(exclude_fields)
142
+ if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
143
+ try:
144
+ all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
145
+ except Exception:
146
+ ...
147
+
148
+ schema_name = name if name else model_class.__name__ + "GetAllSchema"
149
+ text_to_list_validators_dict = get_model_validate_text_to_list(text_to_list_fields)
150
+ schema: Type[T] = create_model(
151
+ schema_name,
152
+ **{field: all_fields_info[field] for field in all_fields},
153
+ __config__=model_config,
154
+ __validators__={**text_to_list_validators_dict},
155
+ )
156
+ return schema
157
157
 
158
158
 
159
159
  def get_list_schema_factory(schema_cls: Type[T] = None, response_field: Optional[str] = None, name: str = "") -> Type[T]:
@@ -12,6 +12,13 @@ from fastgenerateapi.pydantic_utils.base_model import model_config
12
12
  from fastgenerateapi.schemas_factory.common_function import get_dict_from_model_fields, get_dict_from_pydanticmeta, \
13
13
  get_model_validate_text_to_list
14
14
 
15
+ def hasattr_get_one_schema(model_class: Type[Model],):
16
+ if not hasattr(model_class, "PydanticMeta"):
17
+ return False
18
+ if hasattr(model_class.PydanticMeta, "get_one_include") or hasattr(model_class.PydanticMeta, "get_one_exclude"):
19
+ return True
20
+ return False
21
+
15
22
 
16
23
  def get_one_schema_factory(
17
24
  model_class: Type[Model],
@@ -82,7 +89,7 @@ def get_one_schema_factory(
82
89
  text_to_list_fields = set()
83
90
  if include:
84
91
  include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
85
- all_fields_info.update(include_fields_dict)
92
+ all_fields_info = {**include_fields_dict, **all_fields_info}
86
93
  include_fields.update(include_fields_dict.keys())
87
94
  else:
88
95
  if hasattr(model_class, "PydanticMeta"):
@@ -122,30 +129,30 @@ def get_one_schema_factory(
122
129
  else:
123
130
  include_fields.update(all_fields_info.keys())
124
131
 
125
- if extra_include:
126
- include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
127
- all_fields_info.update(include_fields_dict)
128
- include_fields.update(include_fields_dict.keys())
129
- if exclude:
130
- exclude_fields.update(exclude)
131
-
132
- all_fields = include_fields.difference(exclude_fields)
133
-
134
- if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
135
- try:
136
- all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
137
- except Exception:
138
- ...
139
-
140
- schema_name = name if name else model_class.__name__ + "GetOneSchema"
141
- text_to_list_validators_dict = get_model_validate_text_to_list(text_to_list_fields)
142
- schema: Type[T] = create_model(
143
- schema_name,
144
- **{field: all_fields_info[field] for field in all_fields},
145
- __config__=model_config,
146
- __validators__={**text_to_list_validators_dict},
147
- )
148
- return schema
132
+ if extra_include:
133
+ include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
134
+ all_fields_info.update(include_fields_dict)
135
+ include_fields.update(include_fields_dict.keys())
136
+ if exclude:
137
+ exclude_fields.update(exclude)
138
+
139
+ all_fields = include_fields.difference(exclude_fields)
140
+
141
+ if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
142
+ try:
143
+ all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
144
+ except Exception:
145
+ ...
146
+
147
+ schema_name = name if name else model_class.__name__ + "GetOneSchema"
148
+ text_to_list_validators_dict = get_model_validate_text_to_list(text_to_list_fields)
149
+ schema: Type[T] = create_model(
150
+ schema_name,
151
+ **{field: all_fields_info[field] for field in all_fields},
152
+ __config__=model_config,
153
+ __validators__={**text_to_list_validators_dict},
154
+ )
155
+ return schema
149
156
 
150
157
 
151
158
 
@@ -65,31 +65,31 @@ def get_relation_schema_factory(
65
65
  else:
66
66
  include_fields.update(all_fields_info.keys())
67
67
 
68
- if extra_include:
69
- include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
70
- all_fields_info.update(include_fields_dict)
71
- include_fields.update(include_fields_dict.keys())
72
- if exclude:
73
- exclude_fields.update(exclude)
74
-
75
- all_fields = include_fields.difference(exclude_fields)
76
-
77
- if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
78
- try:
79
- all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
80
- except Exception:
81
- ...
82
-
83
- schema_name = name if name else model_class.__name__ + "GetRelationSchema"
84
- text_to_list_validators_dict = get_model_validate_text_to_list(text_to_list_fields)
85
- schema: Type[T] = create_model(
86
- schema_name,
87
- **{field: all_fields_info[field] for field in all_fields},
88
- __config__=model_config,
89
- __validators__={**text_to_list_validators_dict},
90
- )
91
-
92
- return schema
68
+ if extra_include:
69
+ include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
70
+ all_fields_info.update(include_fields_dict)
71
+ include_fields.update(include_fields_dict.keys())
72
+ if exclude:
73
+ exclude_fields.update(exclude)
74
+
75
+ all_fields = include_fields.difference(exclude_fields)
76
+
77
+ if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
78
+ try:
79
+ all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
80
+ except Exception:
81
+ ...
82
+
83
+ schema_name = name if name else model_class.__name__ + "GetRelationSchema"
84
+ text_to_list_validators_dict = get_model_validate_text_to_list(text_to_list_fields)
85
+ schema: Type[T] = create_model(
86
+ schema_name,
87
+ **{field: all_fields_info[field] for field in all_fields},
88
+ __config__=model_config,
89
+ __validators__={**text_to_list_validators_dict},
90
+ )
91
+
92
+ return schema
93
93
 
94
94
 
95
95
 
@@ -107,82 +107,5 @@ def get_tree_schema_factory(
107
107
  return schema
108
108
 
109
109
 
110
- # def get_tree_schema_factory(
111
- # model_class: Type[Model],
112
- # include: Union[list, tuple, set] = None,
113
- # extra_include: Union[list, tuple, set] = None,
114
- # exclude: Union[list, tuple, set] = None,
115
- # ) -> Optional[Type[T]]:
116
- # """
117
- # Is used to create a GetTreeSchema
118
- # """
119
- # def get_tree_schema(schema_cls: Optional[Type[T]] = None):
120
- # all_fields_info: dict = get_dict_from_model_fields(model_class)
121
- #
122
- # include_fields = set()
123
- # exclude_fields = set()
124
- # if hasattr(model_class, "PydanticMeta"):
125
- # if hasattr(model_class.PydanticMeta, "get_tree_include"):
126
- # get_tree_include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.get_tree_include)
127
- # all_fields_info.update(get_tree_include_fields_dict)
128
- # include_fields.update(get_tree_include_fields_dict.keys())
129
- # if hasattr(model_class.PydanticMeta, "include"):
130
- # include_fields_dict = get_dict_from_pydanticmeta(model_class, model_class.PydanticMeta.include)
131
- # all_fields_info.update(include_fields_dict)
132
- # include_fields.update(include_fields_dict.keys())
133
- # else:
134
- # include_fields.update(all_fields_info.keys())
135
- # if hasattr(model_class.PydanticMeta, "get_tree_exclude"):
136
- # exclude_fields.update(model_class.PydanticMeta.get_tree_exclude)
137
- # if hasattr(model_class.PydanticMeta, "exclude"):
138
- # exclude_fields.update(model_class.PydanticMeta.exclude)
139
- # else:
140
- # include_fields.update(all_fields_info.keys())
141
- #
142
- # if include:
143
- # include_fields_dict = get_dict_from_pydanticmeta(model_class, include)
144
- # all_fields_info.update(include_fields_dict)
145
- # include_fields.update(include_fields_dict.keys())
146
- # if extra_include:
147
- # include_fields_dict = get_dict_from_pydanticmeta(model_class, extra_include)
148
- # all_fields_info.update(include_fields_dict)
149
- # include_fields.update(include_fields_dict.keys())
150
- # if exclude:
151
- # exclude_fields.update(exclude)
152
- #
153
- # all_fields = include_fields.difference(exclude_fields)
154
- #
155
- # if schema_cls:
156
- # all_fields_info.setdefault(
157
- # settings.app_settings.DEFAULT_TREE_CHILDREN_FIELD,
158
- # (Optional[List[Type[schema_cls]]], FieldInfo(default=None, description="子级目录"))
159
- # )
160
- # else:
161
- # all_fields_info.setdefault(
162
- # settings.app_settings.DEFAULT_TREE_CHILDREN_FIELD,
163
- # (Optional[list], FieldInfo(default=None, description="子级目录"))
164
- # )
165
- # all_fields.add(settings.app_settings.DEFAULT_TREE_CHILDREN_FIELD)
166
- # if settings.app_settings.GET_EXCLUDE_ACTIVE_VALUE:
167
- # try:
168
- # all_fields.remove(settings.app_settings.WHETHER_DELETE_FIELD)
169
- # except Exception:
170
- # ...
171
- #
172
- # name = model_class.__name__ + "GetTreeSchema"
173
- # schema: Type[T] = create_model(
174
- # __model_name=name, **{field: all_fields_info[field] for field in all_fields}, __config__=Config)
175
- #
176
- # return schema
177
- #
178
- # tree_schema = get_tree_schema()
179
- # return get_tree_schema(tree_schema)
180
-
181
-
182
-
183
-
184
-
185
-
186
-
187
110
 
188
111
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: fastgenerateapi
3
- Version: 1.2.10
3
+ Version: 1.2.11
4
4
  Summary: FastAPIView Class View
5
5
  Author: ShiLiang
6
6
  Author-email: 2509144896@qq.com