arpakitlib 1.8.232__py3-none-any.whl → 1.8.234__py3-none-any.whl
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.
- arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json +1 -1
- arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py +3 -1
- arpakitlib/_arpakit_project_template_v_5/project/api/exception.py +36 -15
- arpakitlib/_arpakit_project_template_v_5/project/api/raise_own_exception_if_exception_in_api_router.py +34 -0
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py +4 -1
- arpakitlib/_arpakit_project_template_v_5/project/core/settings.py +6 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py +2 -1
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py +2 -2
- {arpakitlib-1.8.232.dist-info → arpakitlib-1.8.234.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.232.dist-info → arpakitlib-1.8.234.dist-info}/RECORD +13 -12
- {arpakitlib-1.8.232.dist-info → arpakitlib-1.8.234.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.232.dist-info → arpakitlib-1.8.234.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.232.dist-info → arpakitlib-1.8.234.dist-info}/entry_points.txt +0 -0
@@ -74,7 +74,9 @@ def create_api_app(*, prefix: str = "/api") -> FastAPI:
|
|
74
74
|
|
75
75
|
if get_cached_settings().api_enable_sqladmin:
|
76
76
|
from project.sqladmin_.add_admin_in_app import add_sqladmin_in_app
|
77
|
-
add_sqladmin_in_app(
|
77
|
+
add_sqladmin_in_app(
|
78
|
+
base_url=get_cached_settings().sqladmin_prefix, app=api_app, favicon_url="/static/openapi-favicon.png"
|
79
|
+
)
|
78
80
|
|
79
81
|
_logger.info("finish")
|
80
82
|
|
@@ -11,31 +11,52 @@ class APIException(fastapi.exceptions.HTTPException):
|
|
11
11
|
self,
|
12
12
|
*,
|
13
13
|
status_code: int = fastapi.status.HTTP_400_BAD_REQUEST,
|
14
|
+
error_common_so: ErrorCommonSO | None = None,
|
14
15
|
error_code: str | None = APIErrorCodes.unknown_error,
|
15
16
|
error_specification_code: str | None = None,
|
16
17
|
error_description: str | None = None,
|
18
|
+
error_description_data: dict[str, Any] | None = None,
|
17
19
|
error_data: dict[str, Any] | None = None,
|
18
|
-
kwargs_: dict[str, Any] | None = None
|
20
|
+
kwargs_: dict[str, Any] | None = None,
|
21
|
+
kwargs_create_story_log: bool = True,
|
22
|
+
kwargs_logging_full_error: bool = True,
|
19
23
|
):
|
20
24
|
self.status_code = status_code
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
|
26
|
+
if error_common_so is None:
|
27
|
+
self.error_code = error_code
|
28
|
+
self.error_specification_code = error_specification_code
|
29
|
+
self.error_description = error_description
|
30
|
+
if error_description_data is None:
|
31
|
+
error_description_data = {}
|
32
|
+
self.error_description_data = error_description_data
|
33
|
+
if error_data is None:
|
34
|
+
error_data = {}
|
35
|
+
self.error_data = error_data
|
36
|
+
self.error_common_so = ErrorCommonSO(
|
37
|
+
has_error=True,
|
38
|
+
error_code=self.error_code,
|
39
|
+
error_specification_code=self.error_specification_code,
|
40
|
+
error_description=self.error_description,
|
41
|
+
error_description_data=self.error_description_data,
|
42
|
+
error_data=self.error_data
|
43
|
+
)
|
44
|
+
else:
|
45
|
+
self.error_common_so = error_common_so
|
46
|
+
self.error_code = error_common_so.error_code
|
47
|
+
self.error_specification_code = error_common_so.error_specification_code
|
48
|
+
self.error_description = error_common_so.error_description
|
49
|
+
self.error_description_data = error_common_so.error_description_data
|
50
|
+
self.error_data = error_common_so.error_data
|
51
|
+
|
27
52
|
if kwargs_ is None:
|
28
53
|
kwargs_ = {}
|
54
|
+
if "create_story_log" not in kwargs_:
|
55
|
+
kwargs_["create_story_log"] = kwargs_create_story_log
|
56
|
+
if "logging" not in kwargs_:
|
57
|
+
kwargs_["logging_full_error"] = kwargs_logging_full_error
|
29
58
|
self.kwargs_ = kwargs_
|
30
59
|
|
31
|
-
self.error_common_so = ErrorCommonSO(
|
32
|
-
has_error=True,
|
33
|
-
error_code=self.error_code,
|
34
|
-
error_specification_code=self.error_specification_code,
|
35
|
-
error_description=self.error_description,
|
36
|
-
error_data=self.error_data
|
37
|
-
)
|
38
|
-
|
39
60
|
super().__init__(
|
40
61
|
status_code=self.status_code,
|
41
62
|
detail=self.error_common_so.model_dump(mode="json")
|
@@ -0,0 +1,34 @@
|
|
1
|
+
from typing import Any
|
2
|
+
|
3
|
+
import fastapi
|
4
|
+
from arpakitlib.raise_own_exception_if_exception import raise_own_exception_if_exception
|
5
|
+
|
6
|
+
from project.api.exception import APIException
|
7
|
+
from project.api.schema.out.common.error import ErrorCommonSO
|
8
|
+
|
9
|
+
|
10
|
+
def raise_own_exception_if_exception_in_api_router(
|
11
|
+
*,
|
12
|
+
status_code: int = fastapi.status.HTTP_400_BAD_REQUEST,
|
13
|
+
error_common_so: ErrorCommonSO | None = None,
|
14
|
+
kwargs_: dict[str, Any] | None = None,
|
15
|
+
kwargs_create_story_log: bool = True,
|
16
|
+
kwargs_logging_full_error: bool = True,
|
17
|
+
):
|
18
|
+
"""Обертка над декоратором raise_own_exception_if_exception"""
|
19
|
+
|
20
|
+
def decorator(func):
|
21
|
+
# просто возвращаем результат применения исходного декоратора
|
22
|
+
return raise_own_exception_if_exception(
|
23
|
+
catching_exceptions=Exception,
|
24
|
+
own_exception=APIException,
|
25
|
+
forward_kwargs_in_own_exception={
|
26
|
+
"status_code": status_code,
|
27
|
+
"error_common_so": error_common_so,
|
28
|
+
"kwargs_": kwargs_,
|
29
|
+
"kwargs_create_story_log": kwargs_create_story_log,
|
30
|
+
"kwargs_logging_full_error": kwargs_logging_full_error
|
31
|
+
}
|
32
|
+
)(func)
|
33
|
+
|
34
|
+
return decorator
|
@@ -1,5 +1,7 @@
|
|
1
1
|
from typing import Any
|
2
2
|
|
3
|
+
from pydantic import Field
|
4
|
+
|
3
5
|
from project.api.schema.common import BaseSO
|
4
6
|
|
5
7
|
|
@@ -8,4 +10,5 @@ class ErrorCommonSO(BaseSO):
|
|
8
10
|
error_code: str | None = None
|
9
11
|
error_specification_code: str | None = None
|
10
12
|
error_description: str | None = None
|
11
|
-
|
13
|
+
error_description_data: dict[str, Any] = Field(default_factory=dict)
|
14
|
+
error_data: dict[str, Any] = Field(default_factory=dict)
|
@@ -153,6 +153,12 @@ class Settings(SimpleSettings):
|
|
153
153
|
|
154
154
|
sqladmin_port: int | None = 8081
|
155
155
|
|
156
|
+
sqladmin_prefix: str | None = "/sqladmin"
|
157
|
+
|
158
|
+
sqladmin_full_url: str = f"http://{api_host}:{api_port}"
|
159
|
+
|
160
|
+
sqladmin_full_url_with_prefix: str = sqladmin_full_url + sqladmin_prefix
|
161
|
+
|
156
162
|
tg_bot_token: str | None = None
|
157
163
|
|
158
164
|
tg_bot_proxy_url: str | None = None
|
@@ -11,7 +11,7 @@ from project.sqladmin_.event import get_sqladmin_startup_events, get_sqladmin_sh
|
|
11
11
|
_logger = logging.getLogger(__name__)
|
12
12
|
|
13
13
|
|
14
|
-
def create_sqladmin_app(*,
|
14
|
+
def create_sqladmin_app(*, base_url: str = "/sqladmin") -> FastAPI:
|
15
15
|
setup_logging()
|
16
16
|
|
17
17
|
_logger.info("start")
|
@@ -41,7 +41,7 @@ def create_sqladmin_app(*, prefix: str = "/sqladmin") -> FastAPI:
|
|
41
41
|
|
42
42
|
add_sqladmin_in_app(
|
43
43
|
app=sqladmin_app,
|
44
|
-
base_url=
|
44
|
+
base_url=base_url
|
45
45
|
)
|
46
46
|
|
47
47
|
_logger.info("finish")
|
@@ -8,7 +8,7 @@ arpakitlib/_arpakit_project_template_v_5/alembic/env.py,sha256=Qesmnj5A2kB-Doeuf
|
|
8
8
|
arpakitlib/_arpakit_project_template_v_5/alembic/script.py.mako,sha256=MEqL-2qATlST9TAOeYgscMn1uy6HUS9NFvDgl93dMj8,635
|
9
9
|
arpakitlib/_arpakit_project_template_v_5/alembic/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
arpakitlib/_arpakit_project_template_v_5/alembic.ini,sha256=8fuyeEvGBiPGbxEFy8ISBV3xX_fgVmuhEGpB10_B5Uo,3733
|
11
|
-
arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json,sha256=
|
11
|
+
arpakitlib/_arpakit_project_template_v_5/arpakitlib_project_template_info.json,sha256=zvYnveSfv5GgCQr3J2tmByBGeJ9LQ7qucpvueiUjYL8,98
|
12
12
|
arpakitlib/_arpakit_project_template_v_5/command/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
13
|
arpakitlib/_arpakit_project_template_v_5/command/alembic_history.sh,sha256=OMnDNtHIksGh9iavWnzbtxcudZW4vjdcISsBXvzZSPw,22
|
14
14
|
arpakitlib/_arpakit_project_template_v_5/command/alembic_revision_autogenerate.sh,sha256=yW2i-SBOtBx15Ya0poVQqKkJM5t2JZp06r9AEW-DmGE,46
|
@@ -89,15 +89,16 @@ arpakitlib/_arpakit_project_template_v_5/project/api/blank/__init__.py,sha256=47
|
|
89
89
|
arpakitlib/_arpakit_project_template_v_5/project/api/blank/admin.py,sha256=ii1zLHjvB7OVLQKFOhp4lpodXcwAmtwDdrM1iaafQfg,100
|
90
90
|
arpakitlib/_arpakit_project_template_v_5/project/api/blank/client.py,sha256=rvJKtAB26Qy2pKVSHSMUM_70oI4v8Yr6Vmpr6r4EzNk,101
|
91
91
|
arpakitlib/_arpakit_project_template_v_5/project/api/blank/common.py,sha256=ug1FylE_CVC5eij-u4nh-IHNO-gwkbBGo5KgyWDujC8,91
|
92
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py,sha256
|
92
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py,sha256=-xJLrNuiUC8K-L2Q_1YbQzi_2bquW3HgVx7Ye2haHNk,3076
|
93
93
|
arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py,sha256=BgqmD-7gXQ_zoz3ATqVacQzkg9lbvKnCSvQxm0M0Vxw,1824
|
94
94
|
arpakitlib/_arpakit_project_template_v_5/project/api/event.py,sha256=P8gV2Bq6LeLH0JDN9Z3O401PMbyNr2n-tme2gPvT-m4,996
|
95
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/exception.py,sha256=
|
95
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/exception.py,sha256=_lQ-qX0SxU8_XBDUYz924ZjxJ-FnOvXFaVbyptGuRyw,2600
|
96
96
|
arpakitlib/_arpakit_project_template_v_5/project/api/exception_handler.py,sha256=Se4Bj1Sdp6KXW7-G5xm0obJAFu3MfPA5NTm6yEEjgqU,11556
|
97
97
|
arpakitlib/_arpakit_project_template_v_5/project/api/middleware/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
arpakitlib/_arpakit_project_template_v_5/project/api/middleware/add_api_middlewares.py,sha256=TrWn0yPDCn0yTlHqLf19ypGtRumNjDxm0sM60yVsqXE,468
|
99
99
|
arpakitlib/_arpakit_project_template_v_5/project/api/middleware/limit_content_length.py,sha256=cEtGcJSh3e2EyuQCFqKzRcrl3qS6oIvpSv5UEbYsvR4,1622
|
100
100
|
arpakitlib/_arpakit_project_template_v_5/project/api/openapi_ui.py,sha256=7yg9ZNu6BjTAregnfbRFpwvqa-gTIY6o6NCz5pmsbeo,976
|
101
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/raise_own_exception_if_exception_in_api_router.py,sha256=6wBvzf0et1Jw7GSYKzZ6typmIubPn2SMJJMAZUBPsz0,1304
|
101
102
|
arpakitlib/_arpakit_project_template_v_5/project/api/response.py,sha256=xZMymP2BuQaRNVWLeIp3UgUUo-MFN8MJnsn9Al4vOb8,1028
|
102
103
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
103
104
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -162,7 +163,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py,s
|
|
162
163
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user_token.py,sha256=Emhpawd_jGWu9xzyYyXk9h0YDSnHGDkyfP-hIgenzpA,508
|
163
164
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
164
165
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/datetime_.py,sha256=YFo29Qc7JMVq-OR398kPy4ypjh9kYAxPuZZUsobhDdc,942
|
165
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py,sha256=
|
166
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/error.py,sha256=QAJPTEVf4257fdWmmJes081TWqGb5eglDamQOO1ZHkE,412
|
166
167
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/ok.py,sha256=t0uT5WIO7hiHG6rQBkb10l37GCAUbki14v-E8-mWzNs,96
|
167
168
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/raw_data.py,sha256=T7DWPHlno37-2qfQLLGXY2_4Ajs_l9_UxDDF1VGdpqk,136
|
168
169
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -186,7 +187,7 @@ arpakitlib/_arpakit_project_template_v_5/project/core/dump_file_storage_in_dir.p
|
|
186
187
|
arpakitlib/_arpakit_project_template_v_5/project/core/easy_openai_api_client.py,sha256=ssQ8Ju6CBQeXSOa_lfLaqycSf0a-NIj6ucOhEsPseVc,1141
|
187
188
|
arpakitlib/_arpakit_project_template_v_5/project/core/jinja2_templates.py,sha256=jCNLaBauGC7YNvZdTLNHuPp7hmRGt94O23Skg6ewo7o,352
|
188
189
|
arpakitlib/_arpakit_project_template_v_5/project/core/media_file_storage_in_dir.py,sha256=fMofTsfJtA8pp5lEUhucEUu3PBsmj-elaRZzExDsdLI,623
|
189
|
-
arpakitlib/_arpakit_project_template_v_5/project/core/settings.py,sha256=-
|
190
|
+
arpakitlib/_arpakit_project_template_v_5/project/core/settings.py,sha256=-1iKNOUQrHohahxoPl_V7e7Q53T_Sl1LTdu_EsBx9MU,7102
|
190
191
|
arpakitlib/_arpakit_project_template_v_5/project/core/setup_logging.py,sha256=7VRejVMUNeR-MywrVw7B1RxVkIBHwVNQJFC4wlpBJco,1497
|
191
192
|
arpakitlib/_arpakit_project_template_v_5/project/core/util.py,sha256=iCwpuRqr6TfW0sKVH-3asQjhueJuad3ffq6sPI6ZUrs,347
|
192
193
|
arpakitlib/_arpakit_project_template_v_5/project/emailer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -249,8 +250,8 @@ arpakitlib/_arpakit_project_template_v_5/project/site/router/main_router.py,sha2
|
|
249
250
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
250
251
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py,sha256=JTXLf18DQVsZtoe6yFpZIVJI95rgJofnTe9YKyVwwhQ,851
|
251
252
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=eIJ-oG8-piqSsnEPN3aJT_U5XOnxL7ZW3BCbLfVKS-E,5349
|
252
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=
|
253
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=
|
253
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=kkzOo8xQ5NZCKVQYeaVXzYIhAXRLUrQVFToqEJWvQEc,199
|
254
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=GdNfgOEKSyBSQqyym0f7OuWqcTvI1MGcpUXPrQbt2bc,1312
|
254
255
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUYNlsX9Sj_QLMzYuTQbbYYbIMHhbsSjTXt-G7lOE,849
|
255
256
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=upngi5hsrv6f5M-_R0r_DfERl8jzTnZ6VOum71xiGcY,595
|
256
257
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=AfWtDIf0Z7GVEsnGw921u3VbkxhFIffR8u8MfspldSs,750
|
@@ -422,8 +423,8 @@ arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrI
|
|
422
423
|
arpakitlib/clone_pydantic_model_fields.py,sha256=xxLwtvJzDf8EWMvBE4psWIj8c-cyeCxLRX76oCY_4zk,1214
|
423
424
|
arpakitlib/pydantic_schema_from_sqlalchemy_model.py,sha256=_5Y79kQ4lLIOL6_afIFVwxY1EXzTMpi-veRR-WkPFOs,2879
|
424
425
|
arpakitlib/raise_own_exception_if_exception.py,sha256=WCgrT0rwNMEAE__44TQaY4UXzRBKt-aJbMoOvTMGJVc,5541
|
425
|
-
arpakitlib-1.8.
|
426
|
-
arpakitlib-1.8.
|
427
|
-
arpakitlib-1.8.
|
428
|
-
arpakitlib-1.8.
|
429
|
-
arpakitlib-1.8.
|
426
|
+
arpakitlib-1.8.234.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
427
|
+
arpakitlib-1.8.234.dist-info/METADATA,sha256=LXaP2vSyl6XV2z0eEKi4uupUTu9mQzBwOBNVGJ7Ca-4,3741
|
428
|
+
arpakitlib-1.8.234.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
429
|
+
arpakitlib-1.8.234.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
430
|
+
arpakitlib-1.8.234.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|