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.
@@ -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
+ }
@@ -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>')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.97
3
+ Version: 1.8.99
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -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=9ecDreptxM1dDLDdn-aNGRmN1Q-mW4Sq3dYvfHbDHiM,850
227
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=pAloalyOeRCWitdhlF4aOFkODYv5EWyKwhiQofxaWfo,4982
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=UYT7DwJoA5hnkL7fCcdRqxvozqA-BvNO8VYHXuDRlhI,1297
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=rQ1xKXYJVSXGRisJ5XZeFIvH_iRWJjqwHzcAZs8n2Z8,689
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=ZPoq3SueGJfR_aWk-a6dIHRNmO1Qa-8kHUW0aR4ZW3g,920
235
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=GMSICxW_A8RTCtoENDEjce-R8GRLKtHa-OU5OLMdH5s,720
236
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=jZfMgtyxU5eCStu-9jv9SrAgUAAVeO1_mQvzPI_rV4A,1212
237
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=GJQXMAHvieMQ15WEp0mNS1aXEuWHwhSwTmOw-ebkV50,1042
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.97.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
388
- arpakitlib-1.8.97.dist-info/METADATA,sha256=LM9KBMYvoRgyQzhQatdHX9WXGs6dCqmIdar21jLY680,3470
389
- arpakitlib-1.8.97.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
390
- arpakitlib-1.8.97.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
391
- arpakitlib-1.8.97.dist-info/RECORD,,
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,,