arpakitlib 1.8.205__py3-none-any.whl → 1.8.207__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_/model_view/operation.py +3 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py +44 -0
- {arpakitlib-1.8.205.dist-info → arpakitlib-1.8.207.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.205.dist-info → arpakitlib-1.8.207.dist-info}/RECORD +7 -7
- {arpakitlib-1.8.205.dist-info → arpakitlib-1.8.207.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.205.dist-info → arpakitlib-1.8.207.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.205.dist-info → arpakitlib-1.8.207.dist-info}/entry_points.txt +0 -0
@@ -17,6 +17,7 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
17
17
|
OperationDBM.creation_dt,
|
18
18
|
OperationDBM.status,
|
19
19
|
OperationDBM.type,
|
20
|
+
OperationDBM.marker,
|
20
21
|
OperationDBM.title,
|
21
22
|
OperationDBM.execution_start_dt,
|
22
23
|
OperationDBM.execution_finish_dt,
|
@@ -35,6 +36,7 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
35
36
|
OperationDBM.creation_dt,
|
36
37
|
OperationDBM.status,
|
37
38
|
OperationDBM.type,
|
39
|
+
OperationDBM.marker,
|
38
40
|
OperationDBM.title,
|
39
41
|
OperationDBM.execution_start_dt,
|
40
42
|
OperationDBM.execution_finish_dt,
|
@@ -50,6 +52,7 @@ class OperationMV(SimpleMV, model=OperationDBM):
|
|
50
52
|
OperationDBM.slug,
|
51
53
|
OperationDBM.status,
|
52
54
|
OperationDBM.type,
|
55
|
+
OperationDBM.marker,
|
53
56
|
OperationDBM.title,
|
54
57
|
OperationDBM.execution_start_dt,
|
55
58
|
OperationDBM.execution_finish_dt,
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py
CHANGED
@@ -23,11 +23,15 @@ class OperationDBM(SimpleDBM):
|
|
23
23
|
executing = "executing"
|
24
24
|
executed_without_error = "executed_without_error"
|
25
25
|
executed_with_error = "executed_with_error"
|
26
|
+
cancelled = "cancelled"
|
26
27
|
|
27
28
|
class Types(Enumeration):
|
28
29
|
healthcheck_ = "healthcheck"
|
29
30
|
raise_fake_error_ = "raise_fake_error"
|
30
31
|
|
32
|
+
class Markers(Enumeration):
|
33
|
+
nothing = "nothing"
|
34
|
+
|
31
35
|
status: Mapped[str] = mapped_column(
|
32
36
|
sqlalchemy.TEXT,
|
33
37
|
nullable=False,
|
@@ -41,6 +45,11 @@ class OperationDBM(SimpleDBM):
|
|
41
45
|
index=True,
|
42
46
|
insert_default=Types.healthcheck_
|
43
47
|
)
|
48
|
+
marker: Mapped[str | None] = mapped_column(
|
49
|
+
sqlalchemy.TEXT,
|
50
|
+
nullable=True,
|
51
|
+
index=True,
|
52
|
+
)
|
44
53
|
title: Mapped[str | None] = mapped_column(
|
45
54
|
sqlalchemy.TEXT,
|
46
55
|
nullable=True,
|
@@ -86,6 +95,8 @@ class OperationDBM(SimpleDBM):
|
|
86
95
|
parts.append(f"type={self.type}")
|
87
96
|
return f"{self.entity_name} ({', '.join(parts)})"
|
88
97
|
|
98
|
+
# ---validators---
|
99
|
+
|
89
100
|
@validates("status")
|
90
101
|
def _validate_status(self, key, value, *args, **kwargs):
|
91
102
|
if not isinstance(value, str):
|
@@ -105,6 +116,15 @@ class OperationDBM(SimpleDBM):
|
|
105
116
|
raise ValueError(f"{key=}, {value=}, value is empty")
|
106
117
|
return value
|
107
118
|
|
119
|
+
@validates("marker")
|
120
|
+
def _validate_marker(self, key, value, *args, **kwargs):
|
121
|
+
if value is None:
|
122
|
+
return None
|
123
|
+
if not isinstance(value, str):
|
124
|
+
raise ValueError(f"{key=}, {value=}, value is not str")
|
125
|
+
value = make_none_if_blank(value.strip())
|
126
|
+
return value
|
127
|
+
|
108
128
|
@validates("title")
|
109
129
|
def _validate_title(self, key, value, *args, **kwargs):
|
110
130
|
if value is None:
|
@@ -138,6 +158,8 @@ class OperationDBM(SimpleDBM):
|
|
138
158
|
raise ValueError(f"{key=}, {value=}, value is not dict")
|
139
159
|
return value
|
140
160
|
|
161
|
+
# ---more---
|
162
|
+
|
141
163
|
def raise_if_executed_with_error(self):
|
142
164
|
if self.status == self.Statuses.executed_with_error:
|
143
165
|
raise Exception(
|
@@ -158,6 +180,12 @@ class OperationDBM(SimpleDBM):
|
|
158
180
|
return None
|
159
181
|
return self.execution_finish_dt - self.execution_start_dt
|
160
182
|
|
183
|
+
@property
|
184
|
+
def duration_as_str(self) -> str | None:
|
185
|
+
if self.duration is None:
|
186
|
+
return None
|
187
|
+
return str(self.duration)
|
188
|
+
|
161
189
|
@property
|
162
190
|
def duration_total_seconds(self) -> float | None:
|
163
191
|
if self.duration is None:
|
@@ -166,6 +194,22 @@ class OperationDBM(SimpleDBM):
|
|
166
194
|
|
167
195
|
# ---SDP---
|
168
196
|
|
197
|
+
@property
|
198
|
+
def sdp_duration(self) -> timedelta | None:
|
199
|
+
"""
|
200
|
+
При использовании у данной модели .simple_dict данное свойство будет представлено как поле.
|
201
|
+
То есть префикс sdp_ и даёт этот бонус.
|
202
|
+
"""
|
203
|
+
return self.duration
|
204
|
+
|
205
|
+
@property
|
206
|
+
def sdp_duration_as_str(self) -> str | None:
|
207
|
+
"""
|
208
|
+
При использовании у данной модели .simple_dict данное свойство будет представлено как поле.
|
209
|
+
То есть префикс sdp_ и даёт этот бонус.
|
210
|
+
"""
|
211
|
+
return self.duration_as_str
|
212
|
+
|
169
213
|
@property
|
170
214
|
def sdp_duration_total_seconds(self) -> float | None:
|
171
215
|
"""
|
@@ -251,7 +251,7 @@ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUY
|
|
251
251
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=aKX6k2bEVvfXa9dATYts-sUoWgf4MV3H_PiiUceejr4,596
|
252
252
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=VTpepKLCKrPnftGD-8Ibp75S0dwUrLlUytRfcXDDcKg,1597
|
253
253
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=U4KbXPAoyvgUB2BoPYUOPKLpHQLOdvZp-JdeVnC1MPY,5573
|
254
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=
|
254
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=IqW9eh0u3-WFkE1oA3yjEboUW2F2zF4cKsp4_FNy2RE,3746
|
255
255
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=KTyvMty9bozjnC0bSDoTtK1H4LTFfbX_MwqP72Ip5D0,2194
|
256
256
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=AhK-2YocK1dM2wMxX_xF0qnsMiI5Pu0Arj5yfDe8Noo,2669
|
257
257
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=pyeyDTg4rss8-67hIE3-SQlAvNfje6HazuaVnyFBpN8,2054
|
@@ -265,7 +265,7 @@ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_db.py
|
|
265
265
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=7PQqeYThEBXRrXwJZjuH7yAFu25DVr_IneuMwEF3kUE,731
|
266
266
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/api_key.py,sha256=2X6VPkf1TKq-0319J0tL-rPMvgmkBCjim3Si1dZboMQ,1969
|
267
267
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=OuHmYkFUPnSQ5QV8UiAjBax5GLNGGGh1zOYSjKp3nqw,4598
|
268
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256
|
268
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=-7uzlux8B7wtqhSd4b_06M40yTDySPIngm3Cwun2lSA,7378
|
269
269
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=CiNec-x5_z0Pr5Mt-RZXJ1tKJMRn_TAKIaOioG4NK7U,2489
|
270
270
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=22TE8y2Vm9byLLkIE6RVAMa29d9ILCVg1e1QYi4ONIQ,7898
|
271
271
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=dCCiRZcOiUpqd-DZZ-A6tVM0PzJwa030KFOzPXNyM7A,1929
|
@@ -416,8 +416,8 @@ arpakitlib/ar_str_util.py,sha256=2lGpnXDf2h1cBZpVf5i1tX_HCv5iBd6IGnrCw4QWWlY,435
|
|
416
416
|
arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
|
417
417
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
418
418
|
arpakitlib/clone_pydantic_model_fields.py,sha256=Gn9_AIjKknN1eIYK_xH_cMyff3hjOpfwRqs583-rnJs,1167
|
419
|
-
arpakitlib-1.8.
|
420
|
-
arpakitlib-1.8.
|
421
|
-
arpakitlib-1.8.
|
422
|
-
arpakitlib-1.8.
|
423
|
-
arpakitlib-1.8.
|
419
|
+
arpakitlib-1.8.207.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
420
|
+
arpakitlib-1.8.207.dist-info/METADATA,sha256=Uph40HCZ1aLi9BpYjuxlQgQLr5XU6dXQ4b_ZlhKDtLk,3741
|
421
|
+
arpakitlib-1.8.207.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
422
|
+
arpakitlib-1.8.207.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
423
|
+
arpakitlib-1.8.207.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|