arpakitlib 1.8.113__py3-none-any.whl → 1.8.115__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.
Files changed (22) hide show
  1. arpakitlib/_arpakit_project_template_v_5/project/api/event.py +1 -1
  2. arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/user.py +1 -0
  3. arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py +1 -0
  4. arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user.py +1 -0
  5. arpakitlib/_arpakit_project_template_v_5/project/core/settings.py +2 -0
  6. arpakitlib/_arpakit_project_template_v_5/project/emailer/__init__.py +0 -0
  7. arpakitlib/_arpakit_project_template_v_5/project/emailer/send_simple_email.py +41 -0
  8. arpakitlib/_arpakit_project_template_v_5/project/resource/templates/simple_email.html +47 -0
  9. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py +1 -0
  10. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py +15 -0
  11. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py +10 -0
  12. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py +19 -0
  13. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py +10 -0
  14. arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py +12 -0
  15. arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +4 -0
  16. arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py +2 -1
  17. {arpakitlib-1.8.113.dist-info → arpakitlib-1.8.115.dist-info}/METADATA +1 -1
  18. {arpakitlib-1.8.113.dist-info → arpakitlib-1.8.115.dist-info}/RECORD +22 -19
  19. /arpakitlib/_arpakit_project_template_v_5/project/{util → emailer}/send_email.py +0 -0
  20. {arpakitlib-1.8.113.dist-info → arpakitlib-1.8.115.dist-info}/LICENSE +0 -0
  21. {arpakitlib-1.8.113.dist-info → arpakitlib-1.8.115.dist-info}/WHEEL +0 -0
  22. {arpakitlib-1.8.113.dist-info → arpakitlib-1.8.115.dist-info}/entry_points.txt +0 -0
@@ -42,7 +42,7 @@ async def async_startup_api_event():
42
42
  ):
43
43
  get_cached_json_db().init()
44
44
 
45
- if get_cached_sqlalchemy_db() is not None:
45
+ if get_cached_sqlalchemy_db() is not None and get_cached_settings().api_create_first_data:
46
46
  create_first_data_for_api()
47
47
 
48
48
  if get_cached_settings().api_start_operation_executor_worker:
@@ -8,6 +8,7 @@ from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
8
8
 
9
9
 
10
10
  class User1AdminSO(SimpleDBMAdminSO):
11
+ fullname: str | None
11
12
  email: str | None
12
13
  username: str | None
13
14
  roles: list[str]
@@ -8,6 +8,7 @@ from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
8
8
 
9
9
 
10
10
  class User1ClientSO(SimpleDBMClientSO):
11
+ fullname: str | None
11
12
  email: str | None
12
13
  username: str | None
13
14
  roles: list[str]
@@ -8,6 +8,7 @@ from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
8
8
 
9
9
 
10
10
  class User1GeneralSO(SimpleDBMGeneralSO):
11
+ fullname: str | None
11
12
  email: str | None
12
13
  username: str | None
13
14
  roles: list[str]
@@ -104,6 +104,8 @@ class Settings(SimpleSettings):
104
104
 
105
105
  api_start_scheduled_operation_creator_worker: bool = False
106
106
 
107
+ api_create_first_data: bool = True
108
+
107
109
  sqladmin_secret_key: str | None = "85a9583cb91c4de7a78d7eb1e5306a04418c9c43014c447ea8ec8dd5deb4cf71"
108
110
 
109
111
  sqladmin_authorize_keys: list[str] | None = ["1"]
@@ -0,0 +1,41 @@
1
+ import asyncio
2
+
3
+ from project.core.jinja2_templates import get_cached_jinja2_templates
4
+ from project.core.util import setup_logging
5
+ from project.emailer.send_email import async_send_email
6
+
7
+
8
+ async def async_send_simple_email(
9
+ *,
10
+ to_email: str,
11
+ project_name: str,
12
+ title: str,
13
+ text: str
14
+ ):
15
+ render_data = {
16
+ "title": title,
17
+ "project_name": project_name,
18
+ "text": text
19
+ }
20
+
21
+ html_content = get_cached_jinja2_templates().get_template("simple_email.html").render(render_data)
22
+
23
+ await async_send_email(
24
+ to_email=to_email,
25
+ subject=title,
26
+ html_content=html_content
27
+ )
28
+
29
+
30
+ async def __async_example():
31
+ setup_logging()
32
+ await async_send_simple_email(
33
+ to_email="arpakit@gmail.com",
34
+ title="Notification",
35
+ project_name="Test",
36
+ text="asfasf"
37
+ )
38
+
39
+
40
+ if __name__ == '__main__':
41
+ asyncio.run(__async_example())
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>{{ title }}</title>
6
+ <style>
7
+ body {
8
+ font-family: Arial, sans-serif;
9
+ background-color: #f4f4f4;
10
+ margin: 0;
11
+ padding: 0;
12
+ }
13
+ .container {
14
+ background-color: #ffffff;
15
+ width: 90%;
16
+ max-width: 600px;
17
+ margin: 30px auto;
18
+ padding: 20px;
19
+ border-radius: 8px;
20
+ box-shadow: 0 2px 5px rgba(0,0,0,0.1);
21
+ }
22
+ .header {
23
+ border-bottom: 1px solid #dddddd;
24
+ padding-bottom: 10px;
25
+ margin-bottom: 20px;
26
+ }
27
+ .footer {
28
+ margin-top: 30px;
29
+ font-size: 12px;
30
+ color: #777777;
31
+ text-align: center;
32
+ }
33
+ </style>
34
+ </head>
35
+ <body>
36
+ <div class="container">
37
+ <div class="header">
38
+ <h2>{{ project_name }}</h2>
39
+ </div>
40
+ <h3>{{ title }}</h3>
41
+ <p>{{ text }}</p>
42
+ <div class="footer">
43
+ &copy; {{ project_name }} — Все права защищены.
44
+ </div>
45
+ </div>
46
+ </body>
47
+ </html>
@@ -2,6 +2,7 @@ import logging
2
2
  from typing import Callable
3
3
 
4
4
  from project.business_service.create_first_data import create_first_admin_with_api_key
5
+
5
6
  from project.core.settings import get_cached_settings
6
7
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
7
8
 
@@ -25,6 +25,21 @@ class OperationMV(SimpleMV, model=OperationDBM):
25
25
  OperationDBM.error_data,
26
26
  OperationDBM.extra_data
27
27
  ]
28
+ column_details_list = [
29
+ OperationDBM.id,
30
+ OperationDBM.long_id,
31
+ OperationDBM.slug,
32
+ OperationDBM.creation_dt,
33
+ OperationDBM.status,
34
+ OperationDBM.type,
35
+ OperationDBM.title,
36
+ OperationDBM.execution_start_dt,
37
+ OperationDBM.execution_finish_dt,
38
+ OperationDBM.input_data,
39
+ OperationDBM.output_data,
40
+ OperationDBM.error_data,
41
+ OperationDBM.extra_data
42
+ ]
28
43
  form_columns = [
29
44
  OperationDBM.slug,
30
45
  OperationDBM.status,
@@ -19,6 +19,16 @@ class StoryLogMV(SimpleMV, model=StoryLogDBM):
19
19
  StoryLogDBM.title,
20
20
  StoryLogDBM.extra_data
21
21
  ]
22
+ column_details_list = [
23
+ StoryLogDBM.id,
24
+ StoryLogDBM.long_id,
25
+ StoryLogDBM.slug,
26
+ StoryLogDBM.creation_dt,
27
+ StoryLogDBM.level,
28
+ StoryLogDBM.type,
29
+ StoryLogDBM.title,
30
+ StoryLogDBM.extra_data
31
+ ]
22
32
  form_columns = [
23
33
  StoryLogDBM.slug,
24
34
  StoryLogDBM.level,
@@ -15,6 +15,23 @@ class UserMV(SimpleMV, model=UserDBM):
15
15
  UserDBM.long_id,
16
16
  UserDBM.slug,
17
17
  UserDBM.creation_dt,
18
+ UserDBM.fullname,
19
+ UserDBM.email,
20
+ UserDBM.username,
21
+ UserDBM.roles,
22
+ UserDBM.is_active,
23
+ UserDBM.password,
24
+ UserDBM.tg_id,
25
+ UserDBM.tg_data,
26
+ UserDBM.tg_bot_last_action_dt,
27
+ UserDBM.extra_data
28
+ ]
29
+ column_details_list = [
30
+ UserDBM.id,
31
+ UserDBM.long_id,
32
+ UserDBM.slug,
33
+ UserDBM.creation_dt,
34
+ UserDBM.fullname,
18
35
  UserDBM.email,
19
36
  UserDBM.username,
20
37
  UserDBM.roles,
@@ -27,6 +44,7 @@ class UserMV(SimpleMV, model=UserDBM):
27
44
  ]
28
45
  form_columns = [
29
46
  UserDBM.slug,
47
+ UserDBM.fullname,
30
48
  UserDBM.email,
31
49
  UserDBM.username,
32
50
  UserDBM.roles,
@@ -53,6 +71,7 @@ class UserMV(SimpleMV, model=UserDBM):
53
71
  column_searchable_list = [
54
72
  UserDBM.id,
55
73
  UserDBM.long_id,
74
+ UserDBM.fullname,
56
75
  UserDBM.email,
57
76
  UserDBM.username,
58
77
  UserDBM.tg_id
@@ -19,6 +19,16 @@ class UserTokenMV(SimpleMV, model=UserTokenDBM):
19
19
  UserTokenDBM.is_active,
20
20
  UserTokenDBM.extra_data,
21
21
  ]
22
+ column_details_list = [
23
+ UserTokenDBM.id,
24
+ UserTokenDBM.long_id,
25
+ UserTokenDBM.slug,
26
+ UserTokenDBM.creation_dt,
27
+ UserTokenDBM.value,
28
+ UserTokenDBM.user,
29
+ UserTokenDBM.is_active,
30
+ UserTokenDBM.extra_data,
31
+ ]
22
32
  form_columns = [
23
33
  UserTokenDBM.slug,
24
34
  UserTokenDBM.creation_dt,
@@ -24,6 +24,18 @@ class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
24
24
  VerificationCodeDBM.is_active,
25
25
  VerificationCodeDBM.extra_data
26
26
  ]
27
+ column_details_list = [
28
+ VerificationCodeDBM.id,
29
+ VerificationCodeDBM.long_id,
30
+ VerificationCodeDBM.slug,
31
+ VerificationCodeDBM.creation_dt,
32
+ VerificationCodeDBM.type,
33
+ VerificationCodeDBM.value,
34
+ VerificationCodeDBM.recipient,
35
+ VerificationCodeDBM.user,
36
+ VerificationCodeDBM.is_active,
37
+ VerificationCodeDBM.extra_data
38
+ ]
27
39
  form_columns = [
28
40
  VerificationCodeDBM.slug,
29
41
  VerificationCodeDBM.type,
@@ -34,6 +34,10 @@ class UserDBM(SimpleDBM):
34
34
  admin = "admin"
35
35
  client = "client"
36
36
 
37
+ fullname: Mapped[str | None] = mapped_column(
38
+ sqlalchemy.TEXT,
39
+ nullable=True,
40
+ )
37
41
  email: Mapped[str | None] = mapped_column(
38
42
  sqlalchemy.TEXT,
39
43
  nullable=True,
@@ -19,13 +19,14 @@ def make_test_data_1():
19
19
 
20
20
  with get_cached_sqlalchemy_db().new_session() as session:
21
21
 
22
- for i in range(1000):
22
+ for i in range(100):
23
23
  api_key = ApiKeyDBM(value=str(i + 1))
24
24
  session.add(api_key)
25
25
  _logger.info(api_key)
26
26
  session.commit()
27
27
 
28
28
  arpakit_user = UserDBM(
29
+ fullname="Арсен",
29
30
  email="arpakit@gmail.com",
30
31
  username="arpakit",
31
32
  roles=[UserDBM.Roles.client, UserDBM.Roles.admin],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.113
3
+ Version: 1.8.115
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -90,7 +90,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/blank/common.py,sha256=ug1F
90
90
  arpakitlib/_arpakit_project_template_v_5/project/api/const.py,sha256=J9bqaRRiIc3RLn6SJTvdfDvFrSsM_Ixii9t2M8dA5Jc,433
91
91
  arpakitlib/_arpakit_project_template_v_5/project/api/create_api_app.py,sha256=fRYjpKEB5pMpFtWEhUe84mVvaFBKQ2WU5BTwCpb0J2Y,2861
92
92
  arpakitlib/_arpakit_project_template_v_5/project/api/create_first_data.py,sha256=sc98-xW74QbhFCT6AW5-fUJVd8RLRxClAOEW5-ec9T0,1815
93
- arpakitlib/_arpakit_project_template_v_5/project/api/event.py,sha256=2DqXb8-iiSMoyh5OJI7nf53N5Bij5HfnFVrbLlI8G3w,2566
93
+ arpakitlib/_arpakit_project_template_v_5/project/api/event.py,sha256=sJ9-GgBdIruJW2Kj7cU-BcqRyD8IItWFQrmGKndZ4nw,2614
94
94
  arpakitlib/_arpakit_project_template_v_5/project/api/exception.py,sha256=cNZaI2DacGLl8Hyn1qIfFpVjvQzOQjwXWsVW4auBrCo,1280
95
95
  arpakitlib/_arpakit_project_template_v_5/project/api/exception_handler.py,sha256=TEzkCNOg_TAELRTZgLtblVagSaHf-vego_oH5FNCbcs,11179
96
96
  arpakitlib/_arpakit_project_template_v_5/project/api/openapi_ui.py,sha256=PLhH-W6zDViO-75AGCs8Vq3IoyHChdqwBYAqLvdQN0U,904
@@ -142,12 +142,12 @@ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/__init__.p
142
142
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/common.py,sha256=0vZOPql7ijaSr0yq5USSHNRSHnpUmCgYdh0vw4n8qak,591
143
143
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/operation.py,sha256=Gg0TSj9RmsaHBaWNzjJPLYnTN1wZ7Od0z8OaqMFa6hc,833
144
144
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/story_log.py,sha256=lOQWCpXrdVbLFRZFbY5aW9afM4vn5-KV3DwKb6_48N4,565
145
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/user.py,sha256=VO35k6fqWJTh5Z5OGzdKIxILlLLBSZf_QSC7HERwKCY,1070
145
+ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/admin/user.py,sha256=j4Ezq2Ia4ZonWRagaRY-FvZneuW04D3kQT-w4GOLpWo,1095
146
146
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
147
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/common.py,sha256=vpE_bjT7fdaWe0LQxuVwEy7ZDSyVe4PrcX-gUTRWZbU,539
148
148
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/complicated_user_1.py,sha256=G7rdFpfIK13w2nQVuAASqvtPm9jHPzt59A_-dtJfle4,763
149
149
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/complicated_user_token_1.py,sha256=XhM0YMWK1fJCzTGgnSsEKFynx8Cs6JwygmmF4C1_Jts,714
150
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py,sha256=Cc4eL8oUgkgPLB3X_CGL7Z7foxtvcdhtkVkZ7Z34X1A,1050
150
+ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py,sha256=JEwIqTJIko_v2NTV5zbTgzgXj8qld8tHwxJDfLj2iq4,1075
151
151
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user_token.py,sha256=Emhpawd_jGWu9xzyYyXk9h0YDSnHGDkyfP-hIgenzpA,508
152
152
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
153
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/datetime_.py,sha256=YFo29Qc7JMVq-OR398kPy4ypjh9kYAxPuZZUsobhDdc,942
@@ -157,7 +157,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/raw_data.
157
157
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
158
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/api_key.py,sha256=S0b1t79VRJZMA1hNdJJe_bH-QN5qNY8uJIHVVDnQ6Is,506
159
159
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/common.py,sha256=y-p4QJhvKnFL1I6ud3m_nzE0xtreT3CNApPkkkLAbG0,541
160
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user.py,sha256=pHNtMOXZCSSpobetiKRKveEX6fPoywI5y7uQf9_WrBk,1055
160
+ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user.py,sha256=AvYwqaowd1V_6VQjrIGxt8SwqNEgmirLcHbtSHPwWmQ,1080
161
161
  arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/general/user_token.py,sha256=iiuZXu_zo3FJX0W5qyyMGasUx-_d32yjqc_2KY3xpUA,513
162
162
  arpakitlib/_arpakit_project_template_v_5/project/api/start_api.py,sha256=fl-dkm2I3ModQXjGG6VrP6vUFciEcRW_ORFG3VX8jH8,821
163
163
  arpakitlib/_arpakit_project_template_v_5/project/api/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -172,8 +172,11 @@ arpakitlib/_arpakit_project_template_v_5/project/core/dump_file_storage_in_dir.p
172
172
  arpakitlib/_arpakit_project_template_v_5/project/core/easy_openai_api_client.py,sha256=G4J9s0gerNlnvl1LvaWSYy1gdvaMbxyz0ZP35U9nx_Q,1219
173
173
  arpakitlib/_arpakit_project_template_v_5/project/core/jinja2_templates.py,sha256=jCNLaBauGC7YNvZdTLNHuPp7hmRGt94O23Skg6ewo7o,352
174
174
  arpakitlib/_arpakit_project_template_v_5/project/core/media_file_storage_in_dir.py,sha256=fMofTsfJtA8pp5lEUhucEUu3PBsmj-elaRZzExDsdLI,623
175
- arpakitlib/_arpakit_project_template_v_5/project/core/settings.py,sha256=BO6AgjZcK2pwClQFjabtuBObY0bvQ6NWbrrqvT2Kc_c,6270
175
+ arpakitlib/_arpakit_project_template_v_5/project/core/settings.py,sha256=mUZQMBz76xh2KXSjzTn6yCkA8PUSnqSeVSSk9fs7lys,6310
176
176
  arpakitlib/_arpakit_project_template_v_5/project/core/util.py,sha256=1ha9UrguVPsTSjoMHhVZVCD0_mNBfhIDGEvcG1nA4Zw,667
177
+ arpakitlib/_arpakit_project_template_v_5/project/emailer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
+ arpakitlib/_arpakit_project_template_v_5/project/emailer/send_email.py,sha256=lw-nUFtEYiGEChSZrfuXCtTkoY6fNT45M_Y6QfzOk90,2175
179
+ arpakitlib/_arpakit_project_template_v_5/project/emailer/send_simple_email.py,sha256=yv4fAtUuneK6nmIVn2vAoXqjBVFSoEliBcGssTeHoVs,932
177
180
  arpakitlib/_arpakit_project_template_v_5/project/json_db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
181
  arpakitlib/_arpakit_project_template_v_5/project/json_db/json_db.py,sha256=tBML-z4Y7uY8f_0ggcxvlDNt15Sf93Jr_OUeHwWxqOA,724
179
182
  arpakitlib/_arpakit_project_template_v_5/project/more/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -210,6 +213,7 @@ arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swag
210
213
  arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.js,sha256=yHKu9z0C2kOO5j9n9D8oQzuBLeEoMGrFcMWQN27V554,339285
211
214
  arpakitlib/_arpakit_project_template_v_5/project/resource/static/swagger-ui/swagger-ui.js.map,sha256=jeX-b8zAm2jsTGGCznrc49McbLKSfXspwECPhEAp0Xc,1159444
212
215
  arpakitlib/_arpakit_project_template_v_5/project/resource/templates/healthcheck.txt,sha256=sxSHRe2D3mnWbLKY320QdFehtXS-zAgMQmmu7tAQIG0,11
216
+ arpakitlib/_arpakit_project_template_v_5/project/resource/templates/simple_email.html,sha256=NNfrRzQFrymBSjWZdO-nkNSKk68hyPP9XgvQXpNQI4I,1112
213
217
  arpakitlib/_arpakit_project_template_v_5/project/sandbox/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
218
  arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_1.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
215
219
  arpakitlib/_arpakit_project_template_v_5/project/sandbox/sandbox_2.py,sha256=xKSp7tIBu3Ffp_kgJkwVtdam3BcoFZ44JPVHoRRaP0E,163
@@ -231,15 +235,15 @@ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py,s
231
235
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=tmvYx5hFO2RqHmhKktpMRJaBuT6vDHBOsQujihO7sMw,4983
232
236
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
233
237
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=x5F8--5KA4cmTrb6kAAmp6fVd2TiqxPOzxqUkSEhSG4,1298
234
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=JhaCB_dW4YDQ5B8TlqI06qp_KVSiHuQefdLmhqoIdEI,936
238
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=n8Bt78wyIqplxhbmSrwHf0rolV46QvXLOJ6UjAUNCZE,937
235
239
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=dc_swzjkRDj85SWQ3cGGgsrp_cq5evUYQYUg0g7C5nw,435
236
240
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=VTpepKLCKrPnftGD-8Ibp75S0dwUrLlUytRfcXDDcKg,1597
237
241
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=StdbfHZ92qAP-l2lnvAeyYCaZuMHKskHq1E19zJh6MA,2471
238
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=4BFJEp_yIpZltfEjsBC__J_BfgIBYzOc6LeoWFxP1MI,2785
239
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=INs2g2uy7CFlyVWUUXJOlEqawxNdWDdo00zy4Ly_RSM,1401
240
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=npO1CSSycbgzgL7fWRuxIoB1zJySVqISP0ZKwjSm6y8,1953
241
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=Q826LQIiK9J5JKKaAyB0xituMUxuMyyvFF-c1ekyAPM,1784
242
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=AU0f9VzBxeBkVTSp2tpqracLYW5gsJIx69PrIYTn5H8,2485
242
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=KUC-EZYFlLca92b6PwI0l5leOT8DzjlWm6y-a0PCvQc,3234
243
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=BFieWjN5cWgft0Vocrdn_9d3YiDvCBxOjQJ3otPJSEQ,1658
244
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=Ca92t9vj-Eu6x6NGi0rv8AnxNCx0fhDzuTDqVJpGdW0,2426
245
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=pyeyDTg4rss8-67hIE3-SQlAvNfje6HazuaVnyFBpN8,2054
246
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=8dfmXKVsmLNf6Id6Ql52uVaZuQtqNCq5nJgBOv3N66A,2883
243
247
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/start_sqladmin.py,sha256=g3kNKPR4X-PKpiSe4oFLHbZ-EJIwmWUOK6a5FABat_Y,375
244
248
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
245
249
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py,sha256=jm65ZB0K8e6WpgcL2Y6pxcIuQjioIyMtBIOOFbbWfgk,1070
@@ -251,13 +255,13 @@ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model
251
255
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=9j3QwBkaQSmsqXZbAYZDysGXP3xPPAHJfqIja5UnLcc,3229
252
256
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=op5cSkTlHJyGjULgcSWE9-_PNinKSneHLxhG5DUkd9M,5913
253
257
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=wig_D6OZyYYGsqZEbmSK56qoAIOnOVnOEB_sRSZLSIU,2396
254
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=xdayFM48y4OPAd5HVNgWHvdujiO62fEj3XDcquwTrBk,7533
258
+ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=bAyeFV9EU5J1R6POQieDSPpna9q_AMr-9oHq2SVHnSQ,7637
255
259
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=UtSbQRlNJOnD7q-d_aZfMjQnPFnchGPf1fWGwsgCm5k,1944
256
260
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py,sha256=13aDT9m2l9zaJXqHZi0MsoY--5BNWhbw0O9uQJAW16E,3136
257
261
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
262
  arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
259
263
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py,sha256=9F2bMfymaqx_Czh_tF945BKpKqNrVNjSIfCQl13Dkxw,911
260
- arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py,sha256=B6due_6egjIT_tC5Glg2kIR0tBUNdlRW2Oyy6j-ga2Q,2212
264
+ arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_1.py,sha256=F7vCmfWjItw5QzYR7_OAPSHdJt9louuvqXvcfOkU0AU,2246
261
265
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_2.py,sha256=VcCvxRLA0XnLaQcsaoZkIVV8rTO3uMyLTYoEsdxKtYE,416
262
266
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_3.py,sha256=9QJTgM4qsJXPgFhfVueQ9vObXr_dAldzP_p8dPO42uA,416
263
267
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_data_4.py,sha256=OyU9601WACF7cCpPT33x6CpizNJeQIPDDFezIvEO01A,416
@@ -348,7 +352,6 @@ arpakitlib/_arpakit_project_template_v_5/project/tg_bot_notifier/tg_bot_notifier
348
352
  arpakitlib/_arpakit_project_template_v_5/project/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
349
353
  arpakitlib/_arpakit_project_template_v_5/project/util/arpakitlib_project_template_util.py,sha256=syA_IuszHVub0zm0sVdB4_7rPJXwXRW4JmQ4qHbjXPk,396
350
354
  arpakitlib/_arpakit_project_template_v_5/project/util/etc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
351
- arpakitlib/_arpakit_project_template_v_5/project/util/send_email.py,sha256=lw-nUFtEYiGEChSZrfuXCtTkoY6fNT45M_Y6QfzOk90,2175
352
355
  arpakitlib/_arpakit_project_template_v_5/todo.txt,sha256=q132Jbx229ThY77S3YiN-Cj5AVm7k1VlJcMYIbZUHUY,3
353
356
  arpakitlib/ar_additional_model_util.py,sha256=GFg-glLCxH9X95R2bhTJsscVwv37FgE1qbaAAyXrnIE,917
354
357
  arpakitlib/ar_aiogram_util.py,sha256=4bizX5Xg-E2-r2TXXGQGanJozsIWPVf5luO3vKUN8p8,8471
@@ -398,8 +401,8 @@ arpakitlib/ar_ssh_runner_util.py,sha256=yvAwza480MkHKvLkDEsR7JNh2bYNs6P9rCVo4NA8
398
401
  arpakitlib/ar_str_util.py,sha256=CAv0wH8nP5Ja59S-hEdmNhNrM_Fwy935d0zntLpJkx8,4309
399
402
  arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
400
403
  arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
401
- arpakitlib-1.8.113.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
402
- arpakitlib-1.8.113.dist-info/METADATA,sha256=UTCEQ0WcA44R7yM8uU_8vpU71CPbyK2VPE_--gwEYEY,3566
403
- arpakitlib-1.8.113.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
404
- arpakitlib-1.8.113.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
405
- arpakitlib-1.8.113.dist-info/RECORD,,
404
+ arpakitlib-1.8.115.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
405
+ arpakitlib-1.8.115.dist-info/METADATA,sha256=nEC6Ttco9zy_oyVEcaEgbijoA3Y26w3mHOSlgoAS_Ko,3566
406
+ arpakitlib-1.8.115.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
407
+ arpakitlib-1.8.115.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
408
+ arpakitlib-1.8.115.dist-info/RECORD,,