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.
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "arpakitlib_project_template_version": "5",
3
- "arpakitlib_project_template_subversion": "44"
3
+ "arpakitlib_project_template_subversion": "45"
4
4
  }
@@ -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": [(status, status) for status in OperationDBM.Statuses.values_list()],
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": [(level, level) for level in StoryLogDBM.Levels.values_list()],
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": [(level, level) for level in StoryLogDBM.Types.values_list()],
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": [(role, role) for role in UserDBM.Roles.values_list()],
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": [(status, status) for status in VerificationCodeDBM.Types.values_list()],
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
@@ -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
- res = f"Model Views: {len(class_.__subclasses__())}"
10
+ lines = [f"ModelViews: {len(class_.__subclasses__())}"]
8
11
  for i, cls in enumerate(class_.__subclasses__()):
9
- res += f"\n{i + 1}. {cls.__name__}"
10
- return res
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)
@@ -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"Table: {cls.__tablename__}")
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})")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.184
3
+ Version: 1.8.186
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=Px9gc6sM6iyerd9pn9P-mnUjPPgnH8pdSvKwLJc8EP4,98
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=dc_swzjkRDj85SWQ3cGGgsrp_cq5evUYQYUg0g7C5nw,435
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=KUC-EZYFlLca92b6PwI0l5leOT8DzjlWm6y-a0PCvQc,3234
253
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=EePtnFQsDKvhHcPYQU4ahgo24jC6uBZkuzu2alrTviE,2180
254
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=AbD0QPbAkwOE3i9aDirVBrIntQBCrU1xwX2IZlMS8Rk,2576
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=NVnF4SHJEGOFuZjLAzsT-fQr5VREYK4xcz5t1zG6JtM,3196
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=Jd33EX_fAso4bvrcDhNEYOUlUHkudbadNGOJDg7rqhQ,301
412
- arpakitlib/ar_sqlalchemy_util.py,sha256=EazddvNUZrotsbJMMYQ8RTG8tAc5hrN-CRfKnxkQK_I,12196
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.184.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
417
- arpakitlib-1.8.184.dist-info/METADATA,sha256=P5207REs47HxsyZEl-GNA3sQrAQQGRi5YIGmYMdpN9E,3741
418
- arpakitlib-1.8.184.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
419
- arpakitlib-1.8.184.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
420
- arpakitlib-1.8.184.dist-info/RECORD,,
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,,