fastgenerateapi 1.2.3__tar.gz → 1.2.5__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.
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/PKG-INFO +1 -1
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/__init__.py +1 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/__version__.py +1 -1
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/create_view.py +10 -9
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/delete_filter_view.py +4 -2
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/delete_tree_view.py +4 -2
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/delete_view.py +5 -2
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/get_all_view.py +2 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/get_one_view.py +2 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/get_relation_view.py +2 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/get_tree_view.py +2 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/switch_view.py +2 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/update_relation_view.py +4 -2
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/update_view.py +9 -9
- fastgenerateapi-1.2.5/fastgenerateapi/fastapi_utils/tortoise_utils.py +39 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/enum_field.py +3 -2
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/common_function.py +5 -16
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/all_settings.py +41 -42
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/app_settings.py +1 -1
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi.egg-info/PKG-INFO +1 -1
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi.egg-info/SOURCES.txt +1 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/LICENSE +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/README.md +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/api_view.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/base_view.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/base_mixin.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/get_mixin.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/response_mixin.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/save_mixin.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/tool_mixin.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/docx_util.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/file_util.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/pdf_util.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/zip_util.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/sql_get_view.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/cache/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/cache/cache_decorator.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/cache/key_builder.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/channel/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/channel/connection_manager.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/channel/consumer.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/channel/websocket_view.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/filter_controller.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/router_controller.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/rpc_controller.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/search_controller.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/ws_controller.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/data_type/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/data_type/data_type.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/data_type/mysql_data_type.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/deps/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/deps/filter_params_deps.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/deps/paginator_deps.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/deps/tree_params_deps.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/example/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/example/models.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/example/routers.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/example/schemas.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/example/views.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/fastapi_utils/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/fastapi_utils/all.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/fastapi_utils/param_utils.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/fastapi_utils/response_utils.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/model/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/model/base_model.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/aes_field.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/pk_field.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/pwd_field.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/soft_delete_field.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/validator.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/base_model.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/base_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/json_encoders.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/common_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/create_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/filter_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/get_all_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/get_one_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/get_relation_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/get_tree_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/response_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/sql_get_all_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/update_schema_factory.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/db_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/etcd_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/file_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/jwt_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/otlp_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/redis_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/sms_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/settings/system_settings.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/aes.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/auto_discover.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/exception.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/file_utils.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/pwd_utils.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/ramdom_utils.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/snowflake.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/str_util.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/utils/swagger_to_js.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi.egg-info/dependency_links.txt +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi.egg-info/top_level.txt +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/script/__init__.py +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/setup.cfg +0 -0
- {fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/setup.py +0 -0
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
# d8888P
|
|
9
9
|
|
|
10
10
|
author="石亮"
|
|
11
|
+
from fastgenerateapi.fastapi_utils.tortoise_utils import *
|
|
11
12
|
from fastgenerateapi.api_view.api_view import APIView, CreateView, GetOneView, GetAllView, UpdateView, DeleteView, \
|
|
12
13
|
SwitchView
|
|
13
14
|
from fastgenerateapi.api_view.get_tree_view import GetTreeView
|
|
@@ -89,17 +89,18 @@ class CreateView(BaseView, SaveMixin):
|
|
|
89
89
|
*args,
|
|
90
90
|
**kwargs
|
|
91
91
|
)
|
|
92
|
+
if isinstance(data, Model):
|
|
93
|
+
if settings.app_settings.WHETHER_CREATE_RESPONSE_DATA:
|
|
94
|
+
if self.is_with_prefetch:
|
|
95
|
+
data = await self.get_object(data.id, self.model_class, self.is_with_prefetch)
|
|
96
|
+
await self.setattr_model(data, prefetch_related_fields=self.prefetch_related_fields)
|
|
97
|
+
|
|
98
|
+
return self.success(data=self.create_response_schema.model_validate(data))
|
|
99
|
+
return self.success()
|
|
92
100
|
if isinstance(data, JSONResponse):
|
|
93
101
|
return data
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
if settings.app_settings.WHETHER_CREATE_RESPONSE_DATA:
|
|
97
|
-
if self.is_with_prefetch:
|
|
98
|
-
data = await self.get_object(data.id, self.model_class, self.is_with_prefetch)
|
|
99
|
-
await self.setattr_model(data, prefetch_related_fields=self.prefetch_related_fields)
|
|
100
|
-
|
|
101
|
-
return self.success(data=self.create_response_schema.model_validate(data))
|
|
102
|
-
return self.success()
|
|
102
|
+
return self.success(data=data)
|
|
103
|
+
|
|
103
104
|
return route
|
|
104
105
|
|
|
105
106
|
def _handler_create_settings(self):
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/delete_filter_view.py
RENAMED
|
@@ -42,14 +42,16 @@ class DeleteFilterView(BaseView):
|
|
|
42
42
|
filters: dict = Depends(filter_params_deps(model_class=self.model_class, fields=self.filter_fields)),
|
|
43
43
|
token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
|
|
44
44
|
) -> JSONResponse:
|
|
45
|
-
await self.destroy_filter(
|
|
45
|
+
data = await self.destroy_filter(
|
|
46
46
|
search=search,
|
|
47
47
|
filters=filters,
|
|
48
48
|
request=request,
|
|
49
49
|
token=token,
|
|
50
50
|
*args, **kwargs
|
|
51
51
|
)
|
|
52
|
-
|
|
52
|
+
if isinstance(data, JSONResponse):
|
|
53
|
+
return data
|
|
54
|
+
return self.success(msg="删除成功", data=data)
|
|
53
55
|
return route
|
|
54
56
|
|
|
55
57
|
def _handler_destroy_filter_settings(self):
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/delete_tree_view.py
RENAMED
|
@@ -68,13 +68,15 @@ class DeleteTreeView(BaseView):
|
|
|
68
68
|
request: Request,
|
|
69
69
|
token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
|
|
70
70
|
) -> JSONResponse:
|
|
71
|
-
await self.destroy_tree(
|
|
71
|
+
data = await self.destroy_tree(
|
|
72
72
|
request_data=request_data,
|
|
73
73
|
request=request,
|
|
74
74
|
token=token,
|
|
75
75
|
*args, **kwargs
|
|
76
76
|
)
|
|
77
|
-
|
|
77
|
+
if isinstance(data, JSONResponse):
|
|
78
|
+
return data
|
|
79
|
+
return self.success(msg="删除成功", data=data)
|
|
78
80
|
return route
|
|
79
81
|
|
|
80
82
|
def _handler_delete_tree_settings(self):
|
|
@@ -58,13 +58,16 @@ class DeleteView(BaseView):
|
|
|
58
58
|
request: Request,
|
|
59
59
|
token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
|
|
60
60
|
) -> JSONResponse:
|
|
61
|
-
await self.destroy(
|
|
61
|
+
data = await self.destroy(
|
|
62
62
|
request_data=request_data,
|
|
63
63
|
request=request,
|
|
64
64
|
token=token,
|
|
65
65
|
*args, **kwargs
|
|
66
66
|
)
|
|
67
|
-
|
|
67
|
+
|
|
68
|
+
if isinstance(data, JSONResponse):
|
|
69
|
+
return data
|
|
70
|
+
return self.success(msg="删除成功", data=data)
|
|
68
71
|
return route
|
|
69
72
|
|
|
70
73
|
def _handler_delete_settings(self):
|
|
@@ -48,6 +48,8 @@ class SwitchView(BaseView):
|
|
|
48
48
|
token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
|
|
49
49
|
) -> JSONResponse:
|
|
50
50
|
data = await self.switch(pk=pk, request=request, filed=filed, token=token, *args, **kwargs)
|
|
51
|
+
if isinstance(data, JSONResponse):
|
|
52
|
+
return data
|
|
51
53
|
return self.success(data=data)
|
|
52
54
|
return route
|
|
53
55
|
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/update_relation_view.py
RENAMED
|
@@ -61,14 +61,16 @@ class UpdateRelationView(BaseView, SaveMixin):
|
|
|
61
61
|
request: Request,
|
|
62
62
|
token: Optional[str] = Depends(OAuth2PasswordBearer(tokenUrl="token", auto_error=False)),
|
|
63
63
|
) -> JSONResponse:
|
|
64
|
-
await self.update_relation(
|
|
64
|
+
data = await self.update_relation(
|
|
65
65
|
pk=pk,
|
|
66
66
|
request_data=request_data,
|
|
67
67
|
request=request,
|
|
68
68
|
token=token,
|
|
69
69
|
*args, **kwargs
|
|
70
70
|
)
|
|
71
|
-
|
|
71
|
+
if isinstance(data, JSONResponse):
|
|
72
|
+
return data
|
|
73
|
+
return self.success(data=data)
|
|
72
74
|
return route
|
|
73
75
|
|
|
74
76
|
def _handler_update_relation_settings(self):
|
|
@@ -81,18 +81,18 @@ class UpdateView(BaseView, SaveMixin):
|
|
|
81
81
|
token=token,
|
|
82
82
|
*args, **kwargs
|
|
83
83
|
)
|
|
84
|
+
if isinstance(data, Model):
|
|
85
|
+
if settings.app_settings.WHETHER_UPDATE_RESPONSE_DATA:
|
|
86
|
+
if self.is_with_prefetch:
|
|
87
|
+
await self.setattr_model(data, prefetch_related_fields=self.prefetch_related_fields, *args,
|
|
88
|
+
**kwargs)
|
|
89
|
+
|
|
90
|
+
return self.success(data=self.update_response_schema.model_validate(data))
|
|
91
|
+
return self.success()
|
|
84
92
|
if isinstance(data, JSONResponse):
|
|
85
93
|
return data
|
|
86
|
-
|
|
87
|
-
return self.success(data=data)
|
|
88
|
-
if settings.app_settings.WHETHER_UPDATE_RESPONSE_DATA:
|
|
89
|
-
if self.is_with_prefetch:
|
|
90
|
-
await self.setattr_model(data, prefetch_related_fields=self.prefetch_related_fields, *args,
|
|
91
|
-
**kwargs)
|
|
94
|
+
return self.success(data=data)
|
|
92
95
|
|
|
93
|
-
return self.success(data=self.update_response_schema.model_validate(data))
|
|
94
|
-
|
|
95
|
-
return self.success()
|
|
96
96
|
return route
|
|
97
97
|
|
|
98
98
|
def _handler_update_settings(self):
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from tortoise import BaseDBAsyncClient, connections, transactions
|
|
4
|
+
from tortoise.exceptions import ParamsError
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def _get_connection(connection_name: Optional[str]) -> BaseDBAsyncClient:
|
|
8
|
+
# tortoise-orm==0.25.1
|
|
9
|
+
# if connection_name:
|
|
10
|
+
# connection = connections.get(connection_name)
|
|
11
|
+
# elif len(connections.db_config) == 1:
|
|
12
|
+
# connection_name = next(iter(connections.db_config.keys()))
|
|
13
|
+
# connection = connections.get(connection_name)
|
|
14
|
+
# else:
|
|
15
|
+
# raise ParamsError(
|
|
16
|
+
# "You are running with multiple databases, so you should specify"
|
|
17
|
+
# f" connection_name: {list(connections.db_config)}"
|
|
18
|
+
# )
|
|
19
|
+
# 修改后
|
|
20
|
+
if connection_name:
|
|
21
|
+
connection = connections.get(connection_name)
|
|
22
|
+
elif len(connections.db_config) >= 1:
|
|
23
|
+
# 默认选排序第一个
|
|
24
|
+
connection_name = next(iter(connections.db_config.keys()))
|
|
25
|
+
connection = connections.get(connection_name)
|
|
26
|
+
else:
|
|
27
|
+
raise ParamsError(
|
|
28
|
+
"You are running with multiple databases, so you should specify"
|
|
29
|
+
f" connection_name: {list(connections.db_config)}"
|
|
30
|
+
)
|
|
31
|
+
return connection
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
transactions._get_connection = _get_connection
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
@@ -35,6 +35,7 @@ class IntEnumField(IntEnumFieldInstance):
|
|
|
35
35
|
"""
|
|
36
36
|
|
|
37
37
|
def __init__(self, enum_list: List[any], start_num=0, **kwargs: Any) -> None:
|
|
38
|
+
self.start_num = start_num
|
|
38
39
|
self.enum_list = enum_list
|
|
39
40
|
self.description = kwargs.get("description", "") + " >> " + self.get_description(enum_list, start_num)
|
|
40
41
|
kwargs["description"] = self.description
|
|
@@ -43,8 +44,8 @@ class IntEnumField(IntEnumFieldInstance):
|
|
|
43
44
|
@property
|
|
44
45
|
def constraints(self) -> dict:
|
|
45
46
|
return {
|
|
46
|
-
"ge":
|
|
47
|
-
"
|
|
47
|
+
"ge": self.start_num,
|
|
48
|
+
"lt": len(self.enum_list) + self.start_num,
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
def to_db_value(self, value: Any, instance: "Union[Type[Model], Model]") -> Any:
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/common_function.py
RENAMED
|
@@ -26,28 +26,17 @@ def get_field_info(value, description="", default_field_type=None) -> (Type, Fie
|
|
|
26
26
|
field_type = value.field_type
|
|
27
27
|
required = True
|
|
28
28
|
field_info_dict["required"] = required
|
|
29
|
-
# if not required and hasattr(value, "default") and not hasattr(value.default, '__call__'):
|
|
30
|
-
# field_info_dict.setdefault("default", value.default)
|
|
31
29
|
if not required and hasattr(value, "default") and not hasattr(value.default, '__call__'):
|
|
32
30
|
field_info_dict.setdefault("default", value.default)
|
|
33
31
|
if hasattr(value, "description"):
|
|
34
32
|
field_info_dict.setdefault("description", description + (value.description or ""))
|
|
35
33
|
if hasattr(value, "alias"):
|
|
36
34
|
field_info_dict.setdefault("alias", value.alias)
|
|
37
|
-
if hasattr(value,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
field_info_dict.setdefault("lt", value.lt)
|
|
43
|
-
if hasattr(value, "le"):
|
|
44
|
-
field_info_dict.setdefault("le", value.le)
|
|
45
|
-
if hasattr(value, "min_length"):
|
|
46
|
-
field_info_dict.setdefault("min_length", value.min_length)
|
|
47
|
-
if hasattr(value, "max_length"):
|
|
48
|
-
field_info_dict.setdefault("max_length", value.max_length)
|
|
49
|
-
if hasattr(value, "regex"):
|
|
50
|
-
field_info_dict.setdefault("regex", value.regex)
|
|
35
|
+
if hasattr(value, 'constraints'):
|
|
36
|
+
constraints = getattr(value, 'constraints')
|
|
37
|
+
if constraints:
|
|
38
|
+
for key, val in constraints.items():
|
|
39
|
+
field_info_dict.setdefault(key, val)
|
|
51
40
|
return field_type, FieldInfo(**field_info_dict)
|
|
52
41
|
|
|
53
42
|
|
|
@@ -79,52 +79,51 @@ class SettingsModel(BaseModel):
|
|
|
79
79
|
):
|
|
80
80
|
"""
|
|
81
81
|
get global settings and set into cache
|
|
82
|
-
:param path:
|
|
83
|
-
|
|
84
|
-
|
|
82
|
+
:param path: 指定本地文件,指定的文件不能用于修改 SettingsModel、EtcdSettings 的属性
|
|
83
|
+
|
|
84
|
+
Etcd配置优先级:
|
|
85
|
+
application.yaml > path指定文件 > .env
|
|
86
|
+
其他属性优先级:
|
|
87
|
+
Etcd配置文件 > application.yaml > path指定文件 > .env
|
|
88
|
+
除了.env,其他都是yaml格式
|
|
85
89
|
:return:
|
|
86
90
|
"""
|
|
87
|
-
|
|
88
|
-
if path:
|
|
89
|
-
if
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
91
|
+
data_dict = {}
|
|
92
|
+
if path and path != "application.yaml":
|
|
93
|
+
if not os.path.isfile(path):
|
|
94
|
+
raise ValidationException(f"指定哦欸之文件【{path}】不存在")
|
|
95
|
+
if str(path).endswith('.yaml'):
|
|
96
|
+
with open(path, 'r', encoding='utf-8') as file:
|
|
97
|
+
data_dict.update(yaml.safe_load(file) or {})
|
|
98
|
+
else:
|
|
99
|
+
raise ValidationException("不支持指定非yaml格式")
|
|
100
|
+
if os.path.isfile("application.yaml"):
|
|
101
|
+
with open("application.yaml", 'r', encoding='utf-8') as file:
|
|
102
|
+
data_dict.update(yaml.safe_load(file) or {})
|
|
103
|
+
|
|
104
|
+
etcd_settings = EtcdSettings(**data_dict.get("EtcdSettings", {}))
|
|
105
|
+
if etcd_settings.ETCD_SETTING_KEY:
|
|
106
|
+
res, metadata = etcd_settings.client.get(etcd_settings.ETCD_SETTING_KEY)
|
|
107
|
+
if not res:
|
|
108
|
+
raise ValidationException("未读取到Etcd的配置文件")
|
|
109
|
+
data_dict.update(yaml.safe_load(res))
|
|
96
110
|
|
|
97
|
-
setting_models = cls.model_fields.copy()
|
|
98
111
|
setting_dict = {}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if not data_dict:
|
|
115
|
-
raise ValidationException(errors="配置错误")
|
|
116
|
-
for k, v in setting_models.items():
|
|
117
|
-
if isinstance(v, FieldInfo):
|
|
118
|
-
env_prefix = None
|
|
119
|
-
if hasattr(v.annotation, "Config") and v.annotation.Config.env_prefix:
|
|
120
|
-
env_prefix = v.annotation.Config.env_prefix
|
|
121
|
-
if not env_prefix and hasattr(v.annotation, "model_config"):
|
|
122
|
-
env_prefix = v.annotation.model_config.get("env_prefix")
|
|
123
|
-
if env_prefix:
|
|
124
|
-
annotation_dict = {k_i.removeprefix(env_prefix): v_i for k_i, v_i in data_dict.get(v.annotation.__name__, {}).items()}
|
|
125
|
-
else:
|
|
126
|
-
annotation_dict = data_dict.get(v.annotation.__name__, {})
|
|
127
|
-
setting_dict[k] = v.annotation(**annotation_dict)
|
|
112
|
+
setting_models = cls.model_fields.copy()
|
|
113
|
+
for k, v in setting_models.items():
|
|
114
|
+
if isinstance(v, FieldInfo):
|
|
115
|
+
env_prefix = None
|
|
116
|
+
if hasattr(v.annotation, "Config") and v.annotation.Config.env_prefix:
|
|
117
|
+
env_prefix = v.annotation.Config.env_prefix
|
|
118
|
+
if not env_prefix and hasattr(v.annotation, "model_config"):
|
|
119
|
+
env_prefix = v.annotation.model_config.get("env_prefix")
|
|
120
|
+
if env_prefix:
|
|
121
|
+
annotation_dict = {
|
|
122
|
+
k_i.removeprefix(env_prefix): v_i for k_i, v_i in data_dict.get(v.annotation.__name__, {}).items()
|
|
123
|
+
}
|
|
124
|
+
else:
|
|
125
|
+
annotation_dict = data_dict.get(v.annotation.__name__, {})
|
|
126
|
+
setting_dict[k] = v.annotation(**annotation_dict)
|
|
128
127
|
|
|
129
128
|
setting_data = cls(**setting_dict)
|
|
130
129
|
|
|
@@ -9,7 +9,7 @@ from fastgenerateapi.pydantic_utils.base_settings import BaseSettings
|
|
|
9
9
|
class AppSettings(BaseSettings):
|
|
10
10
|
# 字段配置 驼峰格式:新版本(pydantic.alias_generators:to_camel)、老版本(pydantic.utils.to_lower_camel)
|
|
11
11
|
# 下划线:pydantic.alias_generators.to_snake
|
|
12
|
-
ALIAS_GENERATOR: Optional[str] = Field(default="pydantic.alias_generators.
|
|
12
|
+
ALIAS_GENERATOR: Optional[str] = Field(default="pydantic.alias_generators.to_snake", description="序列化参数命名方法路径")
|
|
13
13
|
|
|
14
14
|
# 分页对应字段以及配置默认值
|
|
15
15
|
CURRENT_PAGE_FIELD: Optional[str] = Field(default="page", description="当前页字段")
|
|
@@ -64,6 +64,7 @@ fastgenerateapi/fastapi_utils/__init__.py
|
|
|
64
64
|
fastgenerateapi/fastapi_utils/all.py
|
|
65
65
|
fastgenerateapi/fastapi_utils/param_utils.py
|
|
66
66
|
fastgenerateapi/fastapi_utils/response_utils.py
|
|
67
|
+
fastgenerateapi/fastapi_utils/tortoise_utils.py
|
|
67
68
|
fastgenerateapi/model/__init__.py
|
|
68
69
|
fastgenerateapi/model/base_model.py
|
|
69
70
|
fastgenerateapi/my_fields/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/base_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/dbmodel_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/response_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/save_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/tool_mixin.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/__init__.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/docx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/file_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/pdf_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/api_view/mixin/utils/xlsx_util.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/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
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/channel/connection_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/filter_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/router_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/rpc_controller.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/controller/search_controller.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/data_type/mysql_data_type.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.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/fastapi_utils/param_utils.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/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
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/my_fields/soft_delete_field.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/base_model.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/base_settings.py
RENAMED
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/pydantic_utils/json_encoders.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
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi/schemas_factory/response_factory.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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{fastgenerateapi-1.2.3 → fastgenerateapi-1.2.5}/fastgenerateapi.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|