arpakitlib 1.8.23__py3-none-any.whl → 1.8.24__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.
@@ -5,7 +5,7 @@ from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
5
5
 
6
6
  def __command():
7
7
  setup_logging()
8
- get_cached_settings().raise_if_mode_prod()
8
+ get_cached_settings().raise_if_prod_mode()
9
9
  get_cached_sqlalchemy_db().drop()
10
10
  get_cached_sqlalchemy_db().drop_celery_tables()
11
11
  get_cached_sqlalchemy_db().drop_alembic_tables()
@@ -16,7 +16,7 @@
16
16
  # api_start_operation_executor_worker=
17
17
  # api_start_scheduled_operation_creator_worker=
18
18
  # sqladmin_secret_key=
19
- # sqladmin_auth_keys=
19
+ # sqladmin_authorize_keys=
20
20
  # sqladmin_port=
21
21
  # tg_bot_token=
22
22
  # tg_bot_proxy_url=
@@ -6,7 +6,7 @@ from sqladmin.authentication import AuthenticationBackend
6
6
  from arpakitlib.ar_str_util import make_none_if_blank
7
7
  from project.core.settings import get_cached_settings
8
8
  from project.sqlalchemy_db_.sqlalchemy_db import get_cached_sqlalchemy_db
9
- from project.sqlalchemy_db_.sqlalchemy_model import UserTokenDBM
9
+ from project.sqlalchemy_db_.sqlalchemy_model import UserTokenDBM, UserDBM
10
10
 
11
11
  SQLADMIN_AUTH_KEY = "sqladmin_auth_key"
12
12
 
@@ -56,9 +56,9 @@ class SQLAdminAuth(AuthenticationBackend):
56
56
  elif password is not None:
57
57
  query = query.filter(UserTokenDBM.value == password)
58
58
  user_token = query.one_or_none()
59
- if user_token is not None:
60
- request.session.update({SQLADMIN_AUTH_KEY: user_token.value})
61
- return True
59
+ if user_token is not None and user_token.user.compare_roles(UserDBM.Roles.admin):
60
+ request.session.update({SQLADMIN_AUTH_KEY: user_token.value})
61
+ return True
62
62
 
63
63
  return False
64
64
 
@@ -78,9 +78,13 @@ class SQLAdminAuth(AuthenticationBackend):
78
78
 
79
79
  if get_cached_sqlalchemy_db() is not None and sqladmin_auth_key is not None:
80
80
  with get_cached_sqlalchemy_db().new_session() as session:
81
- query = session.query(UserTokenDBM).filter(UserTokenDBM.value == sqladmin_auth_key)
81
+ query = session.query(
82
+ UserTokenDBM
83
+ ).filter(
84
+ UserTokenDBM.value == sqladmin_auth_key
85
+ )
82
86
  user_token = query.one_or_none()
83
- if user_token is not None:
87
+ if user_token is not None and user_token.user.compare_roles(UserDBM.Roles.admin):
84
88
  return True
85
89
 
86
90
  return False
@@ -1,4 +1,4 @@
1
- from project.sqladmin_.model_view import SimpleMV
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
2
  from project.sqlalchemy_db_.sqlalchemy_model import ApiKeyDBM
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from project.sqladmin_.model_view import SimpleMV
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
2
  from project.sqlalchemy_db_.sqlalchemy_model import OperationDBM
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from project.sqladmin_.model_view import SimpleMV
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
2
  from project.sqlalchemy_db_.sqlalchemy_model import StoryLogDBM
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from project.sqladmin_.model_view import SimpleMV
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
2
  from project.sqlalchemy_db_.sqlalchemy_model import UserDBM
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- from project.sqladmin_.model_view import SimpleMV
1
+ from project.sqladmin_.model_view.common import SimpleMV
2
2
  from project.sqlalchemy_db_.sqlalchemy_model import UserTokenDBM
3
3
 
4
4
 
@@ -33,6 +33,7 @@ class ApiKeyDBM(SimpleDBM):
33
33
  sqlalchemy.TEXT,
34
34
  unique=True,
35
35
  insert_default=generate_default_api_key_value,
36
+ server_default=sqlalchemy.func.gen_random_uuid(),
36
37
  nullable=False
37
38
  )
38
39
  is_active: Mapped[bool] = mapped_column(
@@ -47,6 +47,7 @@ class SimpleDBM(BaseDBM):
47
47
  index=False,
48
48
  nullable=True,
49
49
  insert_default=None,
50
+ server_default="{}",
50
51
  sort_order=1000,
51
52
  )
52
53
 
@@ -1,16 +1,26 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  from typing import TYPE_CHECKING
4
+ from uuid import uuid4
4
5
 
5
6
  import sqlalchemy
6
7
  from sqlalchemy.orm import Mapped, mapped_column, relationship
7
8
 
9
+ from arpakitlib.ar_datetime_util import now_utc_dt
8
10
  from project.sqlalchemy_db_.sqlalchemy_model.common import SimpleDBM
9
11
 
10
12
  if TYPE_CHECKING:
11
13
  from project.sqlalchemy_db_.sqlalchemy_model.user import UserDBM
12
14
 
13
15
 
16
+ def generate_default_user_token_value() -> str:
17
+ return (
18
+ f"usertoken"
19
+ f"{str(uuid4()).replace('-', '')}"
20
+ f"{str(now_utc_dt().timestamp()).replace('.', '')}"
21
+ )
22
+
23
+
14
24
  class UserTokenDBM(SimpleDBM):
15
25
  __tablename__ = "user_token"
16
26
 
@@ -18,6 +28,8 @@ class UserTokenDBM(SimpleDBM):
18
28
  sqlalchemy.TEXT,
19
29
  unique=True,
20
30
  nullable=False,
31
+ insert_default=generate_default_user_token_value,
32
+ server_default=sqlalchemy.func.gen_random_uuid(),
21
33
  )
22
34
  user_id: Mapped[int] = mapped_column(
23
35
  sqlalchemy.INTEGER,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: arpakitlib
3
- Version: 1.8.23
3
+ Version: 1.8.24
4
4
  Summary: arpakitlib
5
5
  License: Apache-2.0
6
6
  Keywords: arpakitlib,arpakit,arpakit-company,arpakitcompany,arpakit_company
@@ -23,7 +23,7 @@ arpakitlib/_arpakit_project_template_v_5/command/docker_run_postgres.sh,sha256=0
23
23
  arpakitlib/_arpakit_project_template_v_5/command/docker_start_postgres.sh,sha256=72YG671c0bP20GRZCKdp9a6JZzn70CslWSS7d6K4n1s,61
24
24
  arpakitlib/_arpakit_project_template_v_5/command/docker_stop_postgres.sh,sha256=OgmaUMIH418N4iSKYyfzmUehIvDZd7n1VERv1GQHefY,60
25
25
  arpakitlib/_arpakit_project_template_v_5/command/drop_json_db.py,sha256=cojYWq44is6lqE6G2IfhO75InQDAGmg_k3f-CvL0GKQ,316
26
- arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py,sha256=DYTrJfckaWCcgaRb2M4ViBEgaAWlLDl5r1V41L2wfc4,446
26
+ arpakitlib/_arpakit_project_template_v_5/command/drop_sqlalchemy_db.py,sha256=oR4CQ74HpeWJtJH77nLaLiWbMCT8LzCm4Nmnu1jrZIc,446
27
27
  arpakitlib/_arpakit_project_template_v_5/command/generate_settings_env_example.py,sha256=v05NKSG-hFZyFiMfV6n8uObv-1qoS59UdztSsq4lF1c,437
28
28
  arpakitlib/_arpakit_project_template_v_5/command/git_commit.sh,sha256=AW1NEel-ZHaYeVWFlRbgZSYPQdnVKsTkpR_07RQL1Mw,42
29
29
  arpakitlib/_arpakit_project_template_v_5/command/git_push_arpakit_company_github_1.sh,sha256=Sx-OegryHeNTIfAOoCfj3Z3CF-XKEY0AJF5HVJAgGpU,70
@@ -67,7 +67,7 @@ arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_for_prod.py,sha2
67
67
  arpakitlib/_arpakit_project_template_v_5/command/start_sqladmin_with_reload.py,sha256=KmbadM6bmsQfP23xTn8aBzlvCQ1J2rLAuFk0_RCChjs,374
68
68
  arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot.py,sha256=AJ1AxfdpbayBhScy6yAPVkSWnHJjzOTHxEewwGKaJMQ,200
69
69
  arpakitlib/_arpakit_project_template_v_5/command/start_tg_bot_for_prod.py,sha256=AJ1AxfdpbayBhScy6yAPVkSWnHJjzOTHxEewwGKaJMQ,200
70
- arpakitlib/_arpakit_project_template_v_5/example.env,sha256=8fsl0G7qVRmjRGXbafXwuQOlxTX1pU0-He77KC6pGeE,1014
70
+ arpakitlib/_arpakit_project_template_v_5/example.env,sha256=CjtUXd8TjfjQH4u77j1fBKkGQH1td7sa59-MSMzXW7U,1019
71
71
  arpakitlib/_arpakit_project_template_v_5/note/note_1.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
72
72
  arpakitlib/_arpakit_project_template_v_5/note/note_2.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
73
  arpakitlib/_arpakit_project_template_v_5/note/note_3.txt,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -199,27 +199,27 @@ arpakitlib/_arpakit_project_template_v_5/project/site/router/__init__.py,sha256=
199
199
  arpakitlib/_arpakit_project_template_v_5/project/site/router/main_router.py,sha256=J5jNfgd-3OiWTtuubimEUz6wrOogupj9PkUdDmwz-2U,62
200
200
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
201
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/add_admin_in_app.py,sha256=JTXLf18DQVsZtoe6yFpZIVJI95rgJofnTe9YKyVwwhQ,851
202
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=otas9GzslibQlW4DpCguMnXy2UKMOvR9adULHCcF7E0,3485
202
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/admin_authorize.py,sha256=0yL6YIobNvc4SGOV_Hq_NuugoM_b6WD8Pb_0eqgnZHo,3692
203
203
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/asgi.py,sha256=DRlRPkcOGXOccfP73oKEXolZTsc5VWdQgEG-qoW03ms,99
204
204
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/create_sqladmin_app.py,sha256=x5F8--5KA4cmTrb6kAAmp6fVd2TiqxPOzxqUkSEhSG4,1298
205
205
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/event.py,sha256=LjAUYNlsX9Sj_QLMzYuTQbbYYbIMHhbsSjTXt-G7lOE,849
206
206
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/__init__.py,sha256=MtEk37LR9xg5XltEbIAw1hh74BsS70I2G3C21QSbjVQ,357
207
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=t4IBg1k1pgTpAEGPMZ3TYDWfsZZcK2fCZz5C9aQ-YSA,805
207
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/api_key.py,sha256=5MGJDKvqtKhvR-a-8QFLNCdGa6G1gyA1sydjZgksQM8,812
208
208
  arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/common.py,sha256=WSlZ2wOyrUVX-6nO0NRCZJ9dgPrY2ytANrhkooYq_w8,560
209
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=UILyxYDPi1jbjoBEV6ipSBUvswWd0gCbfBD8pAhpZHE,1225
210
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=vHTewzi0zo6Eg06Jci9wyswSHqyxRbyiHsbYDtNXeeM,911
211
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=lT0zEjIcnm_Y3N-f4TM5145H_65XFOtNyWUQKjEUjuA,956
212
- arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=0oSZLYneZSDSl3dnqaojHc1ldZSJCc7dPw4_i1N8Uvk,908
209
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/operation.py,sha256=6qzWrt2xQ_2PL8SQYp4AZ-9qSgfbckd05HZcEg7dR4M,1232
210
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/story_log.py,sha256=WCxPZANZhW6TTBqu2H11ajaLdSe8uYoTO3NJFE2_57c,918
211
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user.py,sha256=Vkeh8uG-uXKSAXCIZtFIJHsseq7cqGvba4kJUHPwMRY,963
212
+ arpakitlib/_arpakit_project_template_v_5/project/sqladmin_/model_view/user_token.py,sha256=QtY7fkrMWZT0XayuX0mMJH7lBy15HGxULpWF8NRIj_s,915
213
213
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
214
214
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/const.py,sha256=dcvj5C9E2F2KCsGZPBBncQf_EvVJAC1qQgnyD8P4ZEw,6
215
215
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_db.py,sha256=1y3FaMFzm_5UM2poqtBve_UP_mh1vjs--krq6yO8PsA,742
216
216
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/__init__.py,sha256=btSjCQ7RJqomeXzYs9HePCu1dZHs0z6-RuboYKG89_8,598
217
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/api_key.py,sha256=a-xSHsnE8EkiH9g1ZoxaQQ7Y7q0urIm3SynlGYiSE8E,1038
218
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=yK0fFdRYZUpjWl8Vq9S9DKMLBkj9ZT9TXhGyPuR6asU,1876
217
+ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/api_key.py,sha256=RVkfa6kuhdv1D_3Qindh4bucapqz5MZa5gNkiYuwC14,1096
218
+ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/common.py,sha256=St2jp3kvVbz4iE9ZEiJNGUGsVSzW1LaVokpBo0X2VB0,1905
219
219
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/operation.py,sha256=xm_0X5DNoLtw_2HkDVd386cleOFBeA-Ll7Cr2hw-fgk,3288
220
220
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/story_log.py,sha256=uB7nKEqvUKJyE_xybJUjXIJtVXh0IKyoPDnDUogq8lE,1306
221
221
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user.py,sha256=GaOJkxsQ6B3B4pO43_MOOrJSUE8d7VzXyYLQcoEvCCw,2355
222
- arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=k3_p7S_oNDfzDIQ1daLYL9TgGn-nZRug_Puwsn73RTs,1015
222
+ arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/sqlalchemy_model/user_token.py,sha256=AtFEPQZlYl_fr0WgYkS8ToiHluNomXV02HDuD0nVjZw,1398
223
223
  arpakitlib/_arpakit_project_template_v_5/project/sqlalchemy_db_/util.py,sha256=QSA_nT6aWdtE412-Uj3VTd7yh3dzS4HugDK9FivjTPo,570
224
224
  arpakitlib/_arpakit_project_template_v_5/project/test_data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
225
225
  arpakitlib/_arpakit_project_template_v_5/project/test_data/make_test_api_keys.py,sha256=RXIEB5zOFHtQ_B0t_JlQ0ihjFbkVtW7six6CLdxft3w,901
@@ -353,8 +353,8 @@ arpakitlib/ar_type_util.py,sha256=Cs_tef-Fc5xeyAF54KgISCsP11NHyzIsglm4S3Xx7iM,40
353
353
  arpakitlib/ar_wata_api_client.py,sha256=gdHOqDbuqxhTjVDtRW1DvkRJLdDofCrOq51GTctzLns,242
354
354
  arpakitlib/ar_yookassa_api_client_util.py,sha256=VozuZeCJjmLd1zj2BdC9WfiAQ3XYOrIMsdpNK-AUlm0,5347
355
355
  arpakitlib/ar_zabbix_api_client_util.py,sha256=Q-VR4MvoZ9aHwZeYZr9G3LwN-ANx1T5KFmF6pvPM-9M,6402
356
- arpakitlib-1.8.23.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
357
- arpakitlib-1.8.23.dist-info/METADATA,sha256=_GjT6D8Z0BfsOBLxwfXwQMEPNivlHJgUrbaKs7zBXdk,3432
358
- arpakitlib-1.8.23.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
359
- arpakitlib-1.8.23.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
360
- arpakitlib-1.8.23.dist-info/RECORD,,
356
+ arpakitlib-1.8.24.dist-info/LICENSE,sha256=GPEDQMam2r7FSTYqM1mm7aKnxLaWcBotH7UvQtea-ec,11355
357
+ arpakitlib-1.8.24.dist-info/METADATA,sha256=k6ISnzO5R-y9MaHuUZZP-lnF3u32k2T61wQzXlVzIfA,3432
358
+ arpakitlib-1.8.24.dist-info/WHEEL,sha256=XbeZDeTWKc1w7CSIyre5aMDU_-PohRwTQceYnisIYYY,88
359
+ arpakitlib-1.8.24.dist-info/entry_points.txt,sha256=36xqR3PJFT2kuwjkM_EqoIy0qFUDPKSm_mJaI7emewE,87
360
+ arpakitlib-1.8.24.dist-info/RECORD,,