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.
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "arpakitlib_project_template_version": "5",
3
- "arpakitlib_project_template_subversion": "59"
3
+ "arpakitlib_project_template_subversion": "60"
4
4
  }
@@ -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(app=api_app, favicon_url="/static/openapi-favicon.png")
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
- self.error_code = error_code
22
- self.error_specification_code = error_specification_code
23
- self.error_description = error_description
24
- if error_data is None:
25
- error_data = {}
26
- self.error_data = error_data
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
- error_data: dict[str, Any] = {}
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
@@ -1,3 +1,4 @@
1
+ from project.core.settings import get_cached_settings
1
2
  from project.sqladmin_.create_sqladmin_app import create_sqladmin_app
2
3
 
3
- app = create_sqladmin_app()
4
+ app = create_sqladmin_app(base_url=get_cached_settings().sqladmin_prefix)
@@ -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(*, prefix: str = "/sqladmin") -> FastAPI:
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=prefix
44
+ base_url=base_url
45
45
  )
46
46
 
47
47
  _logger.info("finish")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.232
3
+ Version: 1.8.234
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -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=dN2oKmHuIXZOFL1sBNYTX1n2YqT7tqoPZWGtuxXs1zg,98
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=rY9rI-_mbx8mu1-Q-MRVbw5Cmrv5qtHCJznFs1gBiNQ,3006
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=BSCYbdHYBldXmbdRxW14tIA47vttRXVlBGw7wMur8us,1425
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=C8oaHotxmxBnN7Lr1qT7T5Mk0SIU2Ha7_tPDpgiR6M8,286
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=-pxFzibJiQiOq9wId4UCfFa8T84J3PwioZBcYANKyf0,6915
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=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
253
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=JGCHgqJJvAjpc8xnbXPqCeUiLeKO7eo6OA6uPYzzqlk,1308
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.232.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
426
- arpakitlib-1.8.232.dist-info/METADATA,sha256=CaPTaSh0P_kdxE1DSMscXf9ZlxSKEkmn_1OC9hr55DI,3741
427
- arpakitlib-1.8.232.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
428
- arpakitlib-1.8.232.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
429
- arpakitlib-1.8.232.dist-info/RECORD,,
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,,