arpakitlib 1.8.184__py3-none-any.whl → 1.8.186__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/sqladmin_/model_view/__init__.py +5 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py +16 -5
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py +4 -4
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py +2 -2
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py +2 -2
- arpakitlib/ar_sqladmin_util.py +16 -3
- arpakitlib/ar_sqlalchemy_util.py +3 -3
- {arpakitlib-1.8.184.dist-info → arpakitlib-1.8.186.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.184.dist-info → arpakitlib-1.8.186.dist-info}/RECORD +13 -13
- {arpakitlib-1.8.184.dist-info → arpakitlib-1.8.186.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.184.dist-info → arpakitlib-1.8.186.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.184.dist-info → arpakitlib-1.8.186.dist-info}/entry_points.txt +0 -0
@@ -1,3 +1,4 @@
|
|
1
|
+
from arpakitlib.ar_sqladmin_util import get_string_info_from_model_view
|
1
2
|
from project.sqladmin_.model_view.api_key import ApiKeyMV
|
2
3
|
from project.sqladmin_.model_view.common import SimpleMV
|
3
4
|
from project.sqladmin_.model_view.operation import OperationMV
|
@@ -5,3 +6,7 @@ from project.sqladmin_.model_view.story_log import StoryLogMV
|
|
5
6
|
from project.sqladmin_.model_view.user import UserMV
|
6
7
|
from project.sqladmin_.model_view.user_token import UserTokenMV
|
7
8
|
from project.sqladmin_.model_view.verification_code import VerificationCodeMV
|
9
|
+
|
10
|
+
|
11
|
+
if __name__ == '__main__':
|
12
|
+
print(get_string_info_from_model_view(class_=SimpleMV))
|
@@ -23,7 +23,9 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
23
23
|
OperationDBM.input_data,
|
24
24
|
OperationDBM.output_data,
|
25
25
|
OperationDBM.error_data,
|
26
|
-
OperationDBM.extra_data
|
26
|
+
OperationDBM.extra_data,
|
27
|
+
|
28
|
+
"duration"
|
27
29
|
]
|
28
30
|
column_details_list = [
|
29
31
|
OperationDBM.id,
|
@@ -38,7 +40,9 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
38
40
|
OperationDBM.input_data,
|
39
41
|
OperationDBM.output_data,
|
40
42
|
OperationDBM.error_data,
|
41
|
-
OperationDBM.extra_data
|
43
|
+
OperationDBM.extra_data,
|
44
|
+
|
45
|
+
"duration"
|
42
46
|
]
|
43
47
|
form_columns = [
|
44
48
|
OperationDBM.slug,
|
@@ -53,12 +57,17 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
53
57
|
OperationDBM.extra_data
|
54
58
|
]
|
55
59
|
form_overrides = {
|
56
|
-
OperationDBM.status.key: SelectField
|
60
|
+
OperationDBM.status.key: SelectField,
|
61
|
+
OperationDBM.type.key: SelectField
|
57
62
|
}
|
58
63
|
form_args = {
|
59
64
|
OperationDBM.status.key: {
|
60
|
-
"choices": [(
|
61
|
-
"description": "Choose status"
|
65
|
+
"choices": [(v, v) for v in OperationDBM.Statuses.values_list()],
|
66
|
+
"description": f"Choose {OperationDBM.status.key}"
|
67
|
+
},
|
68
|
+
OperationDBM.type.key: {
|
69
|
+
"choices": [(v, v) for v in OperationDBM.Types.values_list()],
|
70
|
+
"description": f"Choose {OperationDBM.type.key}"
|
62
71
|
}
|
63
72
|
}
|
64
73
|
column_sortable_list = sqlalchemy.inspect(OperationDBM).columns
|
@@ -77,6 +86,7 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
77
86
|
OperationDBM.output_data: lambda m, a: format_json_for_preview_(m.output_data),
|
78
87
|
OperationDBM.error_data: lambda m, a: format_json_for_preview_(m.error_data),
|
79
88
|
OperationDBM.extra_data: lambda m, a: format_json_for_preview_(m.extra_data),
|
89
|
+
"duration": lambda m, a: m.duration,
|
80
90
|
}
|
81
91
|
column_formatters_detail = {
|
82
92
|
OperationDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt),
|
@@ -84,4 +94,5 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
84
94
|
OperationDBM.output_data: lambda m, a: format_json_(m.output_data),
|
85
95
|
OperationDBM.error_data: lambda m, a: format_json_(m.error_data),
|
86
96
|
OperationDBM.extra_data: lambda m, a: format_json_(m.extra_data),
|
97
|
+
"duration": lambda m, a: m.duration,
|
87
98
|
}
|
@@ -43,12 +43,12 @@ class StoryLogMV(SimpleMV, model=StoryLogDBM):
|
|
43
43
|
}
|
44
44
|
form_args = {
|
45
45
|
StoryLogDBM.level.key: {
|
46
|
-
"choices": [(
|
47
|
-
"description": "Choose level"
|
46
|
+
"choices": [(v, v) for v in StoryLogDBM.Levels.values_list()],
|
47
|
+
"description": f"Choose {StoryLogDBM.level.key}"
|
48
48
|
},
|
49
49
|
StoryLogDBM.type.key: {
|
50
|
-
"choices": [(
|
51
|
-
"description": "Choose type"
|
50
|
+
"choices": [(v, v) for v in StoryLogDBM.Types.values_list()],
|
51
|
+
"description": f"Choose {StoryLogDBM.type.key}"
|
52
52
|
}
|
53
53
|
}
|
54
54
|
column_sortable_list = sqlalchemy.inspect(StoryLogDBM).columns
|
@@ -60,8 +60,8 @@ class UserMV(SimpleMV, model=UserDBM):
|
|
60
60
|
}
|
61
61
|
form_args = {
|
62
62
|
UserDBM.roles.key: {
|
63
|
-
"choices": [(
|
64
|
-
"description": "Choose roles"
|
63
|
+
"choices": [(v, v) for v in UserDBM.Roles.values_list()],
|
64
|
+
"description": f"Choose {UserDBM.roles.key}"
|
65
65
|
}
|
66
66
|
}
|
67
67
|
column_sortable_list = sqlalchemy.inspect(UserDBM).columns
|
@@ -53,8 +53,8 @@ class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
|
|
53
53
|
}
|
54
54
|
form_args = {
|
55
55
|
VerificationCodeDBM.type.key: {
|
56
|
-
"choices": [(
|
57
|
-
"description": "Choose type"
|
56
|
+
"choices": [(v, v) for v in VerificationCodeDBM.Types.values_list()],
|
57
|
+
"description": f"Choose {VerificationCodeDBM.type.key}"
|
58
58
|
}
|
59
59
|
}
|
60
60
|
column_sortable_list = sqlalchemy.inspect(VerificationCodeDBM).columns
|
arpakitlib/ar_sqladmin_util.py
CHANGED
@@ -1,10 +1,23 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
from typing import Any
|
4
|
+
|
3
5
|
from sqladmin import ModelView
|
6
|
+
from sqlalchemy.orm.attributes import InstrumentedAttribute
|
4
7
|
|
5
8
|
|
6
9
|
def get_string_info_from_model_view(class_: type[ModelView]):
|
7
|
-
|
10
|
+
lines = [f"ModelViews: {len(class_.__subclasses__())}"]
|
8
11
|
for i, cls in enumerate(class_.__subclasses__()):
|
9
|
-
|
10
|
-
|
12
|
+
if hasattr(cls, "__name__"):
|
13
|
+
lines.append(f"{i + 1}. ModelView: {cls.__name__}")
|
14
|
+
for v in cls.column_list:
|
15
|
+
v: str | InstrumentedAttribute | Any
|
16
|
+
if isinstance(v, str):
|
17
|
+
lines.append(f" - {v}")
|
18
|
+
elif isinstance(v, InstrumentedAttribute):
|
19
|
+
lines.append(f" - {v}")
|
20
|
+
else:
|
21
|
+
raise TypeError(f"unknown type, {type(v)=}")
|
22
|
+
|
23
|
+
return "\n".join(lines)
|
arpakitlib/ar_sqlalchemy_util.py
CHANGED
@@ -314,10 +314,10 @@ def get_string_info_from_declarative_base(class_: type[DeclarativeBase]):
|
|
314
314
|
|
315
315
|
|
316
316
|
def get_string_info_from_declarative_base_2(class_: type[DeclarativeBase]) -> str:
|
317
|
-
lines: list[str] = []
|
318
|
-
for cls in class_.__subclasses__():
|
317
|
+
lines: list[str] = [f"DBModels: {len(class_.__subclasses__())}"]
|
318
|
+
for i, cls in enumerate(class_.__subclasses__()):
|
319
319
|
if hasattr(cls, "__tablename__"):
|
320
|
-
lines.append(f"
|
320
|
+
lines.append(f"{i + 1}. DBModel: {cls.__tablename__}")
|
321
321
|
mapper = inspect(cls)
|
322
322
|
for column in mapper.columns:
|
323
323
|
lines.append(f" - {column.name} ({column.type})")
|
@@ -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=NJYmP3Ip2h0QJ4bRaW6pQjNWP--54opz50U72nADw9w,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
|
@@ -246,14 +246,14 @@ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sh
|
|
246
246
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
|
247
247
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=JGCHgqJJvAjpc8xnbXPqCeUiLeKO7eo6OA6uPYzzqlk,1308
|
248
248
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUYNlsX9Sj_QLMzYuTQbbYYbIMHhbsSjTXt-G7lOE,849
|
249
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=
|
249
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=aKX6k2bEVvfXa9dATYts-sUoWgf4MV3H_PiiUceejr4,596
|
250
250
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=VTpepKLCKrPnftGD-8Ibp75S0dwUrLlUytRfcXDDcKg,1597
|
251
251
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=s8mmdwb5eRcdNM_lZpj2UOhvc1ckRhUubjniQ-dDIK0,2504
|
252
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=
|
253
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=
|
254
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=
|
252
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=3jvDgLyOJe7U1UmJFgYOh6tlATM60PCCnIJDSFUW4tk,3595
|
253
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=KTyvMty9bozjnC0bSDoTtK1H4LTFfbX_MwqP72Ip5D0,2194
|
254
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=JR6wQnBEe6dxWPQCEvAjkakbDUnczvPuW5HdQN8nAS0,2582
|
255
255
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=pyeyDTg4rss8-67hIE3-SQlAvNfje6HazuaVnyFBpN8,2054
|
256
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=
|
256
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=CDJQvzdLLxE08XNWvII2r7YAy4fYbyr9FmY-9o4V2Qo,3208
|
257
257
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py,sha256=jaAOq7Kf7HYziJslWbjqzr41kX4dJ9CXDPtMXj8rWok,384
|
258
258
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
259
259
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py,sha256=jm65ZB0K8e6WpgcL2Y6pxcIuQjioIyMtBIOOFbbWfgk,1070
|
@@ -408,13 +408,13 @@ arpakitlib/ar_safe_func.py,sha256=ayX0K107yoqPDjpJ4fLvhMg-RX6qQ_w9z9py9i_3dLk,21
|
|
408
408
|
arpakitlib/ar_schedule_uust_api_client_util.py,sha256=rXI2_3OTaIBgR-GixM1Ti-Ue1f9nOcO3EUpYRqdGpYM,6973
|
409
409
|
arpakitlib/ar_settings_util.py,sha256=Y5wi_cmsjDjfJpM0VJHjbo0NoVPKfypKaD1USowwDtQ,1327
|
410
410
|
arpakitlib/ar_sleep_util.py,sha256=ggaj7ML6QK_ADsHMcyu6GUmUpQ_9B9n-SKYH17h-9lM,1045
|
411
|
-
arpakitlib/ar_sqladmin_util.py,sha256=
|
412
|
-
arpakitlib/ar_sqlalchemy_util.py,sha256=
|
411
|
+
arpakitlib/ar_sqladmin_util.py,sha256=zE2rn52IM7V7Tn2d3bG5336qWhJBayHhxnSTLE6GY7U,827
|
412
|
+
arpakitlib/ar_sqlalchemy_util.py,sha256=I7PHI8ynFVeiVbDTYkUReZIVb7_bskB1B6pwVIhF7Uc,12264
|
413
413
|
arpakitlib/ar_str_util.py,sha256=2lGpnXDf2h1cBZpVf5i1tX_HCv5iBd6IGnrCw4QWWlY,4350
|
414
414
|
arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
|
415
415
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
416
|
-
arpakitlib-1.8.
|
417
|
-
arpakitlib-1.8.
|
418
|
-
arpakitlib-1.8.
|
419
|
-
arpakitlib-1.8.
|
420
|
-
arpakitlib-1.8.
|
416
|
+
arpakitlib-1.8.186.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
417
|
+
arpakitlib-1.8.186.dist-info/METADATA,sha256=UIRbASMCSMtJ8DmKQAJIrxmY0B66EHTJ1rS8XDSmB6Q,3741
|
418
|
+
arpakitlib-1.8.186.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
419
|
+
arpakitlib-1.8.186.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
420
|
+
arpakitlib-1.8.186.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|