fastgenerateapi 1.1.13__tar.gz → 1.1.14__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.
Potentially problematic release.
This version of fastgenerateapi might be problematic. Click here for more details.
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/PKG-INFO +5 -3
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/README.md +4 -2
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/__version__.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/get_all_view.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/get_relation_view.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/update_relation_view.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/filter_controller.py +5 -8
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/rpc_controller.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/deps/paginator_deps.py +7 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/deps/tree_params_deps.py +7 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/fastapi_utils/param_utils.py +9 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/base_model.py +9 -2
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/common_function.py +18 -4
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/filter_schema_factory.py +6 -3
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/app_settings.py +1 -1
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi.egg-info/PKG-INFO +5 -3
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/LICENSE +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/api_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/base_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/create_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/delete_filter_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/delete_tree_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/delete_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/get_one_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/get_tree_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/sql_get_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/switch_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/update_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/cache/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/cache/cache_decorator.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/cache/key_builder.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/channel/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/channel/connection_manager.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/channel/consumer.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/channel/websocket_view.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/router_controller.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/search_controller.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/ws_controller.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/data_type/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/data_type/data_type.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/deps/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/deps/filter_params_deps.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/example/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/example/models.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/example/routers.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/example/schemas.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/example/views.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/fastapi_utils/all.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/model/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/model/base_model.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/aes_field.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/enum_field.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/pk_field.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/pwd_field.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/validator.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/create_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/update_schema_factory.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/all_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/db_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/file_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/jwt_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/otlp_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/redis_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/sms_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/system_settings.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/aes.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/auto_discover.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/exception.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/file_utils.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/pwd_utils.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/ramdom_utils.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/snowflake.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/str_util.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/utils/swagger_to_js.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi.egg-info/SOURCES.txt +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi.egg-info/top_level.txt +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/script/__init__.py +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/setup.cfg +0 -0
- {fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: fastgenerateapi
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.14
|
|
4
4
|
Summary: FastAPIView Class View
|
|
5
5
|
Author: ShiLiang
|
|
6
6
|
Author-email: 2509144896@qq.com
|
|
@@ -24,15 +24,17 @@ License-File: LICENSE
|
|
|
24
24
|
[Github](https://github.com/ShiLiangAPI)
|
|
25
25
|
|
|
26
26
|
#### 版本说明
|
|
27
|
-
|
|
27
|
+
[pydantic-v2]
|
|
28
|
+
稳定版本:v1.1.13+
|
|
28
29
|
建议python版本:3.9+
|
|
29
30
|
推荐fastapi版本:0.103.2+
|
|
30
31
|
推荐pydantic版本:2.11.5+
|
|
31
32
|
|
|
33
|
+
[pydantic-v1]
|
|
32
34
|
稳定版本:v0.0.21
|
|
33
35
|
建议python版本:3.9+
|
|
34
36
|
推荐fastapi版本:0.97.0
|
|
35
|
-
|
|
37
|
+
推荐pydantic版本:1.10.9+
|
|
36
38
|
|
|
37
39
|
|
|
38
40
|
###### FastGenerateApi 使用说明
|
|
@@ -6,15 +6,17 @@
|
|
|
6
6
|
[Github](https://github.com/ShiLiangAPI)
|
|
7
7
|
|
|
8
8
|
#### 版本说明
|
|
9
|
-
|
|
9
|
+
[pydantic-v2]
|
|
10
|
+
稳定版本:v1.1.13+
|
|
10
11
|
建议python版本:3.9+
|
|
11
12
|
推荐fastapi版本:0.103.2+
|
|
12
13
|
推荐pydantic版本:2.11.5+
|
|
13
14
|
|
|
15
|
+
[pydantic-v1]
|
|
14
16
|
稳定版本:v0.0.21
|
|
15
17
|
建议python版本:3.9+
|
|
16
18
|
推荐fastapi版本:0.97.0
|
|
17
|
-
|
|
19
|
+
推荐pydantic版本:1.10.9+
|
|
18
20
|
|
|
19
21
|
|
|
20
22
|
###### FastGenerateApi 使用说明
|
|
@@ -143,7 +143,7 @@ class GetAllView(BaseView, GetMixin):
|
|
|
143
143
|
key_builder=generate_key_builder))
|
|
144
144
|
async def route(
|
|
145
145
|
request: Request,
|
|
146
|
-
paginator=Depends(paginator_deps()),
|
|
146
|
+
paginator = Depends(paginator_deps()),
|
|
147
147
|
search: Optional[str] = Depends(search_params_deps(self.search_fields)),
|
|
148
148
|
filters: dict = Depends(filter_params_deps(model_class=self.model_class, fields=self.filter_fields, schema=self.filter_schema)),
|
|
149
149
|
token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/get_relation_view.py
RENAMED
|
@@ -189,7 +189,7 @@ class GetRelationView(BaseView):
|
|
|
189
189
|
self.get_relation_response_schema = response_factory(self.get_relation_page_schema, name="GetPage")
|
|
190
190
|
doc = self.get_relation.__doc__
|
|
191
191
|
summary = doc.strip().split("\n")[0] if doc else f"Get {self.model_class.__name__.title()}"
|
|
192
|
-
path = f"/get-{self.relation_id_name.
|
|
192
|
+
path = f"/get-{self.relation_id_name.removesuffix('_id')}-by-{self.path_id_name.removesuffix('_id')}/{'{pk}'}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else ""
|
|
193
193
|
self._add_api_route(
|
|
194
194
|
path=path,
|
|
195
195
|
endpoint=self._get_relation_decorator(),
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py
RENAMED
|
@@ -29,7 +29,7 @@ class DBModelMixin:
|
|
|
29
29
|
if type(fields) == str:
|
|
30
30
|
try:
|
|
31
31
|
field_info = model_class._meta.fields_map.get(fields)
|
|
32
|
-
field_info_fk = model_class._meta.fields_map.get(fields.
|
|
32
|
+
field_info_fk = model_class._meta.fields_map.get(fields.removesuffix("_id"))
|
|
33
33
|
if field_info:
|
|
34
34
|
return field_info.description or ""
|
|
35
35
|
elif fields.endswith("_id") and field_info_fk:
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/update_relation_view.py
RENAMED
|
@@ -75,7 +75,7 @@ class UpdateRelationView(BaseView, SaveMixin):
|
|
|
75
75
|
self.update_relation_response_schema = response_factory(name="UpdateRelation")
|
|
76
76
|
doc = self.update_relation.__doc__
|
|
77
77
|
summary = doc.strip().split("\n")[0] if doc else f"Update {self.model_class.__name__.title()}"
|
|
78
|
-
path = f"/update-{self.relation_id_name.
|
|
78
|
+
path = f"/update-{self.relation_id_name.removesuffix('_id')}-by-{self.path_id_name.removesuffix('_id')}/{'{pk}'}" if settings.app_settings.ROUTER_WHETHER_ADD_SUFFIX else "/{pk}"
|
|
79
79
|
self._add_api_route(
|
|
80
80
|
path=path,
|
|
81
81
|
endpoint=self._update_relation_decorator(),
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/filter_controller.py
RENAMED
|
@@ -69,17 +69,14 @@ class BaseFilter:
|
|
|
69
69
|
for f in filter_str[1:]:
|
|
70
70
|
if type(f) == type:
|
|
71
71
|
field_type = f
|
|
72
|
-
|
|
73
|
-
if type(f) == str:
|
|
72
|
+
elif type(f) == str:
|
|
74
73
|
filter_field = f
|
|
75
|
-
|
|
76
|
-
if callable(f):
|
|
74
|
+
elif callable(f):
|
|
77
75
|
filter_func = f
|
|
78
76
|
if not filter_field:
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
filter_field = model_field
|
|
77
|
+
filter_field = model_field
|
|
78
|
+
if settings.app_settings.FILTER_UNDERLINE_WHETHER_DOUBLE_TO_SINGLE:
|
|
79
|
+
filter_field = filter_field.replace("__", "_")
|
|
83
80
|
|
|
84
81
|
self.field_type = field_type
|
|
85
82
|
self.model_field = model_field
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/rpc_controller.py
RENAMED
|
@@ -37,7 +37,7 @@ class RPCController(ResponseMixin):
|
|
|
37
37
|
for response_param_value in request_param_value_list:
|
|
38
38
|
if type(response_param_value) == str:
|
|
39
39
|
response_field_name = response_param_value
|
|
40
|
-
response_field_alias_name = model_field.
|
|
40
|
+
response_field_alias_name = model_field.removesuffix("_id") + "_" + response_param_value
|
|
41
41
|
elif type(response_param_value) == tuple and len(response_param_value) > 1:
|
|
42
42
|
response_field_name = response_param_value[0]
|
|
43
43
|
response_field_alias_name = response_param_value[1]
|
|
@@ -5,6 +5,7 @@ from pydantic import create_model
|
|
|
5
5
|
from pydantic.fields import FieldInfo
|
|
6
6
|
|
|
7
7
|
from fastgenerateapi.pydantic_utils.base_model import BaseModel, model_config
|
|
8
|
+
from fastgenerateapi.schemas_factory.common_function import get_validate_dict
|
|
8
9
|
from fastgenerateapi.settings.all_settings import settings
|
|
9
10
|
from fastgenerateapi.utils.str_util import parse_str_to_int, parse_str_to_bool
|
|
10
11
|
|
|
@@ -42,7 +43,12 @@ def paginator_deps():
|
|
|
42
43
|
FieldInfo(default=Query(settings.app_settings.DEFAULT_WHETHER_PAGE), title="是否分页", description="是否分页")
|
|
43
44
|
),
|
|
44
45
|
}
|
|
45
|
-
pagination_model: Type[BaseModel] = create_model(
|
|
46
|
+
pagination_model: Type[BaseModel] = create_model(
|
|
47
|
+
"paginator",
|
|
48
|
+
**fields,
|
|
49
|
+
__config__=model_config,
|
|
50
|
+
__validators__=get_validate_dict(),
|
|
51
|
+
)
|
|
46
52
|
|
|
47
53
|
def pagination_deps(paginator: pagination_model = Depends(pagination_model)) -> pagination_model:
|
|
48
54
|
current_page_value = parse_str_to_int(getattr(paginator, settings.app_settings.CURRENT_PAGE_FIELD))
|
|
@@ -5,6 +5,7 @@ from pydantic.fields import FieldInfo
|
|
|
5
5
|
|
|
6
6
|
from fastgenerateapi.pydantic_utils.base_model import model_config
|
|
7
7
|
from fastgenerateapi.pydantic_utils.base_model import ModelConfig
|
|
8
|
+
from fastgenerateapi.schemas_factory.common_function import get_validate_dict
|
|
8
9
|
from fastgenerateapi.settings.all_settings import settings
|
|
9
10
|
|
|
10
11
|
from pydantic import BaseModel, create_model
|
|
@@ -26,7 +27,12 @@ def tree_params_deps():
|
|
|
26
27
|
)
|
|
27
28
|
}
|
|
28
29
|
|
|
29
|
-
filter_tree_params_model: Type[BaseModel] = create_model(
|
|
30
|
+
filter_tree_params_model: Type[BaseModel] = create_model(
|
|
31
|
+
"TreeFilterParams",
|
|
32
|
+
**model_fields,
|
|
33
|
+
__config__=model_config,
|
|
34
|
+
__validators__=get_validate_dict(),
|
|
35
|
+
)
|
|
30
36
|
|
|
31
37
|
def filter_query(filter_params: filter_tree_params_model = Depends(filter_tree_params_model)) -> Optional[str]:
|
|
32
38
|
"""
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/fastapi_utils/param_utils.py
RENAMED
|
@@ -6,6 +6,7 @@ import fastapi
|
|
|
6
6
|
from fastapi import params
|
|
7
7
|
from fastapi.dependencies.models import Dependant
|
|
8
8
|
from fastapi.dependencies.utils import get_sub_dependant
|
|
9
|
+
from pydantic.alias_generators import to_snake, to_camel
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
def get_param_sub_dependant(
|
|
@@ -25,6 +26,14 @@ def get_param_sub_dependant(
|
|
|
25
26
|
)
|
|
26
27
|
for query_param in dependant.query_params:
|
|
27
28
|
query_param_field = depends.dependency.model_fields.get(query_param.name)
|
|
29
|
+
if not query_param_field:
|
|
30
|
+
snake_name = to_snake(query_param.name)
|
|
31
|
+
if query_param.name != snake_name:
|
|
32
|
+
query_param_field = depends.dependency.model_fields.get(snake_name)
|
|
33
|
+
if not query_param_field:
|
|
34
|
+
camel_name = to_camel(query_param.name)
|
|
35
|
+
if query_param.name != camel_name:
|
|
36
|
+
query_param_field = depends.dependency.model_fields.get(camel_name)
|
|
28
37
|
if query_param_field:
|
|
29
38
|
query_param.field_info.description = query_param_field.description or query_param_field.title or ""
|
|
30
39
|
return dependant
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/base_model.py
RENAMED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import importlib
|
|
2
|
-
from typing import List, Optional
|
|
2
|
+
from typing import List, Optional, Any
|
|
3
3
|
|
|
4
|
-
from pydantic import BaseModel as PydanticBaseModel, BaseConfig, Field, ConfigDict
|
|
4
|
+
from pydantic import BaseModel as PydanticBaseModel, BaseConfig, Field, ConfigDict, field_validator
|
|
5
5
|
|
|
6
6
|
from fastgenerateapi.pydantic_utils.json_encoders import JSON_ENCODERS
|
|
7
7
|
from fastgenerateapi.settings.all_settings import settings
|
|
@@ -54,6 +54,13 @@ model_config = ConfigDict(
|
|
|
54
54
|
class BaseModel(PydanticBaseModel):
|
|
55
55
|
model_config = model_config
|
|
56
56
|
|
|
57
|
+
@field_validator('*', mode='before') # '*' 表示匹配所有字段
|
|
58
|
+
def empty_str_to_none(cls, v: Any) -> Any:
|
|
59
|
+
"""将空字符串转换为None,其他值保持不变"""
|
|
60
|
+
if isinstance(v, str) and v.strip() == "": # 处理纯空字符串或仅含空格的字符串
|
|
61
|
+
return None
|
|
62
|
+
return v
|
|
63
|
+
|
|
57
64
|
|
|
58
65
|
class IdList(BaseModel):
|
|
59
66
|
id_list: List[str] = Field([], description="id数组")
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/common_function.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from typing import Type, Optional, Union
|
|
2
2
|
|
|
3
|
-
from pydantic import validator
|
|
3
|
+
from pydantic import validator, field_validator
|
|
4
4
|
from pydantic.fields import FieldInfo
|
|
5
5
|
from tortoise import Model
|
|
6
6
|
|
|
@@ -111,13 +111,25 @@ def get_dict_from_pydanticmeta(model_class: Type[Model], data: Union[list, tuple
|
|
|
111
111
|
return fields_info
|
|
112
112
|
|
|
113
113
|
|
|
114
|
+
def get_validate_dict() -> dict:
|
|
115
|
+
|
|
116
|
+
def empty_str_to_none(v, values):
|
|
117
|
+
if isinstance(v, str) and v.strip() == "":
|
|
118
|
+
return None
|
|
119
|
+
return v
|
|
120
|
+
|
|
121
|
+
validator_dict = {
|
|
122
|
+
"empty_str_to_none": field_validator('*', mode='before')(empty_str_to_none)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
return validator_dict
|
|
126
|
+
|
|
127
|
+
|
|
114
128
|
def get_validate_dict_from_fields(fields_info: dict) -> dict:
|
|
115
129
|
validator_dict = {}
|
|
116
130
|
|
|
117
131
|
def remove_blank_strings(v, values):
|
|
118
|
-
if isinstance(v, str):
|
|
119
|
-
v = v.strip()
|
|
120
|
-
if v == "":
|
|
132
|
+
if isinstance(v, str) and v.strip() == "":
|
|
121
133
|
return None
|
|
122
134
|
return v
|
|
123
135
|
|
|
@@ -129,3 +141,5 @@ def get_validate_dict_from_fields(fields_info: dict) -> dict:
|
|
|
129
141
|
return validator_dict
|
|
130
142
|
|
|
131
143
|
|
|
144
|
+
|
|
145
|
+
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from typing import Type, Union
|
|
1
|
+
from typing import Type, Union, Optional
|
|
2
2
|
|
|
3
3
|
from fastapi import Query
|
|
4
4
|
from pydantic import BaseModel, create_model
|
|
@@ -9,6 +9,8 @@ from fastgenerateapi.api_view.mixin.dbmodel_mixin import DBModelMixin
|
|
|
9
9
|
from fastgenerateapi.controller.filter_controller import BaseFilter
|
|
10
10
|
from tortoise import Model
|
|
11
11
|
|
|
12
|
+
from fastgenerateapi.schemas_factory.common_function import get_validate_dict
|
|
13
|
+
|
|
12
14
|
|
|
13
15
|
def filter_schema_factory(model_class: Type[Model], fields: list[str, tuple[str, Type], BaseFilter] = None):
|
|
14
16
|
"""
|
|
@@ -24,7 +26,7 @@ def filter_schema_factory(model_class: Type[Model], fields: list[str, tuple[str,
|
|
|
24
26
|
description = DBModelMixin.get_field_description(model_class, field_info.model_field)
|
|
25
27
|
model_fields.update({
|
|
26
28
|
f: (
|
|
27
|
-
|
|
29
|
+
Optional[t],
|
|
28
30
|
FieldInfo(
|
|
29
31
|
title=f"{description}",
|
|
30
32
|
default=Query("", description=description),
|
|
@@ -35,7 +37,8 @@ def filter_schema_factory(model_class: Type[Model], fields: list[str, tuple[str,
|
|
|
35
37
|
filter_params_model: Type[BaseModel] = create_model(
|
|
36
38
|
model_class.__name__+"CommonFilterParams",
|
|
37
39
|
**model_fields,
|
|
38
|
-
__config__=model_config
|
|
40
|
+
__config__=model_config,
|
|
41
|
+
__validators__=get_validate_dict(),
|
|
39
42
|
)
|
|
40
43
|
|
|
41
44
|
return filter_params_model
|
|
@@ -7,7 +7,7 @@ from fastgenerateapi.pydantic_utils.base_settings import BaseSettings
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class AppSettings(BaseSettings):
|
|
10
|
-
# 字段配置
|
|
10
|
+
# 字段配置 驼峰格式:新版本(pydantic.alias_generators:to_camel)、老版本(pydantic.utils.to_lower_camel)
|
|
11
11
|
ALIAS_GENERATOR: Optional[str] = Field(default="pydantic.alias_generators.to_snake", description="序列化参数命名方法路径")
|
|
12
12
|
|
|
13
13
|
# 分页对应字段以及配置默认值
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: fastgenerateapi
|
|
3
|
-
Version: 1.1.
|
|
3
|
+
Version: 1.1.14
|
|
4
4
|
Summary: FastAPIView Class View
|
|
5
5
|
Author: ShiLiang
|
|
6
6
|
Author-email: 2509144896@qq.com
|
|
@@ -24,15 +24,17 @@ License-File: LICENSE
|
|
|
24
24
|
[Github](https://github.com/ShiLiangAPI)
|
|
25
25
|
|
|
26
26
|
#### 版本说明
|
|
27
|
-
|
|
27
|
+
[pydantic-v2]
|
|
28
|
+
稳定版本:v1.1.13+
|
|
28
29
|
建议python版本:3.9+
|
|
29
30
|
推荐fastapi版本:0.103.2+
|
|
30
31
|
推荐pydantic版本:2.11.5+
|
|
31
32
|
|
|
33
|
+
[pydantic-v1]
|
|
32
34
|
稳定版本:v0.0.21
|
|
33
35
|
建议python版本:3.9+
|
|
34
36
|
推荐fastapi版本:0.97.0
|
|
35
|
-
|
|
37
|
+
推荐pydantic版本:1.10.9+
|
|
36
38
|
|
|
37
39
|
|
|
38
40
|
###### FastGenerateApi 使用说明
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/delete_filter_view.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/delete_tree_view.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/base_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/get_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/response_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/save_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/tool_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/docx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/file_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/pdf_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/api_view/mixin/utils/zip_util.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/channel/connection_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/router_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/search_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/controller/ws_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/data_type/mysql_data_type.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/deps/filter_params_deps.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/fastapi_utils/response_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/my_fields/soft_delete_field.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/base_settings.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/pydantic_utils/json_encoders.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/schemas_factory/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/redis_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi/settings/system_settings.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.1.13 → fastgenerateapi-1.1.14}/fastgenerateapi.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|