dmart 1.4.7__py3-none-any.whl → 1.4.10__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.
- alembic.ini +117 -0
- {dmart-1.4.7.dist-info → dmart-1.4.10.dist-info}/METADATA +1 -1
- {dmart-1.4.7.dist-info → dmart-1.4.10.dist-info}/RECORD +53 -51
- {dmart-1.4.7.dist-info → dmart-1.4.10.dist-info}/top_level.txt +1 -1
- dmart.py +79 -13
- info.json +1 -0
- {dmart-1.4.7.dist-info → dmart-1.4.10.dist-info}/WHEEL +0 -0
- {dmart-1.4.7.dist-info → dmart-1.4.10.dist-info}/entry_points.txt +0 -0
- {alembic → dmart_migrations}/README +0 -0
- {alembic → dmart_migrations}/__init__.py +0 -0
- {alembic → dmart_migrations}/__pycache__/__init__.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/__pycache__/env.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/env.py +0 -0
- {alembic → dmart_migrations}/notes.txt +0 -0
- {alembic → dmart_migrations}/script.py.mako +0 -0
- {alembic → dmart_migrations}/scripts/__init__.py +0 -0
- {alembic → dmart_migrations}/scripts/calculate_checksums.py +0 -0
- {alembic → dmart_migrations}/scripts/migration_f7a4949eed19.py +0 -0
- {alembic → dmart_migrations}/versions/0f3d2b1a7c21_add_authz_materialized_views.py +0 -0
- {alembic → dmart_migrations}/versions/10d2041b94d4_last_checksum_history.py +0 -0
- {alembic → dmart_migrations}/versions/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.py +0 -0
- {alembic → dmart_migrations}/versions/26bfe19b49d4_rm_failedloginattempts.py +0 -0
- {alembic → dmart_migrations}/versions/3c8bca2219cc_add_otp_table.py +0 -0
- {alembic → dmart_migrations}/versions/6675fd9dfe42_remove_unique_from_sessions_table.py +0 -0
- {alembic → dmart_migrations}/versions/71bc1df82e6a_adding_user_last_login_at.py +0 -0
- {alembic → dmart_migrations}/versions/74288ccbd3b5_initial.py +0 -0
- {alembic → dmart_migrations}/versions/7520a89a8467_rm_activesession_table.py +0 -0
- {alembic → dmart_migrations}/versions/848b623755a4_make_created_nd_updated_at_required.py +0 -0
- {alembic → dmart_migrations}/versions/8640dcbebf85_add_notes_to_users.py +0 -0
- {alembic → dmart_migrations}/versions/91c94250232a_adding_fk_on_owner_shortname.py +0 -0
- {alembic → dmart_migrations}/versions/98ecd6f56f9a_ext_meta_with_owner_group_shortname.py +0 -0
- {alembic → dmart_migrations}/versions/9aae9138c4ef_indexing_created_at_updated_at.py +0 -0
- {alembic → dmart_migrations}/versions/__init__.py +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/0f3d2b1a7c21_add_authz_materialized_views.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/10d2041b94d4_last_checksum_history.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/26bfe19b49d4_rm_failedloginattempts.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/3c8bca2219cc_add_otp_table.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/6675fd9dfe42_remove_unique_from_sessions_table.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/71bc1df82e6a_adding_user_last_login_at.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/74288ccbd3b5_initial.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/7520a89a8467_rm_activesession_table.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/848b623755a4_make_created_nd_updated_at_required.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/8640dcbebf85_add_notes_to_users.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/91c94250232a_adding_fk_on_owner_shortname.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/98ecd6f56f9a_ext_meta_with_owner_group_shortname.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/9aae9138c4ef_indexing_created_at_updated_at.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/b53f916b3f6d_json_to_jsonb.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/eb5f1ec65156_adding_user_locked_to_device.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/__pycache__/f7a4949eed19_adding_query_policies_to_meta.cpython-314.pyc +0 -0
- {alembic → dmart_migrations}/versions/b53f916b3f6d_json_to_jsonb.py +0 -0
- {alembic → dmart_migrations}/versions/eb5f1ec65156_adding_user_locked_to_device.py +0 -0
- {alembic → dmart_migrations}/versions/f7a4949eed19_adding_query_policies_to_meta.py +0 -0
alembic.ini
ADDED
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
# A generic, single database configuration.
|
|
2
|
+
|
|
3
|
+
[alembic]
|
|
4
|
+
# path to migration scripts
|
|
5
|
+
# Use forward slashes (/) also on windows to provide an os agnostic path
|
|
6
|
+
script_location = dmart_migrations
|
|
7
|
+
|
|
8
|
+
# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s
|
|
9
|
+
# Uncomment the line below if you want the files to be prepended with date and time
|
|
10
|
+
# see https://alembic.sqlalchemy.org/en/latest/tutorial.html#editing-the-ini-file
|
|
11
|
+
# for all available tokens
|
|
12
|
+
# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s
|
|
13
|
+
|
|
14
|
+
# sys.path path, will be prepended to sys.path if present.
|
|
15
|
+
# defaults to the current working directory.
|
|
16
|
+
prepend_sys_path = .
|
|
17
|
+
|
|
18
|
+
# timezone to use when rendering the date within the migration file
|
|
19
|
+
# as well as the filename.
|
|
20
|
+
# If specified, requires the python>=3.9 or backports.zoneinfo library.
|
|
21
|
+
# Any required deps can installed by adding `alembic[tz]` to the pip requirements
|
|
22
|
+
# string value is passed to ZoneInfo()
|
|
23
|
+
# leave blank for localtime
|
|
24
|
+
# timezone =
|
|
25
|
+
|
|
26
|
+
# max length of characters to apply to the "slug" field
|
|
27
|
+
# truncate_slug_length = 40
|
|
28
|
+
|
|
29
|
+
# set to 'true' to run the environment during
|
|
30
|
+
# the 'revision' command, regardless of autogenerate
|
|
31
|
+
# revision_environment = false
|
|
32
|
+
|
|
33
|
+
# set to 'true' to allow .pyc and .pyo files without
|
|
34
|
+
# a source .py file to be detected as revisions in the
|
|
35
|
+
# versions/ directory
|
|
36
|
+
# sourceless = false
|
|
37
|
+
|
|
38
|
+
# version location specification; This defaults
|
|
39
|
+
# to alembic/versions. When using multiple version
|
|
40
|
+
# directories, initial revisions must be specified with --version-path.
|
|
41
|
+
# The path separator used here should be the separator specified by "version_path_separator" below.
|
|
42
|
+
# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions
|
|
43
|
+
|
|
44
|
+
# version path separator; As mentioned above, this is the character used to split
|
|
45
|
+
# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep.
|
|
46
|
+
# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas.
|
|
47
|
+
# Valid values for version_path_separator are:
|
|
48
|
+
#
|
|
49
|
+
# version_path_separator = :
|
|
50
|
+
# version_path_separator = ;
|
|
51
|
+
# version_path_separator = space
|
|
52
|
+
# version_path_separator = newline
|
|
53
|
+
version_path_separator = os # Use os.pathsep. Default configuration used for new projects.
|
|
54
|
+
|
|
55
|
+
# set to 'true' to search source files recursively
|
|
56
|
+
# in each "version_locations" directory
|
|
57
|
+
# new in Alembic version 1.10
|
|
58
|
+
# recursive_version_locations = false
|
|
59
|
+
|
|
60
|
+
# the output encoding used when revision files
|
|
61
|
+
# are written from script.py.mako
|
|
62
|
+
# output_encoding = utf-8
|
|
63
|
+
|
|
64
|
+
sqlalchemy.url = postgresql+asyncpg://dmart:somepassword@localhost:5432/dmart
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
[post_write_hooks]
|
|
68
|
+
# post_write_hooks defines scripts or Python functions that are run
|
|
69
|
+
# on newly generated revision scripts. See the documentation for further
|
|
70
|
+
# detail and examples
|
|
71
|
+
|
|
72
|
+
# format using "black" - use the console_scripts runner, against the "black" entrypoint
|
|
73
|
+
# hooks = black
|
|
74
|
+
# black.type = console_scripts
|
|
75
|
+
# black.entrypoint = black
|
|
76
|
+
# black.options = -l 79 REVISION_SCRIPT_FILENAME
|
|
77
|
+
|
|
78
|
+
# lint with attempts to fix using "ruff" - use the exec runner, execute a binary
|
|
79
|
+
# hooks = ruff
|
|
80
|
+
# ruff.type = exec
|
|
81
|
+
# ruff.executable = %(here)s/.venv/bin/ruff
|
|
82
|
+
# ruff.options = --fix REVISION_SCRIPT_FILENAME
|
|
83
|
+
|
|
84
|
+
# Logging configuration
|
|
85
|
+
[loggers]
|
|
86
|
+
keys = root,sqlalchemy,alembic
|
|
87
|
+
|
|
88
|
+
[handlers]
|
|
89
|
+
keys = console
|
|
90
|
+
|
|
91
|
+
[formatters]
|
|
92
|
+
keys = generic
|
|
93
|
+
|
|
94
|
+
[logger_root]
|
|
95
|
+
level = WARNING
|
|
96
|
+
handlers = console
|
|
97
|
+
qualname =
|
|
98
|
+
|
|
99
|
+
[logger_sqlalchemy]
|
|
100
|
+
level = WARNING
|
|
101
|
+
handlers =
|
|
102
|
+
qualname = sqlalchemy.engine
|
|
103
|
+
|
|
104
|
+
[logger_alembic]
|
|
105
|
+
level = INFO
|
|
106
|
+
handlers =
|
|
107
|
+
qualname = alembic
|
|
108
|
+
|
|
109
|
+
[handler_console]
|
|
110
|
+
class = StreamHandler
|
|
111
|
+
args = (sys.stderr,)
|
|
112
|
+
level = NOTSET
|
|
113
|
+
formatter = generic
|
|
114
|
+
|
|
115
|
+
[formatter_generic]
|
|
116
|
+
format = %(levelname)-5.5s [%(name)s] %(message)s
|
|
117
|
+
datefmt = %H:%M:%S
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
alembic.ini,sha256=zs8d8VhH9TRwZrPK697EZPBCfaKvI4SqTuGuG0FAm2Y,3747
|
|
1
2
|
bundler.py,sha256=so8ZJResb1PcOH5vboa_mpFAdYr_T8u8DbbFXd570Lg,1704
|
|
2
3
|
data_generator.py,sha256=CnE-VHEeX7-lAXtqCgbRqR9WHjTuOgeiZcviYrHAmho,2287
|
|
3
|
-
dmart.py,sha256=
|
|
4
|
+
dmart.py,sha256=_eXSPzHwdjlPG_v5rvVQslj7ny68-ll6HZ1jCvCKswI,25808
|
|
4
5
|
get_settings.py,sha256=Sbe2WCoiK398E7HY4SNLfDN_GmE8knR4M-YJWF31jcg,153
|
|
6
|
+
info.json,sha256=hXQWl19lfMkEj_zXdehGeKjiKGNJ7emY4S7d4pIqJ1E,123
|
|
5
7
|
main.py,sha256=KZGhIL6AnEm5ZAPy4IvhBDpzSTjuodilV7NafNOyhzM,19676
|
|
6
8
|
migrate.py,sha256=hn1MZoVby_Jjqhc7y3CrLcGD619QmVZv3PONNvO7VKQ,665
|
|
7
9
|
password_gen.py,sha256=xjx8wi105ZYvhLBBQj7_rugACpxifGXHse6f7YlGXWQ,196
|
|
@@ -12,51 +14,6 @@ schema_modulate.py,sha256=vB7NxvqghqNpFe__p0ll03WsvNftzxBbQ6UXB2UfxNU,6454
|
|
|
12
14
|
set_admin_passwd.py,sha256=Ei8wnoJ_UDHIXmMb-E_dd_NqyM6Gt5AgJPJ4fAxARXI,1950
|
|
13
15
|
sync.py,sha256=FlmubtlnFaxtZkbRV1-eyS_Sx5KBRvWyIZjvd0Tiar4,7339
|
|
14
16
|
websocket.py,sha256=Q8WUTvOTBHKP5xy5wim8yn0t-BfjrPwx7J_6vbzAm1A,7576
|
|
15
|
-
alembic/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
|
16
|
-
alembic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
-
alembic/env.py,sha256=ahYndeefOvhqeZ7EQMkI1NdqJVQCUqLxYNP_MtJeDfY,2821
|
|
18
|
-
alembic/notes.txt,sha256=X7LYSNmulLRiAUXvw07Z85bSGRTnx4NUpoNC9D2DfO8,395
|
|
19
|
-
alembic/script.py.mako,sha256=u-ABdYW1tcIILgJFJdQZYLxoAI8Awd6wZbx30rY6fxU,680
|
|
20
|
-
alembic/__pycache__/__init__.cpython-314.pyc,sha256=CcFVDJxqk1nR7sZH9dbbffqoMo0jRHW-MiSSGFX--qA,174
|
|
21
|
-
alembic/__pycache__/env.cpython-314.pyc,sha256=9L-2pPlUSIrHh1JLQilY0TDxqo7_ikqfKhFwImuCuwk,3935
|
|
22
|
-
alembic/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
alembic/scripts/calculate_checksums.py,sha256=v2NLEvReA9V3noJE-BWANgKDdhc8Mqg1ZmJJ8nc8sGI,3443
|
|
24
|
-
alembic/scripts/migration_f7a4949eed19.py,sha256=oUXuxjU4MbVafm4S-xu5J_4apHqW6hQZ8ftpJtCtM28,1462
|
|
25
|
-
alembic/versions/0f3d2b1a7c21_add_authz_materialized_views.py,sha256=70vrPfhMHVHhw1l7KNQpvCUU76XZfvGcPlrXOeU4FHU,2599
|
|
26
|
-
alembic/versions/10d2041b94d4_last_checksum_history.py,sha256=FYjyzE5Xi6bn9LUtxLKFnQOKhg4GZOrTkpqtmlCnY6Y,2860
|
|
27
|
-
alembic/versions/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.py,sha256=taaFTkTaFfLfj7QUUfIdcojvbOdjut_dWtrIvQUN7-4,921
|
|
28
|
-
alembic/versions/26bfe19b49d4_rm_failedloginattempts.py,sha256=-Roftn8OSUz7kfR3yMI02rulyvnH46W0WpJfDQ5xAdk,1471
|
|
29
|
-
alembic/versions/3c8bca2219cc_add_otp_table.py,sha256=f-YSxx1iLA0iHWukq1VnngFmiiYQyEzowicox0-wtbY,1125
|
|
30
|
-
alembic/versions/6675fd9dfe42_remove_unique_from_sessions_table.py,sha256=yP40IHwtzFAAUid_VeeCkt_9F2RszMYBjNKx2mDTKNw,1037
|
|
31
|
-
alembic/versions/71bc1df82e6a_adding_user_last_login_at.py,sha256=LINO2hWUEFmsTspupd8AxgUS6tNJFNgGC5do1QPMQ1E,1486
|
|
32
|
-
alembic/versions/74288ccbd3b5_initial.py,sha256=hZ1w5mqVKSO13J1O4zcTccDJBk2c-cmIB0AUx1KLlLI,13988
|
|
33
|
-
alembic/versions/7520a89a8467_rm_activesession_table.py,sha256=4VYv9tCXkTQNaXPVvjdsKTiw093KkBBUHNSiWdZtqtA,1305
|
|
34
|
-
alembic/versions/848b623755a4_make_created_nd_updated_at_required.py,sha256=o106xd-apT8ZAXdVCjX76o7VuqRQNkIl0V4f41m5j2E,5375
|
|
35
|
-
alembic/versions/8640dcbebf85_add_notes_to_users.py,sha256=XjfW2Lc0-xoRGB2qfdzDstw7Caaev6JhqRNYV_sIqgc,813
|
|
36
|
-
alembic/versions/91c94250232a_adding_fk_on_owner_shortname.py,sha256=F9FDF2qyeqvOx1gkYq5HQMkVCH1QrXciYSHVxijsSSU,4024
|
|
37
|
-
alembic/versions/98ecd6f56f9a_ext_meta_with_owner_group_shortname.py,sha256=S466VE3jsxXDEpTKyhIN06uutM0jI7zYHTWIYvU_pJw,2579
|
|
38
|
-
alembic/versions/9aae9138c4ef_indexing_created_at_updated_at.py,sha256=xrqfJB5cER0PYi1torwkgsbBBjDeeM6dyj4pu-quphk,3662
|
|
39
|
-
alembic/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
40
|
-
alembic/versions/b53f916b3f6d_json_to_jsonb.py,sha256=LPnevQjbjs0KrwqxYHtGUC6mSBBsUpiCBnwD-FN2x50,24840
|
|
41
|
-
alembic/versions/eb5f1ec65156_adding_user_locked_to_device.py,sha256=Z9skCus52jg_xV5a7JVYK3IenNlvsdMKIFf1H5POst0,1030
|
|
42
|
-
alembic/versions/f7a4949eed19_adding_query_policies_to_meta.py,sha256=LA4rx3u0Ei5m4OcSsVYHBsGMeKOJdx8G88yK1kBLFys,2307
|
|
43
|
-
alembic/versions/__pycache__/0f3d2b1a7c21_add_authz_materialized_views.cpython-314.pyc,sha256=mevU12_Y6RzGxc8Xg1bkFIVaNu7uvx7zCQ2j6bn_Pqo,3955
|
|
44
|
-
alembic/versions/__pycache__/10d2041b94d4_last_checksum_history.cpython-314.pyc,sha256=n3eMeDeLN8WXXzoKA-8b4t9k-WQF4FPVYIRReNm-uN4,6199
|
|
45
|
-
alembic/versions/__pycache__/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.cpython-314.pyc,sha256=_8yowo72FtcMsYQOp2vpy_hWJ5QlDOPsDsEt6NOr9cY,2649
|
|
46
|
-
alembic/versions/__pycache__/26bfe19b49d4_rm_failedloginattempts.cpython-314.pyc,sha256=1PYF87QiiSXEmHUM6wnq9Ck_ktq981W3TgS-_7QqG4M,3309
|
|
47
|
-
alembic/versions/__pycache__/3c8bca2219cc_add_otp_table.cpython-314.pyc,sha256=HD6h3iYtGyhDcOjRK4xWa9Hl6YzdIszmyO95wPZvFOM,2710
|
|
48
|
-
alembic/versions/__pycache__/6675fd9dfe42_remove_unique_from_sessions_table.cpython-314.pyc,sha256=k71q5tLr6x2cDoHw4pDNeBem136qz2XFjUg11a6DDpM,2422
|
|
49
|
-
alembic/versions/__pycache__/71bc1df82e6a_adding_user_last_login_at.cpython-314.pyc,sha256=35cwhVRGhtvREO4j3pBDtGoSD8sZd0MdZ0SRZKLsK5s,3399
|
|
50
|
-
alembic/versions/__pycache__/74288ccbd3b5_initial.cpython-314.pyc,sha256=BDS6zx-enw-oWeAIju5plp4lB10q8BeFwBnaUDEgtKY,28589
|
|
51
|
-
alembic/versions/__pycache__/7520a89a8467_rm_activesession_table.cpython-314.pyc,sha256=x5m_sxYMDP6myKKlVTivP-VM-2EH6d0D21pv9URFyXU,2791
|
|
52
|
-
alembic/versions/__pycache__/848b623755a4_make_created_nd_updated_at_required.cpython-314.pyc,sha256=A4E0A4eJliMs-uNeVZfGo2j8UrXhdRrtBB1Ky-OA_O0,7917
|
|
53
|
-
alembic/versions/__pycache__/8640dcbebf85_add_notes_to_users.cpython-314.pyc,sha256=94zNRuU2L3ra43Z3eDa4duVMXMsKTLiNUUj7lUxeZzY,2526
|
|
54
|
-
alembic/versions/__pycache__/91c94250232a_adding_fk_on_owner_shortname.cpython-314.pyc,sha256=IIEupLleN5nEUUpTCXWGV-LXsdzGJrcnrolJmpi8WMo,6383
|
|
55
|
-
alembic/versions/__pycache__/98ecd6f56f9a_ext_meta_with_owner_group_shortname.cpython-314.pyc,sha256=tPXDQ_TCEK9sv3ZinAk9vUJcwuqE75ymoT_0O_0qLss,5657
|
|
56
|
-
alembic/versions/__pycache__/9aae9138c4ef_indexing_created_at_updated_at.cpython-314.pyc,sha256=D3m2fuhNbUUNZi21p45UDy8uUmAOio1RZzqoPnKD6G4,6990
|
|
57
|
-
alembic/versions/__pycache__/b53f916b3f6d_json_to_jsonb.cpython-314.pyc,sha256=tsx4FNUeGpuqnMm_ewhDnjXGdBOzypSVqo_AQtzoOVk,34026
|
|
58
|
-
alembic/versions/__pycache__/eb5f1ec65156_adding_user_locked_to_device.cpython-314.pyc,sha256=v47hBAxgbjkSAsEn8O2EUTUOPR0D9bVD8fJl9erlpzM,2514
|
|
59
|
-
alembic/versions/__pycache__/f7a4949eed19_adding_query_policies_to_meta.cpython-314.pyc,sha256=jCW56_bq_qQM6H9CjPu2qOm8gywSO7TEHHywlyv1qcI,5099
|
|
60
17
|
api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
61
18
|
api/info/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
19
|
api/info/router.py,sha256=sQZZor7A-uDzsJX39aqEA7bMZOJ-WTitYeFvVNWfaHw,3938
|
|
@@ -216,6 +173,51 @@ data_adapters/sql/db_to_json_migration.py,sha256=GTPO6-HblgD60qruhhVpWbKOke5xz9w
|
|
|
216
173
|
data_adapters/sql/health_check_sql.py,sha256=2Z0mN5IMrjF72ZAiafBLkHklbXXWJzLp1K2TzjzPI1s,8569
|
|
217
174
|
data_adapters/sql/json_to_db_migration.py,sha256=KaubDrRZ3MfPLc-CNGPpsEccPELKr1V4GoBEBt1BNZo,21131
|
|
218
175
|
data_adapters/sql/update_query_policies.py,sha256=LUpkyzDAkiwwVWnXxPdVAU6atehW72ECAazj3mEYHK0,3857
|
|
176
|
+
dmart_migrations/README,sha256=MVlc9TYmr57RbhXET6QxgyCcwWP7w-vLkEsirENqiIQ,38
|
|
177
|
+
dmart_migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
178
|
+
dmart_migrations/env.py,sha256=ahYndeefOvhqeZ7EQMkI1NdqJVQCUqLxYNP_MtJeDfY,2821
|
|
179
|
+
dmart_migrations/notes.txt,sha256=X7LYSNmulLRiAUXvw07Z85bSGRTnx4NUpoNC9D2DfO8,395
|
|
180
|
+
dmart_migrations/script.py.mako,sha256=u-ABdYW1tcIILgJFJdQZYLxoAI8Awd6wZbx30rY6fxU,680
|
|
181
|
+
dmart_migrations/__pycache__/__init__.cpython-314.pyc,sha256=CcFVDJxqk1nR7sZH9dbbffqoMo0jRHW-MiSSGFX--qA,174
|
|
182
|
+
dmart_migrations/__pycache__/env.cpython-314.pyc,sha256=9L-2pPlUSIrHh1JLQilY0TDxqo7_ikqfKhFwImuCuwk,3935
|
|
183
|
+
dmart_migrations/scripts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
184
|
+
dmart_migrations/scripts/calculate_checksums.py,sha256=v2NLEvReA9V3noJE-BWANgKDdhc8Mqg1ZmJJ8nc8sGI,3443
|
|
185
|
+
dmart_migrations/scripts/migration_f7a4949eed19.py,sha256=oUXuxjU4MbVafm4S-xu5J_4apHqW6hQZ8ftpJtCtM28,1462
|
|
186
|
+
dmart_migrations/versions/0f3d2b1a7c21_add_authz_materialized_views.py,sha256=70vrPfhMHVHhw1l7KNQpvCUU76XZfvGcPlrXOeU4FHU,2599
|
|
187
|
+
dmart_migrations/versions/10d2041b94d4_last_checksum_history.py,sha256=FYjyzE5Xi6bn9LUtxLKFnQOKhg4GZOrTkpqtmlCnY6Y,2860
|
|
188
|
+
dmart_migrations/versions/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.py,sha256=taaFTkTaFfLfj7QUUfIdcojvbOdjut_dWtrIvQUN7-4,921
|
|
189
|
+
dmart_migrations/versions/26bfe19b49d4_rm_failedloginattempts.py,sha256=-Roftn8OSUz7kfR3yMI02rulyvnH46W0WpJfDQ5xAdk,1471
|
|
190
|
+
dmart_migrations/versions/3c8bca2219cc_add_otp_table.py,sha256=f-YSxx1iLA0iHWukq1VnngFmiiYQyEzowicox0-wtbY,1125
|
|
191
|
+
dmart_migrations/versions/6675fd9dfe42_remove_unique_from_sessions_table.py,sha256=yP40IHwtzFAAUid_VeeCkt_9F2RszMYBjNKx2mDTKNw,1037
|
|
192
|
+
dmart_migrations/versions/71bc1df82e6a_adding_user_last_login_at.py,sha256=LINO2hWUEFmsTspupd8AxgUS6tNJFNgGC5do1QPMQ1E,1486
|
|
193
|
+
dmart_migrations/versions/74288ccbd3b5_initial.py,sha256=hZ1w5mqVKSO13J1O4zcTccDJBk2c-cmIB0AUx1KLlLI,13988
|
|
194
|
+
dmart_migrations/versions/7520a89a8467_rm_activesession_table.py,sha256=4VYv9tCXkTQNaXPVvjdsKTiw093KkBBUHNSiWdZtqtA,1305
|
|
195
|
+
dmart_migrations/versions/848b623755a4_make_created_nd_updated_at_required.py,sha256=o106xd-apT8ZAXdVCjX76o7VuqRQNkIl0V4f41m5j2E,5375
|
|
196
|
+
dmart_migrations/versions/8640dcbebf85_add_notes_to_users.py,sha256=XjfW2Lc0-xoRGB2qfdzDstw7Caaev6JhqRNYV_sIqgc,813
|
|
197
|
+
dmart_migrations/versions/91c94250232a_adding_fk_on_owner_shortname.py,sha256=F9FDF2qyeqvOx1gkYq5HQMkVCH1QrXciYSHVxijsSSU,4024
|
|
198
|
+
dmart_migrations/versions/98ecd6f56f9a_ext_meta_with_owner_group_shortname.py,sha256=S466VE3jsxXDEpTKyhIN06uutM0jI7zYHTWIYvU_pJw,2579
|
|
199
|
+
dmart_migrations/versions/9aae9138c4ef_indexing_created_at_updated_at.py,sha256=xrqfJB5cER0PYi1torwkgsbBBjDeeM6dyj4pu-quphk,3662
|
|
200
|
+
dmart_migrations/versions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
201
|
+
dmart_migrations/versions/b53f916b3f6d_json_to_jsonb.py,sha256=LPnevQjbjs0KrwqxYHtGUC6mSBBsUpiCBnwD-FN2x50,24840
|
|
202
|
+
dmart_migrations/versions/eb5f1ec65156_adding_user_locked_to_device.py,sha256=Z9skCus52jg_xV5a7JVYK3IenNlvsdMKIFf1H5POst0,1030
|
|
203
|
+
dmart_migrations/versions/f7a4949eed19_adding_query_policies_to_meta.py,sha256=LA4rx3u0Ei5m4OcSsVYHBsGMeKOJdx8G88yK1kBLFys,2307
|
|
204
|
+
dmart_migrations/versions/__pycache__/0f3d2b1a7c21_add_authz_materialized_views.cpython-314.pyc,sha256=mevU12_Y6RzGxc8Xg1bkFIVaNu7uvx7zCQ2j6bn_Pqo,3955
|
|
205
|
+
dmart_migrations/versions/__pycache__/10d2041b94d4_last_checksum_history.cpython-314.pyc,sha256=n3eMeDeLN8WXXzoKA-8b4t9k-WQF4FPVYIRReNm-uN4,6199
|
|
206
|
+
dmart_migrations/versions/__pycache__/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.cpython-314.pyc,sha256=_8yowo72FtcMsYQOp2vpy_hWJ5QlDOPsDsEt6NOr9cY,2649
|
|
207
|
+
dmart_migrations/versions/__pycache__/26bfe19b49d4_rm_failedloginattempts.cpython-314.pyc,sha256=1PYF87QiiSXEmHUM6wnq9Ck_ktq981W3TgS-_7QqG4M,3309
|
|
208
|
+
dmart_migrations/versions/__pycache__/3c8bca2219cc_add_otp_table.cpython-314.pyc,sha256=HD6h3iYtGyhDcOjRK4xWa9Hl6YzdIszmyO95wPZvFOM,2710
|
|
209
|
+
dmart_migrations/versions/__pycache__/6675fd9dfe42_remove_unique_from_sessions_table.cpython-314.pyc,sha256=k71q5tLr6x2cDoHw4pDNeBem136qz2XFjUg11a6DDpM,2422
|
|
210
|
+
dmart_migrations/versions/__pycache__/71bc1df82e6a_adding_user_last_login_at.cpython-314.pyc,sha256=35cwhVRGhtvREO4j3pBDtGoSD8sZd0MdZ0SRZKLsK5s,3399
|
|
211
|
+
dmart_migrations/versions/__pycache__/74288ccbd3b5_initial.cpython-314.pyc,sha256=BDS6zx-enw-oWeAIju5plp4lB10q8BeFwBnaUDEgtKY,28589
|
|
212
|
+
dmart_migrations/versions/__pycache__/7520a89a8467_rm_activesession_table.cpython-314.pyc,sha256=x5m_sxYMDP6myKKlVTivP-VM-2EH6d0D21pv9URFyXU,2791
|
|
213
|
+
dmart_migrations/versions/__pycache__/848b623755a4_make_created_nd_updated_at_required.cpython-314.pyc,sha256=A4E0A4eJliMs-uNeVZfGo2j8UrXhdRrtBB1Ky-OA_O0,7917
|
|
214
|
+
dmart_migrations/versions/__pycache__/8640dcbebf85_add_notes_to_users.cpython-314.pyc,sha256=94zNRuU2L3ra43Z3eDa4duVMXMsKTLiNUUj7lUxeZzY,2526
|
|
215
|
+
dmart_migrations/versions/__pycache__/91c94250232a_adding_fk_on_owner_shortname.cpython-314.pyc,sha256=IIEupLleN5nEUUpTCXWGV-LXsdzGJrcnrolJmpi8WMo,6383
|
|
216
|
+
dmart_migrations/versions/__pycache__/98ecd6f56f9a_ext_meta_with_owner_group_shortname.cpython-314.pyc,sha256=tPXDQ_TCEK9sv3ZinAk9vUJcwuqE75ymoT_0O_0qLss,5657
|
|
217
|
+
dmart_migrations/versions/__pycache__/9aae9138c4ef_indexing_created_at_updated_at.cpython-314.pyc,sha256=D3m2fuhNbUUNZi21p45UDy8uUmAOio1RZzqoPnKD6G4,6990
|
|
218
|
+
dmart_migrations/versions/__pycache__/b53f916b3f6d_json_to_jsonb.cpython-314.pyc,sha256=tsx4FNUeGpuqnMm_ewhDnjXGdBOzypSVqo_AQtzoOVk,34026
|
|
219
|
+
dmart_migrations/versions/__pycache__/eb5f1ec65156_adding_user_locked_to_device.cpython-314.pyc,sha256=v47hBAxgbjkSAsEn8O2EUTUOPR0D9bVD8fJl9erlpzM,2514
|
|
220
|
+
dmart_migrations/versions/__pycache__/f7a4949eed19_adding_query_policies_to_meta.cpython-314.pyc,sha256=jCW56_bq_qQM6H9CjPu2qOm8gywSO7TEHHywlyv1qcI,5099
|
|
219
221
|
languages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
220
222
|
languages/arabic.json,sha256=UL61rP9_M42CGfU94G5-1bXVUVnsJWXzoqhaXTXTJuM,910
|
|
221
223
|
languages/english.json,sha256=Y7eZ2X8c427_97qYrHOeGb2d725T-YlNNFVSi8FB7Kw,649
|
|
@@ -280,8 +282,8 @@ utils/ticket_sys_utils.py,sha256=9QAlW2iiy8KyxQRBDj_WmzS5kKb0aYJmGwd4qzmGVqo,700
|
|
|
280
282
|
utils/web_notifier.py,sha256=QM87VVid2grC5lK3NdS1yzz0z1wXljr4GChJOeK86W4,843
|
|
281
283
|
utils/templates/activation.html.j2,sha256=XAMKCdoqONoc4ZQucD0yV-Pg5DlHHASZrTVItNS-iBE,640
|
|
282
284
|
utils/templates/reminder.html.j2,sha256=aoS8bTs56q4hjAZKsb0jV9c-PIURBELuBOpT_qPZNVU,639
|
|
283
|
-
dmart-1.4.
|
|
284
|
-
dmart-1.4.
|
|
285
|
-
dmart-1.4.
|
|
286
|
-
dmart-1.4.
|
|
287
|
-
dmart-1.4.
|
|
285
|
+
dmart-1.4.10.dist-info/METADATA,sha256=1JEg-JLqBDSHLzH8bkIzY4p1gDKbX9bWYcsKc3cIfHQ,2069
|
|
286
|
+
dmart-1.4.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
287
|
+
dmart-1.4.10.dist-info/entry_points.txt,sha256=GjfoGh1bpxuU9HHGJzbtCFPNptHv9TryxHMN3uBSKpg,37
|
|
288
|
+
dmart-1.4.10.dist-info/top_level.txt,sha256=XELQhaIfj-qupnyBrir39qFRh8ncu1RXkCHeitzqLLg,275
|
|
289
|
+
dmart-1.4.10.dist-info/RECORD,,
|
dmart.py
CHANGED
|
@@ -534,20 +534,86 @@ def main():
|
|
|
534
534
|
case "db_to_json":
|
|
535
535
|
db_to_json_migration()
|
|
536
536
|
case "migrate":
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
#
|
|
540
|
-
|
|
537
|
+
pkg_dir = Path(__file__).resolve().parent
|
|
538
|
+
|
|
539
|
+
# Check for shadowing alembic directory and rename it if necessary
|
|
540
|
+
shadowing_alembic = pkg_dir / "alembic"
|
|
541
|
+
target_migrations = pkg_dir / "dmart_migrations"
|
|
542
|
+
|
|
543
|
+
if shadowing_alembic.exists() and shadowing_alembic.is_dir():
|
|
544
|
+
if target_migrations.exists():
|
|
545
|
+
print(f"Warning: Both {shadowing_alembic} and {target_migrations} exist.")
|
|
546
|
+
backup_path = pkg_dir / "alembic_backup"
|
|
547
|
+
if not backup_path.exists():
|
|
548
|
+
print(f"Renaming {shadowing_alembic} to {backup_path} to avoid shadowing 'alembic' library.")
|
|
549
|
+
shutil.move(str(shadowing_alembic), str(backup_path))
|
|
550
|
+
else:
|
|
551
|
+
print(f"Error: {shadowing_alembic} exists and shadows 'alembic' library, but {target_migrations} and {backup_path} also exist.")
|
|
552
|
+
print("Please manually remove or rename the 'alembic' directory.")
|
|
553
|
+
sys.exit(1)
|
|
554
|
+
else:
|
|
555
|
+
print(f"Renaming {shadowing_alembic} to {target_migrations} to avoid shadowing 'alembic' library.")
|
|
556
|
+
shutil.move(str(shadowing_alembic), str(target_migrations))
|
|
557
|
+
|
|
558
|
+
# Try to find migrations directory
|
|
559
|
+
alembic_dir = target_migrations
|
|
560
|
+
if not alembic_dir.exists():
|
|
561
|
+
alembic_dir = pkg_dir / "alembic"
|
|
562
|
+
|
|
563
|
+
original_ini_path = pkg_dir / "alembic.ini"
|
|
564
|
+
if not original_ini_path.exists():
|
|
565
|
+
original_ini_path = alembic_dir / "alembic.ini"
|
|
566
|
+
|
|
567
|
+
if not original_ini_path.exists():
|
|
568
|
+
print(f"Error: 'alembic.ini' not found in {pkg_dir} or {alembic_dir}")
|
|
569
|
+
sys.exit(1)
|
|
570
|
+
|
|
571
|
+
# Use subprocess to run alembic to avoid shadowing issues in the current process.
|
|
572
|
+
# We use the current python executable to ensure we use the same environment.
|
|
573
|
+
env = os.environ.copy()
|
|
574
|
+
python_path = env.get("PYTHONPATH", "")
|
|
575
|
+
if python_path:
|
|
576
|
+
env["PYTHONPATH"] = f"{pkg_dir}{os.pathsep}{python_path}"
|
|
577
|
+
else:
|
|
578
|
+
env["PYTHONPATH"] = str(pkg_dir)
|
|
579
|
+
|
|
541
580
|
try:
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
581
|
+
# Check if alembic is installed
|
|
582
|
+
check = subprocess.run(
|
|
583
|
+
[sys.executable, "-c", "import alembic"],
|
|
584
|
+
capture_output=True
|
|
585
|
+
)
|
|
586
|
+
if check.returncode != 0:
|
|
587
|
+
print("Error: 'alembic' library not found. Please install it with 'pip install alembic'.")
|
|
588
|
+
sys.exit(1)
|
|
589
|
+
|
|
590
|
+
import tempfile
|
|
591
|
+
# Create a temporary alembic.ini to override script_location if needed
|
|
592
|
+
with tempfile.NamedTemporaryFile(mode='w', suffix='.ini', delete=False) as tf:
|
|
593
|
+
with open(original_ini_path, 'r') as f:
|
|
594
|
+
content = f.read()
|
|
595
|
+
|
|
596
|
+
# Ensure script_location points to the actual directory (absolute path)
|
|
597
|
+
import re
|
|
598
|
+
content = re.sub(r'^script_location\s*=.*$', f'script_location = {alembic_dir.as_posix()}', content, flags=re.MULTILINE)
|
|
599
|
+
tf.write(content)
|
|
600
|
+
temp_ini_path = tf.name
|
|
601
|
+
|
|
602
|
+
try:
|
|
603
|
+
result = subprocess.run(
|
|
604
|
+
[sys.executable, "-m", "alembic", "-c", temp_ini_path, "upgrade", "head"],
|
|
605
|
+
cwd=pkg_dir,
|
|
606
|
+
env=env
|
|
607
|
+
)
|
|
608
|
+
if result.returncode != 0:
|
|
609
|
+
sys.exit(result.returncode)
|
|
610
|
+
finally:
|
|
611
|
+
if os.path.exists(temp_ini_path):
|
|
612
|
+
os.unlink(temp_ini_path)
|
|
613
|
+
|
|
614
|
+
except Exception as e:
|
|
615
|
+
print(f"Error running migration: {e}")
|
|
616
|
+
sys.exit(1)
|
|
551
617
|
case "help":
|
|
552
618
|
print("Available commands:")
|
|
553
619
|
print(commands)
|
info.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"branch": "pypi", "version": "2e6304dd", "tag": "v1.4.0-72-g2e6304dd", "version_date": "'Mon Jan 19 08:55:04 2026 +0000'"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alembic → dmart_migrations}/versions/1cf4e1ee3cb8_ext_permission_with_filter_fields_values.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alembic → dmart_migrations}/versions/__pycache__/10d2041b94d4_last_checksum_history.cpython-314.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alembic → dmart_migrations}/versions/__pycache__/3c8bca2219cc_add_otp_table.cpython-314.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alembic → dmart_migrations}/versions/__pycache__/8640dcbebf85_add_notes_to_users.cpython-314.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{alembic → dmart_migrations}/versions/__pycache__/b53f916b3f6d_json_to_jsonb.cpython-314.pyc
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|