arpakitlib 1.8.173__py3-none-any.whl → 1.8.175__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/verification_code.py +5 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +9 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py +16 -1
- {arpakitlib-1.8.173.dist-info → arpakitlib-1.8.175.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.173.dist-info → arpakitlib-1.8.175.dist-info}/RECORD +9 -9
- {arpakitlib-1.8.173.dist-info → arpakitlib-1.8.175.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.173.dist-info → arpakitlib-1.8.175.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.173.dist-info → arpakitlib-1.8.175.dist-info}/entry_points.txt +0 -0
@@ -22,6 +22,7 @@ class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
|
|
22
22
|
VerificationCodeDBM.recipient,
|
23
23
|
VerificationCodeDBM.user,
|
24
24
|
VerificationCodeDBM.is_active,
|
25
|
+
VerificationCodeDBM.detail_data,
|
25
26
|
VerificationCodeDBM.extra_data
|
26
27
|
]
|
27
28
|
column_details_list = [
|
@@ -34,6 +35,7 @@ class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
|
|
34
35
|
VerificationCodeDBM.recipient,
|
35
36
|
VerificationCodeDBM.user,
|
36
37
|
VerificationCodeDBM.is_active,
|
38
|
+
VerificationCodeDBM.detail_data,
|
37
39
|
VerificationCodeDBM.extra_data
|
38
40
|
]
|
39
41
|
form_columns = [
|
@@ -43,6 +45,7 @@ class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
|
|
43
45
|
VerificationCodeDBM.recipient,
|
44
46
|
VerificationCodeDBM.user,
|
45
47
|
VerificationCodeDBM.is_active,
|
48
|
+
VerificationCodeDBM.detail_data,
|
46
49
|
VerificationCodeDBM.extra_data
|
47
50
|
]
|
48
51
|
form_overrides = {
|
@@ -66,10 +69,12 @@ class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
|
|
66
69
|
]
|
67
70
|
column_formatters = {
|
68
71
|
VerificationCodeDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt),
|
72
|
+
VerificationCodeDBM.detail_data: lambda m, _: format_json_for_preview_(m.detail_data),
|
69
73
|
VerificationCodeDBM.extra_data: lambda m, _: format_json_for_preview_(m.extra_data)
|
70
74
|
}
|
71
75
|
column_formatters_detail = {
|
72
76
|
VerificationCodeDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt),
|
77
|
+
VerificationCodeDBM.detail_data: lambda m, _: format_json_for_preview_(m.detail_data),
|
73
78
|
VerificationCodeDBM.extra_data: lambda m, a: format_json_(m.extra_data),
|
74
79
|
}
|
75
80
|
form_ajax_refs = {
|
@@ -115,6 +115,15 @@ class UserDBM(SimpleDBM):
|
|
115
115
|
parts.append(f"username={self.username}")
|
116
116
|
return f"{self.entity_name} ({', '.join(parts)})"
|
117
117
|
|
118
|
+
@validates("fullname")
|
119
|
+
def _validate_fullname(self, key, value, *args, **kwargs):
|
120
|
+
if value is None:
|
121
|
+
return None
|
122
|
+
if not isinstance(value, str):
|
123
|
+
raise ValueError(f"{key=}, {value=}, value is not str")
|
124
|
+
value = make_none_if_blank(value.strip())
|
125
|
+
return value
|
126
|
+
|
118
127
|
@validates("email")
|
119
128
|
def _validate_email(self, key, value, *args, **kwargs):
|
120
129
|
if value is None:
|
@@ -1,7 +1,7 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from random import randint
|
4
|
-
from typing import TYPE_CHECKING
|
4
|
+
from typing import TYPE_CHECKING, Any
|
5
5
|
|
6
6
|
import sqlalchemy
|
7
7
|
from sqlalchemy.orm import Mapped, mapped_column, relationship, validates
|
@@ -55,6 +55,13 @@ class VerificationCodeDBM(SimpleDBM):
|
|
55
55
|
insert_default=True,
|
56
56
|
server_default="true"
|
57
57
|
)
|
58
|
+
detail_data: Mapped[dict[str, Any]] = mapped_column(
|
59
|
+
sqlalchemy.JSON,
|
60
|
+
nullable=False,
|
61
|
+
index=False,
|
62
|
+
insert_default={},
|
63
|
+
server_default="{}",
|
64
|
+
)
|
58
65
|
|
59
66
|
# one to many
|
60
67
|
user: Mapped[UserDBM | None] = relationship(
|
@@ -95,6 +102,14 @@ class VerificationCodeDBM(SimpleDBM):
|
|
95
102
|
value = make_none_if_blank(value.strip())
|
96
103
|
return value
|
97
104
|
|
105
|
+
@validates("detail_data")
|
106
|
+
def _validate_detail_data(self, key, value, *args, **kwargs):
|
107
|
+
if value is None:
|
108
|
+
value = {}
|
109
|
+
if not isinstance(value, dict):
|
110
|
+
raise ValueError(f"{key=}, {value=}, value is not dict")
|
111
|
+
return value
|
112
|
+
|
98
113
|
@property
|
99
114
|
def sdp_allowed_types(self) -> list[str]:
|
100
115
|
return self.Types.values_list()
|
@@ -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=KQiU8fIzG2SHazH_nhqCF8G1ZmtSYmexcc-JdJF4V8k,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
|
@@ -252,7 +252,7 @@ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.
|
|
252
252
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=EePtnFQsDKvhHcPYQU4ahgo24jC6uBZkuzu2alrTviE,2180
|
253
253
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=AbD0QPbAkwOE3i9aDirVBrIntQBCrU1xwX2IZlMS8Rk,2576
|
254
254
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=pyeyDTg4rss8-67hIE3-SQlAvNfje6HazuaVnyFBpN8,2054
|
255
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=
|
255
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=NVnF4SHJEGOFuZjLAzsT-fQr5VREYK4xcz5t1zG6JtM,3196
|
256
256
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py,sha256=jaAOq7Kf7HYziJslWbjqzr41kX4dJ9CXDPtMXj8rWok,384
|
257
257
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
258
258
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py,sha256=jm65ZB0K8e6WpgcL2Y6pxcIuQjioIyMtBIOOFbbWfgk,1070
|
@@ -264,9 +264,9 @@ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model
|
|
264
264
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=9j3QwBkaQSmsqXZbAYZDysGXP3xPPAHJfqIja5UnLcc,3229
|
265
265
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=op5cSkTlHJyGjULgcSWE9-_PNinKSneHLxhG5DUkd9M,5913
|
266
266
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=hMYVJq837ZeIO3J2neOAzuzxeZ7hdR5PY93-YdgHftU,2472
|
267
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256
|
267
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=22TE8y2Vm9byLLkIE6RVAMa29d9ILCVg1e1QYi4ONIQ,7898
|
268
268
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=dCCiRZcOiUpqd-DZZ-A6tVM0PzJwa030KFOzPXNyM7A,1929
|
269
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py,sha256=
|
269
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py,sha256=3fNkUwWEdt6l3Snwr_ktMqzTeo2hm04hPlznCLr2izg,3548
|
270
270
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
271
271
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util/execute_func_with_story_log.py,sha256=HrDlG8Y1gbMNVIuDHvCndXbnp8vxc8T8l-_XBVn7zR8,6091
|
272
272
|
arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -411,8 +411,8 @@ arpakitlib/ar_sqlalchemy_util.py,sha256=w_tGPTWIMVjHkTEYo9tVe1sfK_4vvfd3zGATLiYC
|
|
411
411
|
arpakitlib/ar_str_util.py,sha256=2lGpnXDf2h1cBZpVf5i1tX_HCv5iBd6IGnrCw4QWWlY,4350
|
412
412
|
arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
|
413
413
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
414
|
-
arpakitlib-1.8.
|
415
|
-
arpakitlib-1.8.
|
416
|
-
arpakitlib-1.8.
|
417
|
-
arpakitlib-1.8.
|
418
|
-
arpakitlib-1.8.
|
414
|
+
arpakitlib-1.8.175.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
415
|
+
arpakitlib-1.8.175.dist-info/METADATA,sha256=eUV4XHSXNQ3sM5UR-rkT6G7sIhgw2xah0O2I9bBPw-s,3706
|
416
|
+
arpakitlib-1.8.175.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
417
|
+
arpakitlib-1.8.175.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
418
|
+
arpakitlib-1.8.175.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|