arpakitlib 1.8.97__py3-none-any.whl → 1.8.99__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/project/sqladmin_/add_admin_in_app.py +2 -1
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py +2 -1
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py +1 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py +8 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py +8 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py +8 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py +7 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py +7 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py +0 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py +40 -0
- {arpakitlib-1.8.97.dist-info → arpakitlib-1.8.99.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.97.dist-info → arpakitlib-1.8.99.dist-info}/RECORD +15 -13
- {arpakitlib-1.8.97.dist-info → arpakitlib-1.8.99.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.97.dist-info → arpakitlib-1.8.99.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.97.dist-info → arpakitlib-1.8.99.dist-info}/entry_points.txt +0 -0
@@ -1,9 +1,10 @@
|
|
1
1
|
from fastapi import FastAPI
|
2
|
+
from sqladmin import Admin
|
3
|
+
|
2
4
|
from project.core.settings import get_cached_settings
|
3
5
|
from project.sqladmin_.admin_authorize import SQLAdminAuth
|
4
6
|
from project.sqladmin_.model_view import SimpleMV
|
5
7
|
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
6
|
-
from sqladmin import Admin
|
7
8
|
|
8
9
|
|
9
10
|
def add_sqladmin_in_app(
|
@@ -2,11 +2,12 @@ import logging
|
|
2
2
|
|
3
3
|
import fastapi
|
4
4
|
import sqlalchemy
|
5
|
+
from sqladmin.authentication import AuthenticationBackend
|
6
|
+
|
5
7
|
from arpakitlib.ar_str_util import make_none_if_blank, strip_if_not_none
|
6
8
|
from project.core.settings import get_cached_settings
|
7
9
|
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
8
10
|
from project.sqlalchemy_db_.sqlalchemy_model import UserTokenDBM, UserDBM
|
9
|
-
from sqladmin.authentication import AuthenticationBackend
|
10
11
|
|
11
12
|
SQLADMIN_AUTHORIZE_KEY = "sqladmin_authorize_key"
|
12
13
|
|
@@ -2,6 +2,7 @@ import logging
|
|
2
2
|
|
3
3
|
from fastapi import FastAPI
|
4
4
|
from fastapi.middleware.cors import CORSMiddleware
|
5
|
+
|
5
6
|
from project.core.settings import get_cached_settings
|
6
7
|
from project.core.util import setup_logging
|
7
8
|
from project.sqladmin_.add_admin_in_app import add_sqladmin_in_app
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import sqlalchemy
|
2
2
|
|
3
3
|
from project.sqladmin_.model_view.common import SimpleMV
|
4
|
+
from project.sqladmin_.util.etc import format_datetime_
|
4
5
|
from project.sqlalchemy_db_.sqlalchemy_model import ApiKeyDBM
|
5
6
|
|
6
7
|
|
7
8
|
class ApiKeyMV(SimpleMV, model=ApiKeyDBM):
|
8
9
|
name = "ApiKey"
|
9
10
|
name_plural = "ApiKeys"
|
11
|
+
icon = "fa-solid fa-key"
|
10
12
|
column_list = sqlalchemy.inspect(ApiKeyDBM).columns
|
11
13
|
form_columns = [
|
12
14
|
ApiKeyDBM.slug,
|
@@ -24,3 +26,9 @@ class ApiKeyMV(SimpleMV, model=ApiKeyDBM):
|
|
24
26
|
ApiKeyDBM.slug,
|
25
27
|
ApiKeyDBM.value,
|
26
28
|
]
|
29
|
+
column_formatters = {
|
30
|
+
ApiKeyDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
31
|
+
}
|
32
|
+
column_formatters_detail = {
|
33
|
+
ApiKeyDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
34
|
+
}
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import sqlalchemy
|
2
2
|
|
3
3
|
from project.sqladmin_.model_view.common import SimpleMV
|
4
|
+
from project.sqladmin_.util.etc import format_datetime_
|
4
5
|
from project.sqlalchemy_db_.sqlalchemy_model import OperationDBM
|
5
6
|
|
6
7
|
|
7
8
|
class OperationMV(SimpleMV, model=OperationDBM):
|
8
9
|
name = "Operation"
|
9
10
|
name_plural = "Operations"
|
11
|
+
icon = "fa-solid fa-gears"
|
10
12
|
column_list = sqlalchemy.inspect(OperationDBM).columns
|
11
13
|
form_columns = [
|
12
14
|
OperationDBM.slug,
|
@@ -29,3 +31,9 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
29
31
|
OperationDBM.long_id,
|
30
32
|
OperationDBM.slug,
|
31
33
|
]
|
34
|
+
column_formatters = {
|
35
|
+
OperationDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
36
|
+
}
|
37
|
+
column_formatters_detail = {
|
38
|
+
OperationDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
39
|
+
}
|
@@ -1,12 +1,14 @@
|
|
1
1
|
import sqlalchemy
|
2
2
|
|
3
3
|
from project.sqladmin_.model_view.common import SimpleMV
|
4
|
+
from project.sqladmin_.util.etc import format_datetime_
|
4
5
|
from project.sqlalchemy_db_.sqlalchemy_model import StoryLogDBM
|
5
6
|
|
6
7
|
|
7
8
|
class StoryLogMV(SimpleMV, model=StoryLogDBM):
|
8
9
|
name = "StoryLog"
|
9
10
|
name_plural = "StoryLogs"
|
11
|
+
icon = "fa-solid fa-history"
|
10
12
|
column_list = sqlalchemy.inspect(StoryLogDBM).columns
|
11
13
|
form_columns = [
|
12
14
|
StoryLogDBM.slug,
|
@@ -24,3 +26,9 @@ class StoryLogMV(SimpleMV, model=StoryLogDBM):
|
|
24
26
|
StoryLogDBM.long_id,
|
25
27
|
StoryLogDBM.slug,
|
26
28
|
]
|
29
|
+
column_formatters = {
|
30
|
+
StoryLogDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
31
|
+
}
|
32
|
+
column_formatters_detail = {
|
33
|
+
StoryLogDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
34
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import sqlalchemy
|
2
2
|
|
3
3
|
from project.sqladmin_.model_view.common import SimpleMV
|
4
|
+
from project.sqladmin_.util.etc import format_datetime_
|
4
5
|
from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
|
5
6
|
|
6
7
|
|
@@ -47,3 +48,9 @@ class UserMV(SimpleMV, model=UserDBM):
|
|
47
48
|
UserDBM.password,
|
48
49
|
UserDBM.tg_id
|
49
50
|
]
|
51
|
+
column_formatters = {
|
52
|
+
UserDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
53
|
+
}
|
54
|
+
column_formatters_detail = {
|
55
|
+
UserDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
56
|
+
}
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import sqlalchemy
|
2
2
|
|
3
3
|
from project.sqladmin_.model_view.common import SimpleMV
|
4
|
+
from project.sqladmin_.util.etc import format_datetime_
|
4
5
|
from project.sqlalchemy_db_.sqlalchemy_model import UserTokenDBM
|
5
6
|
|
6
7
|
|
@@ -36,3 +37,9 @@ class UserTokenMV(SimpleMV, model=UserTokenDBM):
|
|
36
37
|
UserTokenDBM.slug,
|
37
38
|
UserTokenDBM.value,
|
38
39
|
]
|
40
|
+
column_formatters = {
|
41
|
+
UserTokenDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
42
|
+
}
|
43
|
+
column_formatters_detail = {
|
44
|
+
UserTokenDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt)
|
45
|
+
}
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import datetime as dt
|
2
|
+
from typing import Any
|
3
|
+
|
4
|
+
from markupsafe import Markup
|
5
|
+
from pygments import highlight
|
6
|
+
from pygments.formatters.html import HtmlFormatter
|
7
|
+
from pygments.lexers.data import JsonLexer
|
8
|
+
|
9
|
+
from arpakitlib.ar_json_util import transfer_data_to_json_str
|
10
|
+
|
11
|
+
|
12
|
+
def format_datetime_(datetime_: dt.datetime | None) -> str:
|
13
|
+
if datetime_ is None:
|
14
|
+
return ""
|
15
|
+
return datetime_.strftime("%Y-%m-%d %H:%M:%S %Z%z")
|
16
|
+
|
17
|
+
|
18
|
+
def format_json_for_preview_(data: dict[str, Any] | list[Any] | None) -> str:
|
19
|
+
if data is None:
|
20
|
+
return ""
|
21
|
+
return f"JSON {type(data)} ({len(data)} элементов)"
|
22
|
+
|
23
|
+
|
24
|
+
def format_json_(data: dict[str, Any] | list[Any] | None) -> str:
|
25
|
+
if data is None:
|
26
|
+
return Markup("")
|
27
|
+
highlighted_json = highlight(
|
28
|
+
transfer_data_to_json_str(data, beautify=True),
|
29
|
+
JsonLexer(),
|
30
|
+
HtmlFormatter()
|
31
|
+
)
|
32
|
+
return Markup(highlighted_json)
|
33
|
+
|
34
|
+
|
35
|
+
def format_link_(
|
36
|
+
link: str | None = None,
|
37
|
+
) -> str:
|
38
|
+
if link is None:
|
39
|
+
return ""
|
40
|
+
return Markup(f'<a href="{link}" target="_blank">{link}</a>')
|
@@ -223,18 +223,20 @@ arpakitlib/_arpakit_project_template_v_5/project/site/exception_handler.py,sha25
|
|
223
223
|
arpakitlib/_arpakit_project_template_v_5/project/site/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
224
224
|
arpakitlib/_arpakit_project_template_v_5/project/site/router/main_router.py,sha256=J5jNfgd-3OiWTtuubimEUz6wrOogupj9PkUdDmwz-2U,62
|
225
225
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
226
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py,sha256=
|
227
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=
|
226
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py,sha256=JTXLf18DQVsZtoe6yFpZIVJI95rgJofnTe9YKyVwwhQ,851
|
227
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=tmvYx5hFO2RqHmhKktpMRJaBuT6vDHBOsQujihO7sMw,4983
|
228
228
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
|
229
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=
|
229
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=x5F8--5KA4cmTrb6kAAmp6fVd2TiqxPOzxqUkSEhSG4,1298
|
230
230
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUYNlsX9Sj_QLMzYuTQbbYYbIMHhbsSjTXt-G7lOE,849
|
231
231
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=MtEk37LR9xg5XltEbIAw1hh74BsS70I2G3C21QSbjVQ,357
|
232
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=
|
232
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=vSXw1wTpSwzz6l6qrgrzkCiklZmilZE6L2eBMxPDbk4,997
|
233
233
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=US1tueTCPvAdse6TLT6yRLUHbvwGGagApYhFJzE_6Yc,576
|
234
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=
|
235
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=
|
236
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=
|
237
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=
|
234
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=DMgo4237FzmCc5hIC7ck9Ys1WhlonqBl09_NmszgD0U,1236
|
235
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=suHGfQpcgfDIEKaczuwbbxLsOzbZlBtmEuKYPXeATtQ,1036
|
236
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=7qJMaMMy9sAAbl7s7CfP6Hybdyzk6a1xTdZMTGHE_PI,1487
|
237
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=vUr1rz7H_e6qlmz5Y3isAgtK1_2F1JHojklfnkaBJIY,1327
|
238
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
239
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py,sha256=WRb7JUYGNvT_9O4-M8EO_z6pa1s63WIxkYy-N-iwKts,1070
|
238
240
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
239
241
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
240
242
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=1y3FaMFzm_5UM2poqtBve_UP_mh1vjs--krq6yO8PsA,742
|
@@ -384,8 +386,8 @@ arpakitlib/ar_ssh_runner_util.py,sha256=yvAwza480MkHKvLkDEsR7JNh2bYNs6P9rCVo4NA8
|
|
384
386
|
arpakitlib/ar_str_util.py,sha256=CAv0wH8nP5Ja59S-hEdmNhNrM_Fwy935d0zntLpJkx8,4309
|
385
387
|
arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
|
386
388
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
387
|
-
arpakitlib-1.8.
|
388
|
-
arpakitlib-1.8.
|
389
|
-
arpakitlib-1.8.
|
390
|
-
arpakitlib-1.8.
|
391
|
-
arpakitlib-1.8.
|
389
|
+
arpakitlib-1.8.99.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
390
|
+
arpakitlib-1.8.99.dist-info/METADATA,sha256=QQOeAsA4FsE29ntPwQm5utHgq-XTijuYt04Ih_ljyFc,3470
|
391
|
+
arpakitlib-1.8.99.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
392
|
+
arpakitlib-1.8.99.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
393
|
+
arpakitlib-1.8.99.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|