arpakitlib 1.8.101__py3-none-any.whl → 1.8.103__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/command/show_arpakitlib_project_template_info.py +1 -1
- arpakitlib/_arpakit_project_template_v_5/command/start_api.py +7 -0
- arpakitlib/_arpakit_project_template_v_5/command/start_api_for_prod.py +7 -0
- arpakitlib/_arpakit_project_template_v_5/command/start_api_with_reload.py +7 -0
- arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py +24 -0
- arpakitlib/_arpakit_project_template_v_5/command/{start_operation_executor_workers.py → start_operation_executor_workers_mode_thread.py} +1 -0
- arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_arpakitlib_project_template_info.py +1 -1
- arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py +1 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py +1 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py +10 -1
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py +53 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py +1 -0
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py +18 -2
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py +101 -0
- arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/arpakitlib_project_template_info.py +1 -1
- {arpakitlib-1.8.101.dist-info → arpakitlib-1.8.103.dist-info}/METADATA +1 -1
- {arpakitlib-1.8.101.dist-info → arpakitlib-1.8.103.dist-info}/RECORD +22 -19
- /arpakitlib/_arpakit_project_template_v_5/project/util/{arpakitlib_project_template.py → arpakitlib_project_template_util.py} +0 -0
- {arpakitlib-1.8.101.dist-info → arpakitlib-1.8.103.dist-info}/LICENSE +0 -0
- {arpakitlib-1.8.101.dist-info → arpakitlib-1.8.103.dist-info}/WHEEL +0 -0
- {arpakitlib-1.8.101.dist-info → arpakitlib-1.8.103.dist-info}/entry_points.txt +0 -0
@@ -1,11 +1,18 @@
|
|
1
1
|
import uvicorn
|
2
2
|
|
3
|
+
from arpakitlib.ar_base_worker_util import safe_run_worker_in_background, SafeRunInBackgroundModes
|
3
4
|
from project.core.settings import get_cached_settings
|
4
5
|
from project.core.util import setup_logging
|
6
|
+
from project.operation_execution.scheduled_operation_creator_worker import create_scheduled_operation_creator_worker
|
5
7
|
|
6
8
|
|
7
9
|
def __command():
|
8
10
|
setup_logging()
|
11
|
+
if get_cached_settings().api_start_scheduled_operation_creator_worker:
|
12
|
+
_ = safe_run_worker_in_background(
|
13
|
+
worker=create_scheduled_operation_creator_worker(),
|
14
|
+
mode=SafeRunInBackgroundModes.thread
|
15
|
+
)
|
9
16
|
uvicorn.run(
|
10
17
|
"project.api.asgi:app",
|
11
18
|
port=get_cached_settings().api_port,
|
@@ -1,11 +1,18 @@
|
|
1
1
|
import uvicorn
|
2
2
|
|
3
|
+
from arpakitlib.ar_base_worker_util import safe_run_worker_in_background, SafeRunInBackgroundModes
|
3
4
|
from project.core.settings import get_cached_settings
|
4
5
|
from project.core.util import setup_logging
|
6
|
+
from project.operation_execution.scheduled_operation_creator_worker import create_scheduled_operation_creator_worker
|
5
7
|
|
6
8
|
|
7
9
|
def __command():
|
8
10
|
setup_logging()
|
11
|
+
if get_cached_settings().api_start_scheduled_operation_creator_worker:
|
12
|
+
_ = safe_run_worker_in_background(
|
13
|
+
worker=create_scheduled_operation_creator_worker(),
|
14
|
+
mode=SafeRunInBackgroundModes.thread
|
15
|
+
)
|
9
16
|
uvicorn.run(
|
10
17
|
app="project.api.asgi:app",
|
11
18
|
host="127.0.0.1",
|
@@ -1,11 +1,18 @@
|
|
1
1
|
import uvicorn
|
2
2
|
|
3
|
+
from arpakitlib.ar_base_worker_util import SafeRunInBackgroundModes, safe_run_worker_in_background
|
3
4
|
from project.core.settings import get_cached_settings
|
4
5
|
from project.core.util import setup_logging
|
6
|
+
from project.operation_execution.scheduled_operation_creator_worker import create_scheduled_operation_creator_worker
|
5
7
|
|
6
8
|
|
7
9
|
def __command():
|
8
10
|
setup_logging()
|
11
|
+
if get_cached_settings().api_start_scheduled_operation_creator_worker:
|
12
|
+
_ = safe_run_worker_in_background(
|
13
|
+
worker=create_scheduled_operation_creator_worker(),
|
14
|
+
mode=SafeRunInBackgroundModes.thread
|
15
|
+
)
|
9
16
|
uvicorn.run(
|
10
17
|
"project.api.asgi:app",
|
11
18
|
port=get_cached_settings().api_port,
|
arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
import asyncio
|
2
|
+
|
3
|
+
from arpakitlib.ar_base_worker_util import safe_run_workers_in_background, SafeRunInBackgroundModes
|
4
|
+
from project.core.util import setup_logging
|
5
|
+
from project.operation_execution.operation_executor_worker import OperationExecutorWorker
|
6
|
+
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
7
|
+
|
8
|
+
|
9
|
+
async def __async_command():
|
10
|
+
setup_logging()
|
11
|
+
workers = []
|
12
|
+
for i in range(int(input("amount of workers: "))):
|
13
|
+
workers.append(OperationExecutorWorker(
|
14
|
+
sqlalchemy_db=get_cached_sqlalchemy_db(),
|
15
|
+
))
|
16
|
+
async_tasks = safe_run_workers_in_background(
|
17
|
+
workers=workers,
|
18
|
+
mode=SafeRunInBackgroundModes.async_task
|
19
|
+
)
|
20
|
+
await asyncio.gather(*async_tasks)
|
21
|
+
|
22
|
+
|
23
|
+
if __name__ == '__main__':
|
24
|
+
asyncio.run(__async_command())
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from arpakitlib.ar_base_worker_util import safe_run_workers_in_background, SafeRunInBackgroundModes
|
2
|
+
|
2
3
|
from project.core.util import setup_logging
|
3
4
|
from project.operation_execution.operation_executor_worker import OperationExecutorWorker
|
4
5
|
from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
|
@@ -6,7 +6,7 @@ from project.api.authorize import require_user_token_dbm_api_authorize_middlewar
|
|
6
6
|
api_authorize, require_api_key_dbm_api_authorize_middleware
|
7
7
|
from project.api.schema.out.common.error import ErrorCommonSO
|
8
8
|
from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
|
9
|
-
from project.util.
|
9
|
+
from project.util.arpakitlib_project_template_util import get_arpakitlib_project_template_info
|
10
10
|
|
11
11
|
api_router = APIRouter()
|
12
12
|
|
@@ -4,3 +4,4 @@ from project.sqladmin_.model_view.operation import OperationMV
|
|
4
4
|
from project.sqladmin_.model_view.story_log import StoryLogMV
|
5
5
|
from project.sqladmin_.model_view.user import UserMV
|
6
6
|
from project.sqladmin_.model_view.user_token import UserTokenMV
|
7
|
+
from project.sqladmin_.model_view.verification_code import VerificationCodeMV
|
@@ -9,7 +9,16 @@ class StoryLogMV(SimpleMV, model=StoryLogDBM):
|
|
9
9
|
name = "StoryLog"
|
10
10
|
name_plural = "StoryLogs"
|
11
11
|
icon = "fa-solid fa-history"
|
12
|
-
column_list =
|
12
|
+
column_list = [
|
13
|
+
StoryLogDBM.id,
|
14
|
+
StoryLogDBM.long_id,
|
15
|
+
StoryLogDBM.slug,
|
16
|
+
StoryLogDBM.creation_dt,
|
17
|
+
StoryLogDBM.level,
|
18
|
+
StoryLogDBM.type,
|
19
|
+
StoryLogDBM.title,
|
20
|
+
StoryLogDBM.extra_data
|
21
|
+
]
|
13
22
|
form_columns = [
|
14
23
|
StoryLogDBM.slug,
|
15
24
|
StoryLogDBM.level,
|
@@ -0,0 +1,53 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
import sqlalchemy
|
4
|
+
|
5
|
+
from project.sqladmin_.model_view import SimpleMV
|
6
|
+
from project.sqladmin_.util.etc import format_datetime_, format_json_for_preview_, format_json_
|
7
|
+
from project.sqlalchemy_db_.sqlalchemy_model import VerificationCodeDBM
|
8
|
+
|
9
|
+
|
10
|
+
class VerificationCodeMV(SimpleMV, model=VerificationCodeDBM):
|
11
|
+
name = "VerificationCode"
|
12
|
+
name_plural = "VerificationCodes"
|
13
|
+
icon = "fa-solid fa-envelope"
|
14
|
+
column_list = [
|
15
|
+
VerificationCodeDBM.id,
|
16
|
+
VerificationCodeDBM.long_id,
|
17
|
+
VerificationCodeDBM.slug,
|
18
|
+
VerificationCodeDBM.creation_dt,
|
19
|
+
VerificationCodeDBM.type,
|
20
|
+
VerificationCodeDBM.value,
|
21
|
+
VerificationCodeDBM.recipient,
|
22
|
+
VerificationCodeDBM.user,
|
23
|
+
VerificationCodeDBM.is_active,
|
24
|
+
VerificationCodeDBM.extra_data
|
25
|
+
]
|
26
|
+
form_columns = [
|
27
|
+
VerificationCodeDBM.slug,
|
28
|
+
VerificationCodeDBM.type,
|
29
|
+
VerificationCodeDBM.value,
|
30
|
+
VerificationCodeDBM.recipient,
|
31
|
+
VerificationCodeDBM.user,
|
32
|
+
VerificationCodeDBM.is_active,
|
33
|
+
VerificationCodeDBM.extra_data
|
34
|
+
]
|
35
|
+
column_sortable_list = sqlalchemy.inspect(VerificationCodeDBM).columns
|
36
|
+
column_default_sort = [
|
37
|
+
(VerificationCodeDBM.creation_dt, True)
|
38
|
+
]
|
39
|
+
column_searchable_list = [
|
40
|
+
VerificationCodeDBM.id,
|
41
|
+
VerificationCodeDBM.long_id,
|
42
|
+
VerificationCodeDBM.slug,
|
43
|
+
VerificationCodeDBM.value,
|
44
|
+
VerificationCodeDBM.recipient,
|
45
|
+
]
|
46
|
+
column_formatters = {
|
47
|
+
VerificationCodeDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt),
|
48
|
+
VerificationCodeDBM.extra_data: lambda m, _: format_json_for_preview_(m.extra_data)
|
49
|
+
}
|
50
|
+
column_formatters_detail = {
|
51
|
+
VerificationCodeDBM.creation_dt: lambda m, _: format_datetime_(m.creation_dt),
|
52
|
+
VerificationCodeDBM.extra_data: lambda m, a: format_json_(m.extra_data),
|
53
|
+
}
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py
CHANGED
@@ -6,6 +6,7 @@ from project.sqlalchemy_db_.sqlalchemy_model.operation import OperationDBM
|
|
6
6
|
from project.sqlalchemy_db_.sqlalchemy_model.story_log import StoryLogDBM
|
7
7
|
from project.sqlalchemy_db_.sqlalchemy_model.user import UserDBM
|
8
8
|
from project.sqlalchemy_db_.sqlalchemy_model.user_token import UserTokenDBM
|
9
|
+
from project.sqlalchemy_db_.sqlalchemy_model.verification_code import VerificationCodeDBM
|
9
10
|
|
10
11
|
if __name__ == '__main__':
|
11
12
|
print(get_string_info_from_declarative_base(SimpleDBM))
|
@@ -5,16 +5,18 @@ from typing import TYPE_CHECKING, Any
|
|
5
5
|
from uuid import uuid4
|
6
6
|
|
7
7
|
import sqlalchemy
|
8
|
+
from email_validator import validate_email
|
9
|
+
from sqlalchemy.orm import Mapped, mapped_column, relationship, validates
|
10
|
+
|
8
11
|
from arpakitlib.ar_datetime_util import now_utc_dt
|
9
12
|
from arpakitlib.ar_enumeration_util import Enumeration
|
10
13
|
from arpakitlib.ar_str_util import make_none_if_blank
|
11
14
|
from arpakitlib.ar_type_util import raise_for_type
|
12
|
-
from email_validator import validate_email
|
13
15
|
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
14
|
-
from sqlalchemy.orm import Mapped, mapped_column, relationship, validates
|
15
16
|
|
16
17
|
if TYPE_CHECKING:
|
17
18
|
from project.sqlalchemy_db_.sqlalchemy_model.user_token import UserTokenDBM
|
19
|
+
from project.sqlalchemy_db_.sqlalchemy_model.verification_code import VerificationCodeDBM
|
18
20
|
|
19
21
|
|
20
22
|
def generate_default_user_password() -> str:
|
@@ -55,6 +57,13 @@ class UserDBM(SimpleDBM):
|
|
55
57
|
insert_default=True,
|
56
58
|
server_default="true",
|
57
59
|
)
|
60
|
+
is_verified: Mapped[bool] = mapped_column(
|
61
|
+
sqlalchemy.Boolean,
|
62
|
+
nullable=False,
|
63
|
+
index=True,
|
64
|
+
insert_default=False,
|
65
|
+
server_default="false",
|
66
|
+
)
|
58
67
|
password: Mapped[str | None] = mapped_column(
|
59
68
|
sqlalchemy.TEXT,
|
60
69
|
nullable=True,
|
@@ -87,6 +96,13 @@ class UserDBM(SimpleDBM):
|
|
87
96
|
foreign_keys="UserTokenDBM.user_id",
|
88
97
|
cascade="all, delete-orphan"
|
89
98
|
)
|
99
|
+
verification_codes: Mapped[list[VerificationCodeDBM]] = relationship(
|
100
|
+
"VerificationCodeDBM",
|
101
|
+
uselist=True,
|
102
|
+
back_populates="user",
|
103
|
+
foreign_keys="VerificationCodeDBM.user_id",
|
104
|
+
cascade="all, delete-orphan"
|
105
|
+
)
|
90
106
|
|
91
107
|
def __repr__(self) -> str:
|
92
108
|
parts = [f"id={self.id}"]
|
@@ -0,0 +1,101 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from random import randint
|
4
|
+
from typing import TYPE_CHECKING
|
5
|
+
|
6
|
+
import sqlalchemy
|
7
|
+
from sqlalchemy.orm import Mapped, mapped_column, relationship, validates
|
8
|
+
|
9
|
+
from arpakitlib.ar_enumeration_util import Enumeration
|
10
|
+
from arpakitlib.ar_str_util import make_none_if_blank
|
11
|
+
from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
|
12
|
+
|
13
|
+
if TYPE_CHECKING:
|
14
|
+
from project.sqlalchemy_db_.sqlalchemy_model.user import UserDBM
|
15
|
+
|
16
|
+
|
17
|
+
def generate_default_verification_code_value() -> str:
|
18
|
+
alphabet: list = list("JZSDQWRLGFZX" + "123456789")
|
19
|
+
return "".join(alphabet[randint(0, len(alphabet) - 1)] for _ in range(7))
|
20
|
+
|
21
|
+
|
22
|
+
class VerificationCodeDBM(SimpleDBM):
|
23
|
+
__tablename__ = "verification_code"
|
24
|
+
|
25
|
+
class Types(Enumeration):
|
26
|
+
register_or_authenticate = "register_or_authenticate"
|
27
|
+
reset_email = "reset_email"
|
28
|
+
|
29
|
+
type: Mapped[str] = mapped_column(
|
30
|
+
sqlalchemy.TEXT,
|
31
|
+
nullable=False,
|
32
|
+
index=True,
|
33
|
+
)
|
34
|
+
value: Mapped[str] = mapped_column(
|
35
|
+
sqlalchemy.TEXT,
|
36
|
+
nullable=False,
|
37
|
+
index=True,
|
38
|
+
insert_default=generate_default_verification_code_value,
|
39
|
+
server_default=sqlalchemy.func.gen_random_uuid(),
|
40
|
+
)
|
41
|
+
recipient: Mapped[str | None] = mapped_column(
|
42
|
+
sqlalchemy.TEXT,
|
43
|
+
nullable=True,
|
44
|
+
index=True,
|
45
|
+
)
|
46
|
+
user_id: Mapped[int | None] = mapped_column(
|
47
|
+
sqlalchemy.BIGINT,
|
48
|
+
sqlalchemy.ForeignKey("user.id", ondelete="CASCADE"),
|
49
|
+
nullable=True,
|
50
|
+
index=True,
|
51
|
+
)
|
52
|
+
is_active: Mapped[bool] = mapped_column(
|
53
|
+
sqlalchemy.BOOLEAN,
|
54
|
+
nullable=False,
|
55
|
+
index=True,
|
56
|
+
insert_default=True,
|
57
|
+
server_default="true"
|
58
|
+
)
|
59
|
+
|
60
|
+
# one to many
|
61
|
+
user: Mapped[UserDBM | None] = relationship(
|
62
|
+
"UserDBM",
|
63
|
+
uselist=False,
|
64
|
+
back_populates="verification_codes",
|
65
|
+
foreign_keys=[user_id]
|
66
|
+
)
|
67
|
+
|
68
|
+
def __repr__(self) -> str:
|
69
|
+
parts = [
|
70
|
+
f"id={self.id}",
|
71
|
+
f"type={self.type}"
|
72
|
+
]
|
73
|
+
if self.recipient is not None:
|
74
|
+
parts.append(f"recipient={self.recipient}")
|
75
|
+
elif self.user_id is not None:
|
76
|
+
parts.append(f"user_id={self.user_id}")
|
77
|
+
return f"{self.entity_name} ({', '.join(parts)})"
|
78
|
+
|
79
|
+
@validates("type")
|
80
|
+
def _validate_type(self, key, value, *args, **kwargs):
|
81
|
+
if not isinstance(value, str):
|
82
|
+
raise ValueError(f"{key=}, {value=}, value is not str")
|
83
|
+
value = value.strip()
|
84
|
+
if not value:
|
85
|
+
raise ValueError(f"{key=}, {value=}, value is empty")
|
86
|
+
if value not in self.Types.values_list():
|
87
|
+
raise ValueError(f"{value} not in {self.Types.values_list()}")
|
88
|
+
return value
|
89
|
+
|
90
|
+
@validates("recipient")
|
91
|
+
def _validate_recipient(self, key, value, *args, **kwargs):
|
92
|
+
if value is None:
|
93
|
+
return None
|
94
|
+
if not isinstance(value, str):
|
95
|
+
raise ValueError(f"{key=}, {value=}, value is not str")
|
96
|
+
value = make_none_if_blank(value.strip())
|
97
|
+
return value
|
98
|
+
|
99
|
+
@property
|
100
|
+
def sdp_allowed_types(self) -> list[str]:
|
101
|
+
return self.Types.values_list()
|
@@ -7,7 +7,7 @@ from project.tg_bot.const import AdminTgBotCommands
|
|
7
7
|
from project.tg_bot.filter_.is_private_chat import IsPrivateChatTgBotFilter
|
8
8
|
from project.tg_bot.filter_.user_roles_has_admin import UserRolesHasAdminTgBotFilter
|
9
9
|
from project.tg_bot.middleware.common import MiddlewareDataTgBot
|
10
|
-
from project.util.
|
10
|
+
from project.util.arpakitlib_project_template_util import get_arpakitlib_project_template_info
|
11
11
|
|
12
12
|
tg_bot_router = aiogram.Router()
|
13
13
|
|
@@ -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=nA0stvcyYF7cr-ggkBiG3M0ZUSctM3U6PsIFUSFqX40,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
|
@@ -56,14 +56,15 @@ arpakitlib/_arpakit_project_template_v_5/command/remove_operations.py,sha256=l1B
|
|
56
56
|
arpakitlib/_arpakit_project_template_v_5/command/remove_story_logs.py,sha256=l-whsYahKY6ssk-c24ufiybF-U24iFqMdkNlnlASm2U,498
|
57
57
|
arpakitlib/_arpakit_project_template_v_5/command/rm_all_records_in_json_db.py,sha256=qF5c_Aso7XpNcBZOInz7MWXX9Wm8L73rcOZBKGXlFfg,326
|
58
58
|
arpakitlib/_arpakit_project_template_v_5/command/set_tg_bot_commands.py,sha256=6HbuL6acw-U8vkUdqLVIEffe_FcBsDWRKZ90AakZbv8,456
|
59
|
-
arpakitlib/_arpakit_project_template_v_5/command/show_arpakitlib_project_template_info.py,sha256=
|
59
|
+
arpakitlib/_arpakit_project_template_v_5/command/show_arpakitlib_project_template_info.py,sha256=AoemyIrxS49kp34jsuJHKTa4Cvyycl17woXwk8oy9nU,209
|
60
60
|
arpakitlib/_arpakit_project_template_v_5/command/show_settings.py,sha256=c07DRqJ08tPm2nFSLAxm_h1dNSQIbWT_hL65g869CWw,264
|
61
61
|
arpakitlib/_arpakit_project_template_v_5/command/show_sqlalchemy_db_table_name_to_amount.py,sha256=4KCP-ud5tDKLdTxJLZTDnPzbbNwY33XIUR_qRXjbkH8,410
|
62
|
-
arpakitlib/_arpakit_project_template_v_5/command/start_api.py,sha256=
|
63
|
-
arpakitlib/_arpakit_project_template_v_5/command/start_api_for_prod.py,sha256=
|
64
|
-
arpakitlib/_arpakit_project_template_v_5/command/start_api_with_reload.py,sha256=
|
62
|
+
arpakitlib/_arpakit_project_template_v_5/command/start_api.py,sha256=fl-dkm2I3ModQXjGG6VrP6vUFciEcRW_ORFG3VX8jH8,821
|
63
|
+
arpakitlib/_arpakit_project_template_v_5/command/start_api_for_prod.py,sha256=T0Gqv3-Vrtx6x_3vRaFTvsyWwpZgfDnqtnQcZN3eqU8,825
|
64
|
+
arpakitlib/_arpakit_project_template_v_5/command/start_api_with_reload.py,sha256=d6iIQY4_qjcYBoYmkWXbPVVW5HD5IUb4FOvf4YrzObM,820
|
65
65
|
arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_worker.py,sha256=X8dE5OcTEVKjbcXdU0QMstXbi8RyYWPzATHtbQHyBIs,413
|
66
|
-
arpakitlib/_arpakit_project_template_v_5/command/
|
66
|
+
arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_async_task.py,sha256=C5aoJmI9LB9d25g_ZTvRccwkWUglUdcCcPb-03HoA0s,793
|
67
|
+
arpakitlib/_arpakit_project_template_v_5/command/start_operation_executor_workers_mode_thread.py,sha256=QjInoDY7XGQZCs2A-Kh5Ul0P4CgcS9Tom6FfXcseeFs,718
|
67
68
|
arpakitlib/_arpakit_project_template_v_5/command/start_scheduled_operation_creator_worker.py,sha256=NuimX6etxQ9EU0VYOWw43AGiuOsZf8a4wilAd3ZzmRY,329
|
68
69
|
arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin.py,sha256=g3kNKPR4X-PKpiSe4oFLHbZ-EJIwmWUOK6a5FABat_Y,375
|
69
70
|
arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py,sha256=g3kNKPR4X-PKpiSe4oFLHbZ-EJIwmWUOK6a5FABat_Y,375
|
@@ -98,7 +99,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/__init__.py,sh
|
|
98
99
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/check_sqlalchemy_db.py,sha256=JGe2HvUSvXaIOaFG0ezNBhANCjvHJJFIG3aBtWF2dTY,1218
|
99
100
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/clear_log_file.py,sha256=35EiCIS8p-4k4pyZabAkAxNaSMFaDsK47knSaLVgpps,1353
|
100
101
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/create_operation.py,sha256=i-a_i8h2EfJdkmDye9mamummXOAuHVNiaEsnCVyAdxA,2357
|
101
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_arpakitlib_project_template_info.py,sha256=
|
102
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_arpakitlib_project_template_info.py,sha256=rkeybEoY2gpcw45Mgyof5pboKkclG78t460H11DPlNw,1264
|
102
103
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_auth_data.py,sha256=2Lh7EbVylDyI1RfUR0P4D0kPTkveLV2i2wEXo3EyIEY,1194
|
103
104
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_log_file.py,sha256=0RWxz0N_Ir3lrzHqOmh3EcrCAN8drIngkqq6mk5sq9U,1161
|
104
105
|
arpakitlib/_arpakit_project_template_v_5/project/api/router/admin/get_operation.py,sha256=y82PxkcBTzSTlM_VYboFN9kLJPhOFwZCAjvyZPhpuas,2290
|
@@ -145,7 +146,7 @@ arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/__init__.
|
|
145
146
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/common.py,sha256=vpE_bjT7fdaWe0LQxuVwEy7ZDSyVe4PrcX-gUTRWZbU,539
|
146
147
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/complicated_user_1.py,sha256=G7rdFpfIK13w2nQVuAASqvtPm9jHPzt59A_-dtJfle4,763
|
147
148
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/complicated_user_token_1.py,sha256=XhM0YMWK1fJCzTGgnSsEKFynx8Cs6JwygmmF4C1_Jts,714
|
148
|
-
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py,sha256=
|
149
|
+
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user.py,sha256=Cc4eL8oUgkgPLB3X_CGL7Z7foxtvcdhtkVkZ7Z34X1A,1050
|
149
150
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/client/user_token.py,sha256=Emhpawd_jGWu9xzyYyXk9h0YDSnHGDkyfP-hIgenzpA,508
|
150
151
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
151
152
|
arpakitlib/_arpakit_project_template_v_5/project/api/schema/out/common/datetime_.py,sha256=YFo29Qc7JMVq-OR398kPy4ypjh9kYAxPuZZUsobhDdc,942
|
@@ -229,25 +230,27 @@ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sh
|
|
229
230
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
|
230
231
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=x5F8--5KA4cmTrb6kAAmp6fVd2TiqxPOzxqUkSEhSG4,1298
|
231
232
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUYNlsX9Sj_QLMzYuTQbbYYbIMHhbsSjTXt-G7lOE,849
|
232
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=
|
233
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=dc_swzjkRDj85SWQ3cGGgsrp_cq5evUYQYUg0g7C5nw,435
|
233
234
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=SNk66VApMLgfOHB8grLDiYnm8KYZTmw7eoOdBmkZCfw,1193
|
234
235
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=US1tueTCPvAdse6TLT6yRLUHbvwGGagApYhFJzE_6Yc,576
|
235
236
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=lIwqYRd2n-wPAKtDlPpNqNHAcSxJDMbtfh8upShqN1I,2112
|
236
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=
|
237
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=8N9ahbCzNVczqgO_g0luRqP8luCv5bmCLoz66UYZ0mU,1427
|
237
238
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=7pjzmIe-Nit2Bk3GL4H7sLem46UcHN1sLc5ZrWd3xQQ,1679
|
238
239
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=q1kjGEkNvaMmbxnpMmR66qF1CdkIChC_SF3YVJnYsks,1529
|
240
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/verification_code.py,sha256=llFZ3KDtv0M-wAC77IGAiF9TM8fO83w1xlTWr_t-vHk,1900
|
239
241
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
240
242
|
arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/util/etc.py,sha256=jm65ZB0K8e6WpgcL2Y6pxcIuQjioIyMtBIOOFbbWfgk,1070
|
241
243
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
242
244
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
|
243
245
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=1y3FaMFzm_5UM2poqtBve_UP_mh1vjs--krq6yO8PsA,742
|
244
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=
|
246
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=zRK-ao92u6Q-NNTtsPycTVEjzRjK5BOXgsUZRtNblpM,688
|
245
247
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/api_key.py,sha256=4Y4zgKzty_7xqqJWg4DDiS0nbDXzQVtq2r6d0lunnTw,2025
|
246
248
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=_ddBled1XX6YR3LxoWmRlZjwMRHlBmQRBVg0vGcPe_8,3228
|
247
249
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=VkaUFYgnpGfQbJP_APuCRwzzQRr7yGgnEbbNlsizwgU,5912
|
248
250
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=hqkXH7oV-BT8pRDzrDYWYseVFg2J6ca-WYyiucPOiH4,2395
|
249
|
-
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=
|
251
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=xdayFM48y4OPAd5HVNgWHvdujiO62fEj3XDcquwTrBk,7533
|
250
252
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=y97em7M2WfDV8Wm7GMrIejalk9NkCsZDGK-sETkXscM,1943
|
253
|
+
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/verification_code.py,sha256=13aDT9m2l9zaJXqHZi0MsoY--5BNWhbw0O9uQJAW16E,3136
|
251
254
|
arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
252
255
|
arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
253
256
|
arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py,sha256=9F2bMfymaqx_Czh_tF945BKpKqNrVNjSIfCQl13Dkxw,911
|
@@ -296,7 +299,7 @@ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/init_user.py,
|
|
296
299
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/middleware/uil.py,sha256=66v3pHu8nhJ8pJayXaHNKjmPVK4fKUCNWilOM0yzNKg,319
|
297
300
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
298
301
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
299
|
-
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/arpakitlib_project_template_info.py,sha256=
|
302
|
+
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/arpakitlib_project_template_info.py,sha256=6eEjOxAXKys-eRlK5O9wkJOSM0ubrJ21feaMV-UdPWE,1074
|
300
303
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/clear_log_file.py,sha256=UTmkAes7u87n5v_6wAu3ukzijY2xC1pW1pS9tD0Wd_0,1345
|
301
304
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/current_state.py,sha256=20ZosYuI7sR_2H2C_EpM8SqTLdJdjc7O-6FhbSpQuh4,921
|
302
305
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/router/admin/drop_sqlalchemy_db.py,sha256=g8B_68y_VEJUBlMfsAOQ-IGy54e7RUwKmUMBl-jQsvM,1274
|
@@ -337,7 +340,7 @@ arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/etc.py,sha256=47DEQ
|
|
337
340
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/notify_admins.py,sha256=P-pqF5TPK3T_EgtGYk717W7tFVOc4xNuccFehYv-054,2095
|
338
341
|
arpakitlib/_arpakit_project_template_v_5/project/tg_bot/util/set_tg_bot_commands.py,sha256=gCcc-nWyu_MGKkhFSs9qk44el99hCzJiJBLksyN3nV8,3488
|
339
342
|
arpakitlib/_arpakit_project_template_v_5/project/util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
340
|
-
arpakitlib/_arpakit_project_template_v_5/project/util/
|
343
|
+
arpakitlib/_arpakit_project_template_v_5/project/util/arpakitlib_project_template_util.py,sha256=syA_IuszHVub0zm0sVdB4_7rPJXwXRW4JmQ4qHbjXPk,396
|
341
344
|
arpakitlib/_arpakit_project_template_v_5/project/util/etc.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
342
345
|
arpakitlib/ar_additional_model_util.py,sha256=GFg-glLCxH9X95R2bhTJsscVwv37FgE1qbaAAyXrnIE,917
|
343
346
|
arpakitlib/ar_aiogram_util.py,sha256=4bizX5Xg-E2-r2TXXGQGanJozsIWPVf5luO3vKUN8p8,8471
|
@@ -387,8 +390,8 @@ arpakitlib/ar_ssh_runner_util.py,sha256=yvAwza480MkHKvLkDEsR7JNh2bYNs6P9rCVo4NA8
|
|
387
390
|
arpakitlib/ar_str_util.py,sha256=CAv0wH8nP5Ja59S-hEdmNhNrM_Fwy935d0zntLpJkx8,4309
|
388
391
|
arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,4049
|
389
392
|
arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
|
390
|
-
arpakitlib-1.8.
|
391
|
-
arpakitlib-1.8.
|
392
|
-
arpakitlib-1.8.
|
393
|
-
arpakitlib-1.8.
|
394
|
-
arpakitlib-1.8.
|
393
|
+
arpakitlib-1.8.103.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
|
394
|
+
arpakitlib-1.8.103.dist-info/METADATA,sha256=bvrDWJ9PB8qs-MtnM1xmRjajmyRfTtJsd21aX1zAx-w,3471
|
395
|
+
arpakitlib-1.8.103.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
396
|
+
arpakitlib-1.8.103.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
|
397
|
+
arpakitlib-1.8.103.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|