django-cfg 1.4.107__py3-none-any.whl → 1.4.109__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.
Potentially problematic release.
This version of django-cfg might be problematic. Click here for more details.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/accounts/views/profile.py +19 -9
- django_cfg/apps/centrifugo/views/admin_api.py +4 -7
- django_cfg/apps/centrifugo/views/monitoring.py +3 -6
- django_cfg/apps/centrifugo/views/testing_api.py +3 -6
- django_cfg/apps/dashboard/services/system_health_service.py +16 -11
- django_cfg/apps/dashboard/views/activity_views.py +3 -5
- django_cfg/apps/dashboard/views/apizones_views.py +4 -5
- django_cfg/apps/dashboard/views/charts_views.py +4 -5
- django_cfg/apps/dashboard/views/overview_views.py +4 -5
- django_cfg/apps/dashboard/views/statistics_views.py +4 -5
- django_cfg/apps/dashboard/views/system_views.py +4 -5
- django_cfg/apps/knowbase/__init__.py +2 -2
- django_cfg/apps/knowbase/apps.py +2 -8
- django_cfg/apps/knowbase/views/base.py +9 -4
- django_cfg/apps/support/views/api.py +16 -7
- django_cfg/apps/tasks/__init__.py +61 -2
- django_cfg/apps/tasks/admin/__init__.py +3 -10
- django_cfg/apps/tasks/admin/config.py +98 -0
- django_cfg/apps/tasks/admin/task_log.py +265 -0
- django_cfg/apps/tasks/apps.py +7 -9
- django_cfg/apps/tasks/filters/__init__.py +10 -0
- django_cfg/apps/tasks/filters/task_log.py +121 -0
- django_cfg/apps/tasks/migrations/0001_initial.py +196 -0
- django_cfg/apps/tasks/models/__init__.py +4 -0
- django_cfg/apps/tasks/models/task_log.py +246 -0
- django_cfg/apps/tasks/serializers/__init__.py +28 -0
- django_cfg/apps/tasks/serializers/task_log.py +249 -0
- django_cfg/apps/tasks/services/__init__.py +10 -0
- django_cfg/apps/tasks/services/client/__init__.py +7 -0
- django_cfg/apps/tasks/services/client/client.py +234 -0
- django_cfg/apps/tasks/services/config_helper.py +63 -0
- django_cfg/apps/tasks/services/sync.py +204 -0
- django_cfg/apps/tasks/urls.py +7 -13
- django_cfg/apps/tasks/views/__init__.py +4 -10
- django_cfg/apps/tasks/views/task_log.py +41 -0
- django_cfg/apps/tasks/views/task_log_base.py +41 -0
- django_cfg/apps/tasks/views/task_log_overview.py +100 -0
- django_cfg/apps/tasks/views/task_log_related.py +41 -0
- django_cfg/apps/tasks/views/task_log_stats.py +91 -0
- django_cfg/apps/tasks/views/task_log_timeline.py +81 -0
- django_cfg/apps/urls.py +0 -1
- django_cfg/cli/commands/info.py +1 -1
- django_cfg/cli/utils.py +1 -1
- django_cfg/core/base/config_model.py +1 -1
- django_cfg/core/builders/apps_builder.py +1 -1
- django_cfg/core/generation/integration_generators/__init__.py +1 -1
- django_cfg/core/generation/integration_generators/tasks.py +14 -18
- django_cfg/core/generation/security_generators/crypto_fields.py +2 -1
- django_cfg/core/integration/display/startup.py +1 -1
- django_cfg/mixins/__init__.py +12 -0
- django_cfg/mixins/admin_api.py +37 -0
- django_cfg/mixins/client_api.py +39 -0
- django_cfg/models/django/constance.py +2 -8
- django_cfg/models/django/crypto_fields.py +13 -48
- django_cfg/models/tasks/__init__.py +8 -10
- django_cfg/models/tasks/backends.py +76 -207
- django_cfg/models/tasks/config.py +20 -127
- django_cfg/models/tasks/utils.py +17 -29
- django_cfg/modules/django_client/management/commands/generate_client.py +13 -1
- django_cfg/modules/django_unfold/navigation.py +121 -22
- django_cfg/pyproject.toml +2 -2
- django_cfg/registry/core.py +1 -1
- django_cfg/static/frontend/admin.zip +0 -0
- {django_cfg-1.4.107.dist-info → django_cfg-1.4.109.dist-info}/METADATA +3 -3
- {django_cfg-1.4.107.dist-info → django_cfg-1.4.109.dist-info}/RECORD +70 -117
- django_cfg/apps/tasks/admin/actions.py +0 -29
- django_cfg/apps/tasks/admin/tasks_admin.py +0 -154
- django_cfg/apps/tasks/api/serializers.py +0 -82
- django_cfg/apps/tasks/api/views.py +0 -571
- django_cfg/apps/tasks/serializers.py +0 -82
- django_cfg/apps/tasks/static/tasks/css/dashboard-alpine.css +0 -299
- django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -120
- django_cfg/apps/tasks/static/tasks/js/alpine/README.md +0 -47
- django_cfg/apps/tasks/static/tasks/js/alpine/actions/index.js +0 -8
- django_cfg/apps/tasks/static/tasks/js/alpine/actions/management.js +0 -123
- django_cfg/apps/tasks/static/tasks/js/alpine/actions/pagination.js +0 -21
- django_cfg/apps/tasks/static/tasks/js/alpine/actions/tasks.js +0 -101
- django_cfg/apps/tasks/static/tasks/js/alpine/actions/workers.js +0 -59
- django_cfg/apps/tasks/static/tasks/js/alpine/computed.js +0 -35
- django_cfg/apps/tasks/static/tasks/js/alpine/index.js +0 -148
- django_cfg/apps/tasks/static/tasks/js/alpine/loaders/index.js +0 -36
- django_cfg/apps/tasks/static/tasks/js/alpine/loaders/overview.js +0 -37
- django_cfg/apps/tasks/static/tasks/js/alpine/loaders/queues.js +0 -27
- django_cfg/apps/tasks/static/tasks/js/alpine/loaders/tasks.js +0 -32
- django_cfg/apps/tasks/static/tasks/js/alpine/loaders/workers.js +0 -21
- django_cfg/apps/tasks/static/tasks/js/alpine/state.js +0 -36
- django_cfg/apps/tasks/static/tasks/js/alpine/utils/formatters.js +0 -42
- django_cfg/apps/tasks/static/tasks/js/alpine/utils/helpers.js +0 -68
- django_cfg/apps/tasks/static/tasks/js/dashboard-alpine.js +0 -725
- django_cfg/apps/tasks/tasks/__init__.py +0 -10
- django_cfg/apps/tasks/tasks/demo_tasks.py +0 -127
- django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -71
- django_cfg/apps/tasks/templates/tasks/components/overview_content.html +0 -94
- django_cfg/apps/tasks/templates/tasks/components/queues_content.html +0 -44
- django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -45
- django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -151
- django_cfg/apps/tasks/templates/tasks/components/tasks_content.html +0 -61
- django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html +0 -269
- django_cfg/apps/tasks/templates/tasks/components/workers_content.html +0 -60
- django_cfg/apps/tasks/templates/tasks/layout/base.html +0 -20
- django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html +0 -168
- django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +0 -77
- django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html +0 -40
- django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html +0 -40
- django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html +0 -86
- django_cfg/apps/tasks/templates/tasks/widgets/task_table.html +0 -90
- django_cfg/apps/tasks/urls_admin.py +0 -15
- django_cfg/apps/tasks/utils/__init__.py +0 -1
- django_cfg/apps/tasks/utils/simulator.py +0 -353
- django_cfg/apps/tasks/views/api.py +0 -571
- django_cfg/apps/tasks/views/dashboard.py +0 -89
- django_cfg/management/commands/rundramatiq.py +0 -24
- django_cfg/management/commands/rundramatiq_simulator.py +0 -22
- django_cfg/management/commands/task_clear.py +0 -25
- django_cfg/management/commands/task_status.py +0 -24
- django_cfg/modules/django_client/system/__init__.py +0 -24
- django_cfg/modules/django_client/system/base_generator.py +0 -123
- django_cfg/modules/django_client/system/generate_mjs_clients.py +0 -176
- django_cfg/modules/django_client/system/mjs_generator.py +0 -219
- django_cfg/modules/django_client/system/schema_parser.py +0 -199
- django_cfg/modules/django_client/system/templates/api_client.js.j2 +0 -87
- django_cfg/modules/django_client/system/templates/app_index.js.j2 +0 -13
- django_cfg/modules/django_client/system/templates/base_client.js.j2 +0 -166
- django_cfg/modules/django_client/system/templates/main_index.js.j2 +0 -80
- django_cfg/modules/django_client/system/templates/types.js.j2 +0 -24
- django_cfg/modules/django_tasks/__init__.py +0 -29
- django_cfg/modules/django_tasks/dramatiq_setup.py +0 -20
- django_cfg/modules/django_tasks/factory.py +0 -127
- django_cfg/modules/django_tasks/management/commands/__init__.py +0 -0
- django_cfg/modules/django_tasks/management/commands/rundramatiq.py +0 -253
- django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +0 -436
- django_cfg/modules/django_tasks/management/commands/task_clear.py +0 -226
- django_cfg/modules/django_tasks/management/commands/task_status.py +0 -257
- django_cfg/modules/django_tasks/service.py +0 -281
- django_cfg/modules/django_tasks/settings.py +0 -107
- /django_cfg/{modules/django_tasks/management → apps/tasks/migrations}/__init__.py +0 -0
- {django_cfg-1.4.107.dist-info → django_cfg-1.4.109.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.107.dist-info → django_cfg-1.4.109.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.107.dist-info → django_cfg-1.4.109.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
django_cfg/__init__.py,sha256=
|
|
2
|
+
django_cfg/__init__.py,sha256=fOg2eKyhb6AAON0Y5yU5AoTiDjb3u-C0JommQ8cTqgg,1621
|
|
3
3
|
django_cfg/apps.py,sha256=72m3uuvyqGiLx6gOfE-BD3P61jddCCERuBOYpxTX518,1605
|
|
4
4
|
django_cfg/config.py,sha256=y4Z3rnYsHBE0TehpwAIPaxr---mkvyKrZGGsNwYso74,1398
|
|
5
5
|
django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
|
|
6
|
-
django_cfg/apps/urls.py,sha256=
|
|
6
|
+
django_cfg/apps/urls.py,sha256=oUmBXmhZp6BwXUs8R_H9rYWskbpVTs1wQDqyGfMnIt4,6693
|
|
7
7
|
django_cfg/apps/accounts/README.md,sha256=YkUYJ3iKMYTmm9ALK2PDnX75SDqZxgnkzNLCD5efxRs,8227
|
|
8
8
|
django_cfg/apps/accounts/__init__.py,sha256=I9pq6H5oOFv59Du0VP-g7KsAUDhjKeUcP0spMvhtIjk,99
|
|
9
9
|
django_cfg/apps/accounts/__models.py,sha256=fYhobXbGIYKnG4mZ_pwNePei8O-SHHqgBMhe6qhH3KQ,10075
|
|
@@ -56,7 +56,7 @@ django_cfg/apps/accounts/templates/emails/welcome_email.txt,sha256=jVIr4O9_jOOSU
|
|
|
56
56
|
django_cfg/apps/accounts/utils/notifications.py,sha256=6ex83E3Gm9t1qwWePxfFRhmoZDIXOLPT4_UfKoYYmjU,16875
|
|
57
57
|
django_cfg/apps/accounts/views/__init__.py,sha256=rSrlJyZH8hXdURzwil49M7iJ_zmWHPAxPrezRDPbrBw,239
|
|
58
58
|
django_cfg/apps/accounts/views/otp.py,sha256=PVAQYCEuAKo-kPVAFvgvehjJN5G7PWZP3LHBPj2EkTw,6798
|
|
59
|
-
django_cfg/apps/accounts/views/profile.py,sha256=
|
|
59
|
+
django_cfg/apps/accounts/views/profile.py,sha256=4MHrhF9q4vyHQen1IaC2BGRiPpfNc7w9BgBbRZcvWnY,5589
|
|
60
60
|
django_cfg/apps/accounts/views/webhook.py,sha256=F1Xtz_5hQXiMNCdVmwCz11WXwbXuM70dqXWTO6PftXc,10334
|
|
61
61
|
django_cfg/apps/agents/README.md,sha256=CTK46bM6AgxoV8AkoH_t6HkGI6OUduL0oqrseQTCFeQ,3077
|
|
62
62
|
django_cfg/apps/agents/__init__.py,sha256=GOtWo1RGWMrRmYKdjZFk5VTl5umuPz-kdypDvQML9fc,2003
|
|
@@ -190,9 +190,9 @@ django_cfg/apps/centrifugo/services/client/client.py,sha256=2WhzoYr__DP0eH70f4M3
|
|
|
190
190
|
django_cfg/apps/centrifugo/services/client/config.py,sha256=udkAhLCq1J0GSCupta9N3LwAdSa1mGkZid1GFVjsc00,6952
|
|
191
191
|
django_cfg/apps/centrifugo/services/client/exceptions.py,sha256=VsYExbk_H-qOaPa3iFUWBa1HMgw1IObil73JI1FhcDM,6263
|
|
192
192
|
django_cfg/apps/centrifugo/views/__init__.py,sha256=QdYKO9AY6t-2bwwy78Kw1mAOpe-t3ZZX1KSs5NmrE8I,304
|
|
193
|
-
django_cfg/apps/centrifugo/views/admin_api.py,sha256=
|
|
194
|
-
django_cfg/apps/centrifugo/views/monitoring.py,sha256=
|
|
195
|
-
django_cfg/apps/centrifugo/views/testing_api.py,sha256=
|
|
193
|
+
django_cfg/apps/centrifugo/views/admin_api.py,sha256=ECD7W7v0o6cvo4OShZ0K5OgluNxKqReRcNn9aIZjcg4,13888
|
|
194
|
+
django_cfg/apps/centrifugo/views/monitoring.py,sha256=TPudsIR4fnGp2w9RteH6Tm8ckXr-FQN5q9-AjD4g9fw,14416
|
|
195
|
+
django_cfg/apps/centrifugo/views/testing_api.py,sha256=sNBmYoRD7VBXZmoHEw9BmPbDa0BA5mnVZg6asqgKb8Y,16868
|
|
196
196
|
django_cfg/apps/dashboard/__init__.py,sha256=TirqQji7p39fA15jGBswWSt6ML2K1SP96Iq-7Sw7NFI,236
|
|
197
197
|
django_cfg/apps/dashboard/apps.py,sha256=OvB_C5qTq-QcLvvrRpbBxJPL-DCtA-pGVK8ir2y-hKk,508
|
|
198
198
|
django_cfg/apps/dashboard/permissions.py,sha256=LJGza0pjVfoR2rQjKYZWnkgGcyzSHr43RMYiCibrokQ,1360
|
|
@@ -213,15 +213,15 @@ django_cfg/apps/dashboard/services/commands_security.py,sha256=kFADVoYNbqb2DwzFf
|
|
|
213
213
|
django_cfg/apps/dashboard/services/commands_service.py,sha256=OnvZBUv2GDUWq3JA3UVrHu-gMc2eJm0-MT_WTdM27uk,11644
|
|
214
214
|
django_cfg/apps/dashboard/services/overview_service.py,sha256=Dl_y89_waG9onDC9PHGWx0ci7m3NOdrMoEKSdv3Fves,6382
|
|
215
215
|
django_cfg/apps/dashboard/services/statistics_service.py,sha256=cX20DB0VrjDLaaLCp8YQUcBw_N34VzZKqY4Ly2Qal0M,14023
|
|
216
|
-
django_cfg/apps/dashboard/services/system_health_service.py,sha256=
|
|
216
|
+
django_cfg/apps/dashboard/services/system_health_service.py,sha256=NUTmZrqc9ifQqwRcD54zGQb5Hrv63pvTj6QsYeYeLvI,9406
|
|
217
217
|
django_cfg/apps/dashboard/views/__init__.py,sha256=tgsvzkwnIr3bL35LOpZl8o-2aRLFSKbjfRFMqhZUPjA,561
|
|
218
|
-
django_cfg/apps/dashboard/views/activity_views.py,sha256=
|
|
219
|
-
django_cfg/apps/dashboard/views/apizones_views.py,sha256=
|
|
220
|
-
django_cfg/apps/dashboard/views/charts_views.py,sha256=
|
|
218
|
+
django_cfg/apps/dashboard/views/activity_views.py,sha256=UsGTnFABCJdZZID8kmG2J6grVRx18G9xSKfl7nKVz3w,2797
|
|
219
|
+
django_cfg/apps/dashboard/views/apizones_views.py,sha256=FtEEeNQD7aFBejmuTfdtjvRCLwCJyjD7AWDR1ouBo2k,2329
|
|
220
|
+
django_cfg/apps/dashboard/views/charts_views.py,sha256=XDV3lTfoP65UuW_HIgNnp_80k35DVcicXXPLzIB6neU,5514
|
|
221
221
|
django_cfg/apps/dashboard/views/commands_views.py,sha256=eJw3U4CtLUMZn2YdENr3HwhzHcqygo8HW92vjRg1sYQ,6099
|
|
222
|
-
django_cfg/apps/dashboard/views/overview_views.py,sha256=
|
|
223
|
-
django_cfg/apps/dashboard/views/statistics_views.py,sha256=
|
|
224
|
-
django_cfg/apps/dashboard/views/system_views.py,sha256=
|
|
222
|
+
django_cfg/apps/dashboard/views/overview_views.py,sha256=sCGldHXoW-lgGSfFiAY9BNTBSmHiQznPlrlj_duoJDg,3093
|
|
223
|
+
django_cfg/apps/dashboard/views/statistics_views.py,sha256=CISWM8A5lkIqTK2dWifTBJD4RdFI9Hu-_RCFl3kMoiA,3511
|
|
224
|
+
django_cfg/apps/dashboard/views/system_views.py,sha256=PSEGZuHhexgBiKVOlrNlDV9_t2kEwS2arBT8h2KFxds,2459
|
|
225
225
|
django_cfg/apps/frontend/JWT_AUTO_INJECTION.md,sha256=vw4M49mijxjd1ANlumPbye3d2XIaYuc_3jYRbmWsb-8,8018
|
|
226
226
|
django_cfg/apps/frontend/__init__.py,sha256=QMFJM9mpjiPcU0e5EnuLZb6xpCWi3cbSnihyPS9U2Ik,394
|
|
227
227
|
django_cfg/apps/frontend/apps.py,sha256=9eEK0Tq2nOsol7xSK5aobdwTDJTJrWx6Iy1I1DQb_Yk,391
|
|
@@ -231,8 +231,8 @@ django_cfg/apps/frontend/urls.py,sha256=Vz22_2i2w1J0KQYDCxHnTF5rUf32kUUSBDJZrP07
|
|
|
231
231
|
django_cfg/apps/frontend/views.py,sha256=JPTJRPCGY3zLLiiz1F9CsZiLkXbQ5RfnViJZzBUpV7o,15023
|
|
232
232
|
django_cfg/apps/frontend/templates/frontend/404.html,sha256=LCFig_dcgDDmYKhgOLu8R2KDs_aQS6Es6rAxLTAEXWs,2175
|
|
233
233
|
django_cfg/apps/knowbase/README.md,sha256=HXt_J6WCN-LsMhA7p9mdvih07_vp_r_hkPdmqHhNEeo,3965
|
|
234
|
-
django_cfg/apps/knowbase/__init__.py,sha256=
|
|
235
|
-
django_cfg/apps/knowbase/apps.py,sha256=
|
|
234
|
+
django_cfg/apps/knowbase/__init__.py,sha256=XLhl7_wweUm1nqmA_xVlPxiCSuARxtCro-uY41JFQgs,1039
|
|
235
|
+
django_cfg/apps/knowbase/apps.py,sha256=Y1n4ZoEP5oL-lDGLNRHtxhPClEcBElMX8iXFFS4OsPE,3052
|
|
236
236
|
django_cfg/apps/knowbase/urls.py,sha256=r5Ak_fp1bWpW01hcstZsJK5F9RhuRFyhR6bUmuoJOA4,643
|
|
237
237
|
django_cfg/apps/knowbase/urls_admin.py,sha256=fu6KG-nat8ay7buB8t255-Ye_5uiQYibZ1NzhNiyvtg,640
|
|
238
238
|
django_cfg/apps/knowbase/urls_system.py,sha256=ZW7TOf_7Svt5V-83EBiN9qnm1Y4fQE5YspYRkAJFyVA,736
|
|
@@ -340,7 +340,7 @@ django_cfg/apps/knowbase/utils/text_processing.py,sha256=t2PZn6roWd51oYMny0Q23Dp
|
|
|
340
340
|
django_cfg/apps/knowbase/utils/validation.py,sha256=pubQwxNayuVvgybMuLdz0roSzMLKfHX-pMEwhuIa1uk,2452
|
|
341
341
|
django_cfg/apps/knowbase/views/__init__.py,sha256=y0PbF5HnFVri6oWv59mMcJl3laMbOS2xSJzfc5DUuNI,493
|
|
342
342
|
django_cfg/apps/knowbase/views/archive_views.py,sha256=r8HguQY7GNo49tFxTPbntxyJvIqSXuO59A21oXU-qEc,17176
|
|
343
|
-
django_cfg/apps/knowbase/views/base.py,sha256=
|
|
343
|
+
django_cfg/apps/knowbase/views/base.py,sha256=9w6pnAWanEM1gipvADksF9o5jSVwzgStkDNqFW8shxc,1601
|
|
344
344
|
django_cfg/apps/knowbase/views/chat_views.py,sha256=UqRAo128dt03eSTU6d86GybTbEaYMWVVrZR1xROd7Ik,6793
|
|
345
345
|
django_cfg/apps/knowbase/views/document_views.py,sha256=k4sAPAqgqGA1O-pZvZpAPwp-c57WXkZOXB9DAH9iyuk,6477
|
|
346
346
|
django_cfg/apps/knowbase/views/public_views.py,sha256=0g__UAu7pJ1bQGXiNT3dfpo3EyxW2HyaJscGv_N324o,4508
|
|
@@ -495,66 +495,41 @@ django_cfg/apps/support/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
|
|
|
495
495
|
django_cfg/apps/support/utils/support_email_service.py,sha256=x-RtNym5uqvILnmktR4UUK5QLv1edhehPf1Swj-K8A0,4943
|
|
496
496
|
django_cfg/apps/support/views/__init__.py,sha256=0-6pYFqa2aDioxVImPt_-HHe4z_2x6N1SMf9Kw7Ooc0,447
|
|
497
497
|
django_cfg/apps/support/views/admin.py,sha256=3bofdyoFWPhip0kia7WTFW_4y4-2FtOraOQSMElaemA,1585
|
|
498
|
-
django_cfg/apps/support/views/api.py,sha256=
|
|
498
|
+
django_cfg/apps/support/views/api.py,sha256=8hHY-j6EZpSdYkT6JA8_yo7LJKPpSon3DVNWl6jfGRw,5506
|
|
499
499
|
django_cfg/apps/support/views/chat.py,sha256=wbWR_UgvdgYBYlhHJBLJRPpVm7V44bNy5NZWHqBx2AE,3255
|
|
500
|
-
django_cfg/apps/tasks/__init__.py,sha256=
|
|
501
|
-
django_cfg/apps/tasks/apps.py,sha256=
|
|
502
|
-
django_cfg/apps/tasks/
|
|
503
|
-
django_cfg/apps/tasks/
|
|
504
|
-
django_cfg/apps/tasks/
|
|
505
|
-
django_cfg/apps/tasks/admin/
|
|
506
|
-
django_cfg/apps/tasks/
|
|
507
|
-
django_cfg/apps/tasks/
|
|
508
|
-
django_cfg/apps/tasks/
|
|
509
|
-
django_cfg/apps/tasks/
|
|
510
|
-
django_cfg/apps/tasks/
|
|
511
|
-
django_cfg/apps/tasks/
|
|
512
|
-
django_cfg/apps/tasks/
|
|
513
|
-
django_cfg/apps/tasks/
|
|
514
|
-
django_cfg/apps/tasks/
|
|
515
|
-
django_cfg/apps/tasks/
|
|
516
|
-
django_cfg/apps/tasks/
|
|
517
|
-
django_cfg/apps/tasks/
|
|
518
|
-
django_cfg/apps/tasks/
|
|
519
|
-
django_cfg/apps/tasks/
|
|
520
|
-
django_cfg/apps/tasks/
|
|
521
|
-
django_cfg/apps/tasks/
|
|
522
|
-
django_cfg/apps/tasks/
|
|
523
|
-
django_cfg/apps/tasks/
|
|
524
|
-
django_cfg/apps/tasks/
|
|
525
|
-
django_cfg/apps/tasks/
|
|
526
|
-
django_cfg/apps/tasks/static/tasks/js/alpine/loaders/workers.js,sha256=slDkfrOhphb39ENEqo9eUkXMnBNRuuN5QZALxCcY1HM,651
|
|
527
|
-
django_cfg/apps/tasks/static/tasks/js/alpine/utils/formatters.js,sha256=ImJ_5R0hSTpoKcz6_Rnb3hlcErLzN20RUPEuYgo3CCQ,893
|
|
528
|
-
django_cfg/apps/tasks/static/tasks/js/alpine/utils/helpers.js,sha256=uFxWWCexZwpyCRqxNBt8fwPYfMjP6RHX11Xp2jSks0g,1687
|
|
529
|
-
django_cfg/apps/tasks/tasks/__init__.py,sha256=leHz5YglzX8Crk3vQvpmOysSwDNkVOjK9ibH5FON3uQ,229
|
|
530
|
-
django_cfg/apps/tasks/tasks/demo_tasks.py,sha256=nd5KxNjNeuzKQnBKq-_yfZ050__OktiEtaV80mR0CZI,4451
|
|
531
|
-
django_cfg/apps/tasks/templates/tasks/components/management_actions.html,sha256=WWK-m-I03XmMlCo8f2z9SQtXoqgUzDr21E6ALxgwhko,4330
|
|
532
|
-
django_cfg/apps/tasks/templates/tasks/components/overview_content.html,sha256=pKe1KbBcLETQfydSRdfGZLlWpHVGHt8U_zgFNMofbic,5065
|
|
533
|
-
django_cfg/apps/tasks/templates/tasks/components/queues_content.html,sha256=NDmOh1l52UajC0vc9NQ4brA15t7wQ70uXXPZXVS1AkY,2370
|
|
534
|
-
django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html,sha256=_Zl5PgKOIh8lUU1lFyXTL3EVknfzScGltDHwL0HW614,3141
|
|
535
|
-
django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html,sha256=x6LdkWSKKPVtw4NartiIzEtnXtl-o2Kf5NwWE9oWfs0,9664
|
|
536
|
-
django_cfg/apps/tasks/templates/tasks/components/tasks_content.html,sha256=zCa2R7Xh_dzLDHIj3T1fRLhGwsxvi-MU12R0eByXphY,3070
|
|
537
|
-
django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html,sha256=uXBhajnDQzxGYY6nxbuWWD6nElAAVrolAb7KrD1yr5g,8718
|
|
538
|
-
django_cfg/apps/tasks/templates/tasks/components/workers_content.html,sha256=okA_LvhSSHnBmYwpenLakI5k_haWBo57_uCItTqJxC4,3299
|
|
539
|
-
django_cfg/apps/tasks/templates/tasks/layout/base.html,sha256=BI50z3QkGRAIR_HJg_U9l34E2-3-zrVOC36pk-S4Nv0,689
|
|
540
|
-
django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html,sha256=qhiDZjKUazA5Mzqt_Vg1Iap6JybYZrJa6D3_NIzpLbk,5313
|
|
541
|
-
django_cfg/apps/tasks/templates/tasks/pages/dashboard.html,sha256=7DbczXKnscJ0082bFYqTYCTBvaF2GBrJiLTTn-aj-bs,2349
|
|
542
|
-
django_cfg/apps/tasks/templates/tasks/partials/task_row_template.html,sha256=9XxjxDrveeR4ZE5hop0PsIA31hYyq-mVL1HBY54uu1c,1897
|
|
543
|
-
django_cfg/apps/tasks/templates/tasks/widgets/task_filters.html,sha256=5md0X43X9EH3lnzOK7QN14KMVJVWBy0WZ9FGXNnEAT8,2090
|
|
544
|
-
django_cfg/apps/tasks/templates/tasks/widgets/task_footer.html,sha256=CpXwOG_ZScT6TUp8cmrr274Qm1xHV6a2ySgpjDYv5Ls,5273
|
|
545
|
-
django_cfg/apps/tasks/templates/tasks/widgets/task_table.html,sha256=QqVYAX10NFF38grz9zwwgp4FFDmUC-rhCCB0f3tIzss,4985
|
|
546
|
-
django_cfg/apps/tasks/utils/__init__.py,sha256=42NlvFq4SYQ5ZEWUVvyU3A1_bQfYEn-m7VXeNus_X8s,18
|
|
547
|
-
django_cfg/apps/tasks/utils/simulator.py,sha256=p-wcVDyI-EfqdjkNAHv8j06uXCoi5xc5s5wThtO9Dhk,13046
|
|
548
|
-
django_cfg/apps/tasks/views/__init__.py,sha256=hQrAc5ZnJCxr3vSzF-txnpS3FDeaX-4bBVI-I21fCHw,344
|
|
549
|
-
django_cfg/apps/tasks/views/api.py,sha256=hd6ficsmljDMrEtWyCMJIP2Op-RdMaRNyesEo-HWwB4,21870
|
|
550
|
-
django_cfg/apps/tasks/views/dashboard.py,sha256=WmmbRMxpEw8-67tDWQv-Vy7vipm0FX1eIVGzuZ6FxMo,2474
|
|
500
|
+
django_cfg/apps/tasks/__init__.py,sha256=_k1_FJbPDmsKGXgaL6oFvZKj31u3uItDBR53kTUiuLM,1932
|
|
501
|
+
django_cfg/apps/tasks/apps.py,sha256=jcl4NO8t37_RNHyaCh2GJXXlZqYIMLwpiAY26lnMO8M,459
|
|
502
|
+
django_cfg/apps/tasks/urls.py,sha256=4KA6on-Hii-4mQLJaSQ58iPrYBZL4apSsvksLbyhzWU,344
|
|
503
|
+
django_cfg/apps/tasks/admin/__init__.py,sha256=h4Hx8VGvbohLLS6nt0OFE7mi0JBx1pHA0lbjjcaXPgU,106
|
|
504
|
+
django_cfg/apps/tasks/admin/config.py,sha256=SZ4gh2omc5sPEa3VLz7ewUjV-_O4qPFgHe_e0AkEm9c,2161
|
|
505
|
+
django_cfg/apps/tasks/admin/task_log.py,sha256=H7gv8k7J_1rd31jmbMU6TKuDkzH_mx2beNbju--VycQ,8255
|
|
506
|
+
django_cfg/apps/tasks/filters/__init__.py,sha256=9H6dh9ryI_zJ0_tPENjsSS2V3Mx8MMcWze8hyHokfhc,151
|
|
507
|
+
django_cfg/apps/tasks/filters/task_log.py,sha256=BY67R3jyzHR6XdhNty8gjGmLTC5VDTx2_tGeGODOJXE,4929
|
|
508
|
+
django_cfg/apps/tasks/migrations/0001_initial.py,sha256=dVbEPP7umgjsJsubxaTYsrDq7dvwv2xf6_K8hfju-lE,7367
|
|
509
|
+
django_cfg/apps/tasks/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
510
|
+
django_cfg/apps/tasks/models/__init__.py,sha256=4tvTev7IYkcjBrll3eLUFLJCDNlyG9c_863qoe_Fzu0,72
|
|
511
|
+
django_cfg/apps/tasks/models/task_log.py,sha256=PxcQ7D3LNwQPy9IYLaBYL08buMHeakbmmXyr4Vgaqa0,7967
|
|
512
|
+
django_cfg/apps/tasks/serializers/__init__.py,sha256=VcsKMRI4fOE1zajh-IOC0X5NwK2e5ytFh18w-43lXl0,675
|
|
513
|
+
django_cfg/apps/tasks/serializers/task_log.py,sha256=XEjWsnojxN2j55PYyoDw1KfXhb_-Ng8VnCeSJJDaL8w,7777
|
|
514
|
+
django_cfg/apps/tasks/services/__init__.py,sha256=VRFnirt868_jFvCzvLD3vLNa2HFi4zqFQFXQG9Nm4Kg,268
|
|
515
|
+
django_cfg/apps/tasks/services/config_helper.py,sha256=-Iv7EK1fNAydlk6IzvOFvk4TRBBp9IngYBt7tmansRI,1447
|
|
516
|
+
django_cfg/apps/tasks/services/sync.py,sha256=wA-gRvqRsElfdP9XD6PosQIwOOJQwy6dUtQbIlb2W2o,5783
|
|
517
|
+
django_cfg/apps/tasks/services/client/__init__.py,sha256=pQ6eJPbdj8P9q7qq4XcxtAgEisXjVrT1KTdoqHI5zMI,135
|
|
518
|
+
django_cfg/apps/tasks/services/client/client.py,sha256=je4j4Yw0v3fR1PijajoAptAbP7Zx06yAykV21MxAMlQ,6437
|
|
519
|
+
django_cfg/apps/tasks/views/__init__.py,sha256=nfwn_GtoZ-H83YeL2BvhWYn9VdBjPM3QiNIivzLiKUw,151
|
|
520
|
+
django_cfg/apps/tasks/views/task_log.py,sha256=cyywdhBaLgEFpwc9YaxQSU7or1whSTfDnXA7l8P5iq8,1312
|
|
521
|
+
django_cfg/apps/tasks/views/task_log_base.py,sha256=MJ1UzSpYzV75KyQBVSUHyQ0ejYe91h3douXt2osCPf8,1499
|
|
522
|
+
django_cfg/apps/tasks/views/task_log_overview.py,sha256=ch7nPu6k9JCDOUh7Z8TQXGrqLGT1X6m-n9HhHFF32yY,3291
|
|
523
|
+
django_cfg/apps/tasks/views/task_log_related.py,sha256=mXtDfzfkNpNc2vYPKRV9zNGlsOPV2MOx-xwj1-a6yik,1194
|
|
524
|
+
django_cfg/apps/tasks/views/task_log_stats.py,sha256=UhoXFmIsb6utWIuighLuPnFjWcz0BPbkKCCfvHYJyrQ,3046
|
|
525
|
+
django_cfg/apps/tasks/views/task_log_timeline.py,sha256=8tTAGNAbKseLmljx6SSr-ATDHuvnUZYQlcG51Wk73fs,2710
|
|
551
526
|
django_cfg/cli/README.md,sha256=-fZmNv8OUc1OAwwiDnhkUmhTVhEEXX7CXwJQlSRwgQ8,2118
|
|
552
527
|
django_cfg/cli/__init__.py,sha256=i3ksFngCqZCBvaimQcBD1P2_gr5PiM--4efLScCjvvU,152
|
|
553
528
|
django_cfg/cli/main.py,sha256=GOmMubPoMpcA0XcRJn4VG2cX9tuhE0i_ioy_d3ujzRQ,883
|
|
554
|
-
django_cfg/cli/utils.py,sha256=
|
|
529
|
+
django_cfg/cli/utils.py,sha256=_R713bZ181qIXP0-nik3FXLsTcWRA9i_S7eEIqDiOa4,5648
|
|
555
530
|
django_cfg/cli/commands/__init__.py,sha256=EKLXDAx-QttnGmdjsmVANAfhxWplxl2V_2I0SZaJOoI,98
|
|
556
531
|
django_cfg/cli/commands/create_project.py,sha256=cENwRIG7zX_95lY7Kt_xKGULZWqfwni5HcL66JALBeM,7576
|
|
557
|
-
django_cfg/cli/commands/info.py,sha256=
|
|
532
|
+
django_cfg/cli/commands/info.py,sha256=JNLt9gUTZopR-D7FUDIeEyOQR9-2LTpHntHi_h-7Mho,4794
|
|
558
533
|
django_cfg/core/__init__.py,sha256=bZ3hgN9SX6l3DXEN-cMyOGwwXMu4UFkWyR0ds_yEnVs,1784
|
|
559
534
|
django_cfg/core/config.py,sha256=0xwXf0cPiRGM8paUPXjECHdYqwuRLy4WkunavWl9Igw,679
|
|
560
535
|
django_cfg/core/constants.py,sha256=ool-h1MXDtgRKj8-e8aYcM6XY_Uzy1dgx-xLy0gsk10,2686
|
|
@@ -563,9 +538,9 @@ django_cfg/core/validation.py,sha256=QmwGlNDa0MFG2OUmgykIUAaEotT55YNh-wAWSVxOAos
|
|
|
563
538
|
django_cfg/core/backends/__init__.py,sha256=5Qfza7oKQ8_UIHOs4ibhYvwtgAjngUqLrlwjKl_q124,38
|
|
564
539
|
django_cfg/core/backends/smtp.py,sha256=kWkNMG7UwLsHcFYSKRgrk1HbP9mU1fxzWYnalHXqoL8,2308
|
|
565
540
|
django_cfg/core/base/__init__.py,sha256=Z3bZvxejxk4vvWqmqTBLUi9XJpo6A_5Bq4R0J8q81Y4,116
|
|
566
|
-
django_cfg/core/base/config_model.py,sha256=
|
|
541
|
+
django_cfg/core/base/config_model.py,sha256=xaiLLBEH3MgQ2uIcahYz7WGYbdrFUAuTSrPfBZ2yqtE,21136
|
|
567
542
|
django_cfg/core/builders/__init__.py,sha256=jkInI7_jbxcjitapohw6QmbJPpacnnID6V1JovqtOFM,282
|
|
568
|
-
django_cfg/core/builders/apps_builder.py,sha256=
|
|
543
|
+
django_cfg/core/builders/apps_builder.py,sha256=Bud1KkBnUblbbYvCyT46eYJ-HA_hbG636KC8j2SIOuA,6497
|
|
569
544
|
django_cfg/core/builders/middleware_builder.py,sha256=OwqQRoJKYWlXsQNPFBfUvVMYdppUHCPw-UDczV_esYg,3101
|
|
570
545
|
django_cfg/core/builders/security_builder.py,sha256=W8Lk9eTMi3PuNK5qH-BIHegeE0cbvmuHKTumLcwOAh8,23961
|
|
571
546
|
django_cfg/core/environment/__init__.py,sha256=sMOIe9z1i51j8B1VGjpLHJMaeDsBfsgn1TmL03FIeNo,141
|
|
@@ -581,14 +556,14 @@ django_cfg/core/generation/core_generators/templates.py,sha256=XeGKzF790_zKwFdRw
|
|
|
581
556
|
django_cfg/core/generation/data_generators/__init__.py,sha256=O7cmt_k34hWRgrdaAzCRPudcaowaOwMgaoXmZY8HG54,298
|
|
582
557
|
django_cfg/core/generation/data_generators/cache.py,sha256=bdcbnaDarl_8UQ18gk7bIKrQ9PDZOhpDAVjCEgYVeUU,3840
|
|
583
558
|
django_cfg/core/generation/data_generators/database.py,sha256=mYR2mBvqWU93YP9XUUVlcZaQJtSNeAQ7Dk4Vj6Tu95k,3481
|
|
584
|
-
django_cfg/core/generation/integration_generators/__init__.py,sha256
|
|
559
|
+
django_cfg/core/generation/integration_generators/__init__.py,sha256=LCdlrvM6LDGtvtRYATvRIOYSqBwhqkoThDhfMxWLFiQ,596
|
|
585
560
|
django_cfg/core/generation/integration_generators/api.py,sha256=Xsyu3mYyq9mje8QGNSU0Yp4tLbtF0ckq4lEf_Rj5pLc,11062
|
|
586
561
|
django_cfg/core/generation/integration_generators/sessions.py,sha256=GbRC72Gny4dzj7oTIrbuhYyvhCQBoWI-0GxB8ZHTrEU,1644
|
|
587
562
|
django_cfg/core/generation/integration_generators/tailwind.py,sha256=YgiV5c-l0DDJnMKx6mWcUtH5zyMdewAJXjLDwmHrSuc,1208
|
|
588
|
-
django_cfg/core/generation/integration_generators/tasks.py,sha256=
|
|
563
|
+
django_cfg/core/generation/integration_generators/tasks.py,sha256=fMbuIdjRenuZQ6rfco7imLzDbCdX4WEO1aLslBpxjTQ,2253
|
|
589
564
|
django_cfg/core/generation/integration_generators/third_party.py,sha256=ef3sdpfDIf6B_dRuRjoIYc9rlqMYoKgTH4luFvjy9UM,3971
|
|
590
565
|
django_cfg/core/generation/security_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
591
|
-
django_cfg/core/generation/security_generators/crypto_fields.py,sha256=
|
|
566
|
+
django_cfg/core/generation/security_generators/crypto_fields.py,sha256=CCNP4UxsSXMTRhB83KqAvtOyEGXb9qpooFg-gXwngYY,1980
|
|
592
567
|
django_cfg/core/generation/utility_generators/__init__.py,sha256=6zbvaE2g8p42w0jHFeFHyIyPsDuoCuyeKm-Z74msmpo,593
|
|
593
568
|
django_cfg/core/generation/utility_generators/email.py,sha256=444q8uMmvLdubjwqmTWGTBQcyHwMMhIZ4XNCsto3-Ak,1236
|
|
594
569
|
django_cfg/core/generation/utility_generators/i18n.py,sha256=RhAD1Yw_gOHc2CHWWCR3-F-Xf4BUbxWyCEyC80ekW_Y,1533
|
|
@@ -605,7 +580,7 @@ django_cfg/core/integration/version_checker.py,sha256=VJo7CWjNjj_XYE2YqIWGSnxnos
|
|
|
605
580
|
django_cfg/core/integration/display/__init__.py,sha256=8vvW7rdKEnPO9iVMHUazGmVCE0gwClsK10mDz6_FCt0,314
|
|
606
581
|
django_cfg/core/integration/display/base.py,sha256=ElP8XtUGhtQm3LrSrLf-fgESi10G8EKevxku85nWyAU,5541
|
|
607
582
|
django_cfg/core/integration/display/ngrok.py,sha256=IAuZzh1swfQwPl-wadVpooEvAqe085HYrTPSEGgYfr8,5899
|
|
608
|
-
django_cfg/core/integration/display/startup.py,sha256=
|
|
583
|
+
django_cfg/core/integration/display/startup.py,sha256=R2PhEJVBkxCM4SNtycEZZVOzi_64vRuYYqpFAAwGHpw,34688
|
|
609
584
|
django_cfg/core/services/__init__.py,sha256=Eb-F6qqQ-qkep1O-JkaT96IpuxxqtGdT_MIwGXafqSE,117
|
|
610
585
|
django_cfg/core/services/config_service.py,sha256=leo6i6QDq25Bst8PIhBoRVIorPNupLHJub2IwhumAjo,3579
|
|
611
586
|
django_cfg/core/state/__init__.py,sha256=0jAOD0WHpq_W8L5Gh2084D0V5nhb-RAB3t8Akr2SX8M,225
|
|
@@ -625,15 +600,11 @@ django_cfg/management/commands/generate_clients.py,sha256=Ziyo1i9QGFVULPHf1iosp8
|
|
|
625
600
|
django_cfg/management/commands/list_urls.py,sha256=d1JFz0eLGgJqT5hKxsbEyYc7LnyhyQbOof0biE-vukI,10901
|
|
626
601
|
django_cfg/management/commands/migrate_all.py,sha256=mo9tpa4F19hoA0y4Z1x1KMvHfzEG2ux4hkXTq7Q3JMc,5380
|
|
627
602
|
django_cfg/management/commands/migrator.py,sha256=-6CzwrfGbx4DbyxwCvZaTUv2VCfDc1mcUgZwmzhFo-Y,16376
|
|
628
|
-
django_cfg/management/commands/rundramatiq.py,sha256=wr5UzCtF4k8olBwkpqVaj6yrxKbfFrnYweLzN835B84,597
|
|
629
|
-
django_cfg/management/commands/rundramatiq_simulator.py,sha256=CFtSqr-pp5i9NmTApDYL9ahStY16dRaJ5-HOQGeWES0,527
|
|
630
603
|
django_cfg/management/commands/runserver_ngrok.py,sha256=FEkYBkAssUNp9JPbJl6yCxaiM3xuFt12XMV8fA36Pnc,591
|
|
631
604
|
django_cfg/management/commands/script.py,sha256=l7pjYMOiuSCbrR107Gd1LJPlR2SHytLH85MEqUT7VlM,17048
|
|
632
605
|
django_cfg/management/commands/show_config.py,sha256=G40gyZb6R8GklRb55MAEIYaGBYXffaudnlbuZke5cOU,8777
|
|
633
606
|
django_cfg/management/commands/show_urls.py,sha256=oTtx081JprbD0IJLMYrAg05bXxkQ6FMTi6ZemloNHb8,12606
|
|
634
607
|
django_cfg/management/commands/superuser.py,sha256=RDgNyTW1wuEu4kdD-5UX0hv4wwAj2IobdEL-BHjIKBs,9544
|
|
635
|
-
django_cfg/management/commands/task_clear.py,sha256=ZDmYkVfXepINmG18pHD_nXxx7_NykIjdqrVOcew-lQw,608
|
|
636
|
-
django_cfg/management/commands/task_status.py,sha256=tRcZ-_nX6rHTLmgOa8vVu4FYRVY3I7pHY89lAzmj_QI,570
|
|
637
608
|
django_cfg/management/commands/test_email.py,sha256=FpABZAMKuWACkYpQbBWrEXhzkp0ToOlVUDbF47vYnp0,611
|
|
638
609
|
django_cfg/management/commands/test_telegram.py,sha256=aLnGM4oArXhQekNNWoPMU5vu6xU4b6NKEZGy7tRgagQ,570
|
|
639
610
|
django_cfg/management/commands/test_twilio.py,sha256=Wn-vp9pI1gDyl1rmuvzk-s2NSarGaQOsyua53nJG6QI,632
|
|
@@ -646,6 +617,9 @@ django_cfg/middleware/authentication.py,sha256=1deekm3lyAMJ2pK7Usd5q1FtUN1aDq_CG
|
|
|
646
617
|
django_cfg/middleware/pagination.py,sha256=xnaFH1olDH_m4ecwpTTUyFWV6jKoF6IxJvagSZSJR0E,8603
|
|
647
618
|
django_cfg/middleware/public_endpoints.py,sha256=p-VCjeu0k7B4OuQIe2OVUx7Onh9gsM2HweWcYNxEaRA,6775
|
|
648
619
|
django_cfg/middleware/user_activity.py,sha256=bgftHXXeGBS-jCa8mLzTx4Gcz2fHTaQz_nbRCR5Yqio,5980
|
|
620
|
+
django_cfg/mixins/__init__.py,sha256=1IErIlF4QWqt9VLFD8yoTiGWHobsDjLL6rqcEqMLbw4,211
|
|
621
|
+
django_cfg/mixins/admin_api.py,sha256=3GRfAty6YXGbZp4ZFsNFt1Gs_e5T4xBOLnRPoc5vaq0,1116
|
|
622
|
+
django_cfg/mixins/client_api.py,sha256=KeGK_f2xR08l0ckGpMmXHHpVLDQ7SnSbZn4WP5bSsvI,1200
|
|
649
623
|
django_cfg/models/__init__.py,sha256=HNWzUAj19jtNtPMfgnJgcZCrvVWAIIlTMizkm5q8XiA,2762
|
|
650
624
|
django_cfg/models/api/__init__.py,sha256=VWkiYs38A7Tx5ZWePeBxL1lMiXKsonb5TQfoVRRCBac,605
|
|
651
625
|
django_cfg/models/api/config.py,sha256=KzaDn2Ubc7SpZ_8xt6-Q-XxnZbf9Glu1xJhJWbAI--o,4455
|
|
@@ -663,8 +637,8 @@ django_cfg/models/base/config.py,sha256=hfpf35yMR8oOE1J0SBPNNSBwXckK3F2-Iv0Vw6cN
|
|
|
663
637
|
django_cfg/models/base/module.py,sha256=nxN1Y9J4l94kOfSXLQJ2eGgIGWTq8kyh7hUGvCQNyIs,2674
|
|
664
638
|
django_cfg/models/django/__init__.py,sha256=xY_ts1oGmMROXfKHLuERqwG35dQf3EpsZxqj9DcRYwI,397
|
|
665
639
|
django_cfg/models/django/axes.py,sha256=-4nk2gSfpj7lNY5vnm_2jHVLz8VAKoEd9yF2TuCR8O8,5624
|
|
666
|
-
django_cfg/models/django/constance.py,sha256=
|
|
667
|
-
django_cfg/models/django/crypto_fields.py,sha256=
|
|
640
|
+
django_cfg/models/django/constance.py,sha256=6x57bi40mDX0fKcKeQKgV2BO3WIVYPQllAchWsj4KvM,8847
|
|
641
|
+
django_cfg/models/django/crypto_fields.py,sha256=OguITidM4Mp564p_gbsokeNCZxjL9hrK1Vw0McuA3yo,4700
|
|
668
642
|
django_cfg/models/django/environment.py,sha256=lBCHBs1lphv9tlu1BCTfLZeH_kUame0p66A_BIjBY7M,9440
|
|
669
643
|
django_cfg/models/django/openapi.py,sha256=avE3iapaCj8eyOqVUum_v2EExR3V-hwHrexqtXMHtTQ,3739
|
|
670
644
|
django_cfg/models/django/revolution_legacy.py,sha256=Z4SPUS7QSv62EuPAeFFoXGEgqLmdXnVEr7Ofk1IDtVc,8918
|
|
@@ -688,10 +662,10 @@ django_cfg/models/services/__init__.py,sha256=K3mit3rKumqC4XiCUU0BziZC3143j1SM9j
|
|
|
688
662
|
django_cfg/models/services/base.py,sha256=q_QggR8i_6qoiIvbAubddCklpfjVfeLP3Bv2bsdT4BQ,1607
|
|
689
663
|
django_cfg/models/services/email.py,sha256=JigMJaJA26MT_Euc4q_OfmZYJYzaGyHb0JXsNFOS0uY,5119
|
|
690
664
|
django_cfg/models/services/telegram.py,sha256=wrMqOGZCp1KAxRmCn5oxMU0BMBgbzsQD6o0Fi_7kfIY,4810
|
|
691
|
-
django_cfg/models/tasks/__init__.py,sha256=
|
|
692
|
-
django_cfg/models/tasks/backends.py,sha256=
|
|
693
|
-
django_cfg/models/tasks/config.py,sha256=
|
|
694
|
-
django_cfg/models/tasks/utils.py,sha256=
|
|
665
|
+
django_cfg/models/tasks/__init__.py,sha256=1cZH-P022je3FGSaus6kwxSzMAKBLkIetZ8qp4Dy46I,1228
|
|
666
|
+
django_cfg/models/tasks/backends.py,sha256=r5VcuAxyyxqd5grpktEd-0yJNvSJu2jv0IBgrK32ENs,3369
|
|
667
|
+
django_cfg/models/tasks/config.py,sha256=0Tc7O2mVQLc8IYXMm__cdeP0ytYn_NucL2xyA95wyT4,5892
|
|
668
|
+
django_cfg/models/tasks/utils.py,sha256=9TEbdxgd0N_O2T_7GGwkyPeDg4H7tSKLHoHG_n8edqg,4459
|
|
695
669
|
django_cfg/modules/__init__.py,sha256=Ip9WMpzImEwIAywpFwU056_v0O9oIGG7nCT1YSArxkw,316
|
|
696
670
|
django_cfg/modules/base.py,sha256=Grmgxc5dvnAEM1sudWEWO4kv8L0Ks-y32nxTk2vwdjQ,6272
|
|
697
671
|
django_cfg/modules/django_admin/CHANGELOG_CODE_METHODS.md,sha256=HfE_rUlovx1zX_1hkzQsjwghaFvIvUWjZ_Aume8lhIs,3823
|
|
@@ -865,22 +839,12 @@ django_cfg/modules/django_client/core/validation/rules/base.py,sha256=xVJli0eSEz
|
|
|
865
839
|
django_cfg/modules/django_client/core/validation/rules/type_hints.py,sha256=hwjTMADillsTPruDvXZQeZMj4LVV443zxY9o0Gqgg6k,10200
|
|
866
840
|
django_cfg/modules/django_client/management/__init__.py,sha256=mCTPP_bIOmqNnn0WAG2n4BuF6zwc9PTgdZr_dORfNDk,54
|
|
867
841
|
django_cfg/modules/django_client/management/commands/__init__.py,sha256=CJ55pHUNYQ5h-QHUe3axeTtxzlUJv7wbEuZmGN21iCM,36
|
|
868
|
-
django_cfg/modules/django_client/management/commands/generate_client.py,sha256=
|
|
842
|
+
django_cfg/modules/django_client/management/commands/generate_client.py,sha256=bChdPqqgklRV74s3Qr9xC5ZDX2QwYG4n4SFYimkzSXE,31357
|
|
869
843
|
django_cfg/modules/django_client/management/commands/validate_openapi.py,sha256=IBKk7oRP3tMQzXjvZNIgQtMPk3k_mB2diNS7bkaSLz4,11011
|
|
870
844
|
django_cfg/modules/django_client/spectacular/__init__.py,sha256=M8fG-odu2ltkG36aMMr0KDkCKGX676TwdrJO8vky2cI,345
|
|
871
845
|
django_cfg/modules/django_client/spectacular/async_detection.py,sha256=S_pwGR7_2SIWHjZJyiu7SCfySF3Nr3P8eqjDyBSkkLs,5731
|
|
872
846
|
django_cfg/modules/django_client/spectacular/enum_naming.py,sha256=FMJyJiS7nBs-Q9yDs5M0qsNLVX8UJhFgJK9Svo-T2tk,6486
|
|
873
847
|
django_cfg/modules/django_client/spectacular/schema.py,sha256=6oJxoNsSsZLlM2qmKuJGU1sPPyEGr1Xit_xBfLvprHU,1639
|
|
874
|
-
django_cfg/modules/django_client/system/__init__.py,sha256=uDARdYmmJ2yR0pCNaIQpsAPcErvhO7FNYX0CTbow8Y8,622
|
|
875
|
-
django_cfg/modules/django_client/system/base_generator.py,sha256=skEf8_vXz3AeHZqOg_BjqsL1AToPn-RQY0211-ZXncM,4396
|
|
876
|
-
django_cfg/modules/django_client/system/generate_mjs_clients.py,sha256=N8GsRUgrSJ4MaiJ99q5tvYg3K7OStF6VjjZO5J-7woQ,5749
|
|
877
|
-
django_cfg/modules/django_client/system/mjs_generator.py,sha256=c6ktFR8Ipuju3CGPe6NUnlBwiqPrT_ik1ysRsBcd9Nw,7351
|
|
878
|
-
django_cfg/modules/django_client/system/schema_parser.py,sha256=0IzTKcSEWDDe4FkAqNOSWG4MQTbQzg-bAXHOV0v3sZs,7216
|
|
879
|
-
django_cfg/modules/django_client/system/templates/api_client.js.j2,sha256=u3CLl4LVNgGrusuhiY8Q7btWpwkF2ijYxtZmFCsbBfk,2803
|
|
880
|
-
django_cfg/modules/django_client/system/templates/app_index.js.j2,sha256=PPxiIaYw7U5VeMv5bySu3srxFHRBwo5mt1yL-l1SZ_0,387
|
|
881
|
-
django_cfg/modules/django_client/system/templates/base_client.js.j2,sha256=Qjngf8783y47FnQ0ZOvtdFTSF6t-vYqvJaFPJmaTY40,4524
|
|
882
|
-
django_cfg/modules/django_client/system/templates/main_index.js.j2,sha256=rv5uYR4hjZRRCjWGqU_a7UsDbPx-CMu8itKdVBNsLHo,1827
|
|
883
|
-
django_cfg/modules/django_client/system/templates/types.js.j2,sha256=hO6y0WwMOpkd3sMfmu9b2X7I2dyosodI8oW9Y8evhZo,744
|
|
884
848
|
django_cfg/modules/django_currency/README.md,sha256=4R7KtF-rhR6yRg5jbsXwOVXMZNGEpOyW4N3WGN89W7A,4670
|
|
885
849
|
django_cfg/modules/django_currency/__init__.py,sha256=Vm9-KPM7HqK0SM35YHjh2ciJoTYkDz3PR2bod6B2Alg,2490
|
|
886
850
|
django_cfg/modules/django_currency/clients/__init__.py,sha256=bgrd3kJIgY-D80AQfs45pq9QanOkHdLfz2yAKsRnCyY,235
|
|
@@ -984,17 +948,6 @@ django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_to
|
|
|
984
948
|
django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html,sha256=uMr8QDfSJ_48CGjvSCbyclVxEBBwLhh7knFlQ_9vz-E,5704
|
|
985
949
|
django_cfg/modules/django_tailwind/templatetags/__init__.py,sha256=LC6UNzB7KcoLsTIUMaiwb-D1tMCnTBYr3Ppmg9Cho7c,44
|
|
986
950
|
django_cfg/modules/django_tailwind/templatetags/tailwind_info.py,sha256=v1HuLihRYsEtlDQ04UlZWvF3lmu29ttIrWSvkm0qSRM,4530
|
|
987
|
-
django_cfg/modules/django_tasks/__init__.py,sha256=wqiXQtvL8TvkRuXd_e5XuCGnGsmrga_mbvu9yMk-F1Y,671
|
|
988
|
-
django_cfg/modules/django_tasks/dramatiq_setup.py,sha256=0JJ2oO_ppWWM4KSh-2scFYQqNMGknPeKwwSsPIehNYE,548
|
|
989
|
-
django_cfg/modules/django_tasks/factory.py,sha256=GtSCC02R_IwUSFDoGIviMTdxL5RMoXTsce07XTIwn04,4336
|
|
990
|
-
django_cfg/modules/django_tasks/service.py,sha256=3Sht1YA3qo4VslKwFCBuFYO9bTC7D3c84CQFNWGL4Gg,10008
|
|
991
|
-
django_cfg/modules/django_tasks/settings.py,sha256=03QWuBkI0-PQVjvW6W2atOBD9VBPoO-zdh-mZ1IFGVU,3728
|
|
992
|
-
django_cfg/modules/django_tasks/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
993
|
-
django_cfg/modules/django_tasks/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
994
|
-
django_cfg/modules/django_tasks/management/commands/rundramatiq.py,sha256=i8JrUWI5RL2gn8YGmEiPk8wg6WlBasQYRSWtIIdT2nI,9098
|
|
995
|
-
django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py,sha256=OxDoK3BAEK78J364SEiKQj1hqm3JgdtMULbCna7Icng,15402
|
|
996
|
-
django_cfg/modules/django_tasks/management/commands/task_clear.py,sha256=g9ptNweO6tstOGddlWo96gx37A4QtHGm1W8X5aF-HSg,7747
|
|
997
|
-
django_cfg/modules/django_tasks/management/commands/task_status.py,sha256=4YSNpAOvoj6TDjcAd--pmPp2H6bqRJuNbBNpM5Neitw,8897
|
|
998
951
|
django_cfg/modules/django_telegram/__init__.py,sha256=H92RqWPLMiuChlmc0wUtTG4uUvGJjfTyDVd5cVO2yhc,591
|
|
999
952
|
django_cfg/modules/django_telegram/service.py,sha256=oPuz7sW6KetqPFqicq92TWbpICVCMMAKFP4rrPRziTg,14520
|
|
1000
953
|
django_cfg/modules/django_telegram/utils.py,sha256=O8kd7IPzbxr0-ypx3JFmBw1Pc38wX8dYpoieO4w8GJk,1575
|
|
@@ -1022,7 +975,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
|
|
|
1022
975
|
django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
|
|
1023
976
|
django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
|
|
1024
977
|
django_cfg/modules/django_unfold/__init__.py,sha256=Uquez6xgPUIc8FBMP7qif-adRYQSjQ2dBHxnJPom3eQ,1337
|
|
1025
|
-
django_cfg/modules/django_unfold/navigation.py,sha256=
|
|
978
|
+
django_cfg/modules/django_unfold/navigation.py,sha256=MqMA7-sfQpaH3T8V3eI0fJY1gPKd5AVx1eJenqwJWNg,14428
|
|
1026
979
|
django_cfg/modules/django_unfold/system_monitor.py,sha256=KcrTa5irstdB1pDKe3sC0zl4tz9LVjhp7xvbqUM4YVk,6781
|
|
1027
980
|
django_cfg/modules/django_unfold/tailwind.py,sha256=NY8nWcUdQw61oNmjPoPl7agcTb-r5IqcpFYy35MNsTM,9107
|
|
1028
981
|
django_cfg/modules/django_unfold/utils.py,sha256=5aFaceRc9B3eXfpOVyKRD2wWqFt8KcHxjQg54oD7Oyg,4482
|
|
@@ -1039,7 +992,7 @@ django_cfg/modules/nextjs_admin/models/config.py,sha256=75iM81aaTlDQdhfvdlCzj6o9
|
|
|
1039
992
|
django_cfg/modules/nextjs_admin/templatetags/__init__.py,sha256=ChVBnJggCIY8rMhfyJFoA8k0qKo-8FtJknrk54Vx4wM,51
|
|
1040
993
|
django_cfg/modules/nextjs_admin/templatetags/nextjs_admin.py,sha256=aAekrlu3pvvx3I4uJGT3S2ie8QfF94umDBjgAF71EII,4483
|
|
1041
994
|
django_cfg/registry/__init__.py,sha256=CaiL9KwqPzXlIe5-4Qr7PQu5ZxAW1HtuDIXZ7-ktRQg,538
|
|
1042
|
-
django_cfg/registry/core.py,sha256=
|
|
995
|
+
django_cfg/registry/core.py,sha256=muO6Klp4uoZ0yGar6zrZ7PIpPn-kvewXZ-6ZFZlXeAU,3340
|
|
1043
996
|
django_cfg/registry/exceptions.py,sha256=b4pIakeRxhT1-ST3lbAnmAQaASRBARCoah_w6vb3VF0,399
|
|
1044
997
|
django_cfg/registry/modules.py,sha256=DC9veh6DdnqOa_KPNwDhnxvvNKRNF0Um2isHn1XGoxU,1915
|
|
1045
998
|
django_cfg/registry/services.py,sha256=l0V2twGpF9BwVlo-TTfFu8dV7GVBS7XKCsScIZXWWbc,2457
|
|
@@ -1062,7 +1015,7 @@ django_cfg/static/admin/js/alpine/commands-section.js,sha256=8z2MQNwZF9Tx_2EK1AY
|
|
|
1062
1015
|
django_cfg/static/admin/js/alpine/dashboard-tabs.js,sha256=ob8Q_I9lFLDv_hFERXgTyvqMDBspAGfzCxI_7slRur4,1354
|
|
1063
1016
|
django_cfg/static/admin/js/alpine/system-metrics.js,sha256=m-Fg55K_vpHXToD46PXL9twl4OBF_V9MONvbSWbQqDw,440
|
|
1064
1017
|
django_cfg/static/admin/js/alpine/toggle-section.js,sha256=T141NFmy0fRJyGGuuaCJRjJXwPam-xxtQNW1hi8BJbc,672
|
|
1065
|
-
django_cfg/static/frontend/admin.zip,sha256=
|
|
1018
|
+
django_cfg/static/frontend/admin.zip,sha256=MMRlhWT3NGk3_OkD06pRpNI9dskRQshbGdKAeUQdLFQ,7645836
|
|
1066
1019
|
django_cfg/static/js/api-loader.mjs,sha256=boGqqRGnFR-Mzo_RQOjhAzNvsb7QxZddSwMKROzkk9Q,5163
|
|
1067
1020
|
django_cfg/static/js/api/base.mjs,sha256=KUxZHHdELAV8mNnACpwJRvaQhdJxp-n5LFEQ4oUZxBo,4707
|
|
1068
1021
|
django_cfg/static/js/api/index.mjs,sha256=_-Q04jjHcgwi4CGfiaLyiOR6NW7Yu1HBhJWp2J1cjpc,2538
|
|
@@ -1097,9 +1050,9 @@ django_cfg/utils/version_check.py,sha256=WO51J2m2e-wVqWCRwbultEwu3q1lQasV67Mw2aa
|
|
|
1097
1050
|
django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
|
|
1098
1051
|
django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
|
|
1099
1052
|
django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
|
1100
|
-
django_cfg/pyproject.toml,sha256=
|
|
1101
|
-
django_cfg-1.4.
|
|
1102
|
-
django_cfg-1.4.
|
|
1103
|
-
django_cfg-1.4.
|
|
1104
|
-
django_cfg-1.4.
|
|
1105
|
-
django_cfg-1.4.
|
|
1053
|
+
django_cfg/pyproject.toml,sha256=yWqSAdesaQe0xiDRPoQw25Opq0yhKyr1nZM-k058-E4,8614
|
|
1054
|
+
django_cfg-1.4.109.dist-info/METADATA,sha256=Xml6V2JxDfn4DHkJAC0BLkupFncQDqJsON9sROSJvms,23801
|
|
1055
|
+
django_cfg-1.4.109.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
1056
|
+
django_cfg-1.4.109.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
|
|
1057
|
+
django_cfg-1.4.109.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
|
1058
|
+
django_cfg-1.4.109.dist-info/RECORD,,
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Task admin actions.
|
|
3
|
-
"""
|
|
4
|
-
|
|
5
|
-
from django.contrib import messages
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
def retry_failed_tasks(modeladmin, request, queryset):
|
|
9
|
-
"""Retry selected failed tasks."""
|
|
10
|
-
failed_tasks = queryset.filter(status='failed')
|
|
11
|
-
count = failed_tasks.count()
|
|
12
|
-
|
|
13
|
-
if count > 0:
|
|
14
|
-
# Here you would implement the retry logic
|
|
15
|
-
messages.success(request, f"Queued {count} tasks for retry.")
|
|
16
|
-
else:
|
|
17
|
-
messages.warning(request, "No failed tasks selected.")
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def cancel_pending_tasks(modeladmin, request, queryset):
|
|
21
|
-
"""Cancel selected pending tasks."""
|
|
22
|
-
pending_tasks = queryset.filter(status='pending')
|
|
23
|
-
count = pending_tasks.count()
|
|
24
|
-
|
|
25
|
-
if count > 0:
|
|
26
|
-
pending_tasks.update(status='cancelled')
|
|
27
|
-
messages.success(request, f"Cancelled {count} pending tasks.")
|
|
28
|
-
else:
|
|
29
|
-
messages.warning(request, "No pending tasks selected.")
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Tasks Admin v2.0 - NEW Declarative Pydantic Approach
|
|
3
|
-
|
|
4
|
-
Enhanced Dramatiq task management with Material Icons and auto-generated displays.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
import logging
|
|
8
|
-
from django.contrib import admin, messages
|
|
9
|
-
from django.contrib.admin.views.main import ChangeList
|
|
10
|
-
from django.db.models import Count
|
|
11
|
-
|
|
12
|
-
from django_cfg.modules.django_admin import (
|
|
13
|
-
ActionConfig,
|
|
14
|
-
AdminConfig,
|
|
15
|
-
BadgeField,
|
|
16
|
-
DateTimeField,
|
|
17
|
-
FieldsetConfig,
|
|
18
|
-
Icons,
|
|
19
|
-
)
|
|
20
|
-
from django_cfg.modules.django_admin.base import PydanticAdmin
|
|
21
|
-
from django_cfg.modules.django_tasks import DjangoTasks
|
|
22
|
-
from .actions import retry_failed_tasks, cancel_pending_tasks
|
|
23
|
-
|
|
24
|
-
try:
|
|
25
|
-
from django_dramatiq.admin import TaskAdmin as BaseDramatiqTaskAdmin
|
|
26
|
-
from django_dramatiq.models import Task
|
|
27
|
-
DRAMATIQ_AVAILABLE = True
|
|
28
|
-
except ImportError:
|
|
29
|
-
Task = None
|
|
30
|
-
BaseDramatiqTaskAdmin = None
|
|
31
|
-
DRAMATIQ_AVAILABLE = False
|
|
32
|
-
|
|
33
|
-
if DRAMATIQ_AVAILABLE:
|
|
34
|
-
|
|
35
|
-
class TaskQueueChangeList(ChangeList):
|
|
36
|
-
"""Custom changelist for task queue management."""
|
|
37
|
-
def __init__(self, *args, **kwargs):
|
|
38
|
-
super().__init__(*args, **kwargs)
|
|
39
|
-
self.tasks_service = DjangoTasks()
|
|
40
|
-
|
|
41
|
-
task_config = AdminConfig(
|
|
42
|
-
model=Task,
|
|
43
|
-
list_display=["id", "actor_name", "status", "queue_name", "created_at"],
|
|
44
|
-
display_fields=[
|
|
45
|
-
BadgeField(name="id", title="Task ID", variant="info", icon=Icons.TAG),
|
|
46
|
-
BadgeField(name="actor_name", title="Actor", variant="secondary", icon=Icons.FUNCTIONS, empty_value="Unknown"),
|
|
47
|
-
BadgeField(name="status", title="Status", label_map={
|
|
48
|
-
"pending": "warning", "running": "info", "done": "success",
|
|
49
|
-
"failed": "danger", "cancelled": "secondary"
|
|
50
|
-
}),
|
|
51
|
-
BadgeField(name="queue_name", title="Queue", variant="info", icon=Icons.QUEUE, empty_value="default"),
|
|
52
|
-
DateTimeField(name="created_at", title="Created", ordering="created_at"),
|
|
53
|
-
],
|
|
54
|
-
search_fields=["actor_name", "queue_name", "message_id"],
|
|
55
|
-
list_filter=["status", "queue_name", "actor_name", "created_at", "updated_at"],
|
|
56
|
-
readonly_fields=["id", "actor_name", "queue_name", "args_preview", "kwargs_preview",
|
|
57
|
-
"result_preview", "created_at", "duration_display", "retries_display", "error_message_display"],
|
|
58
|
-
fieldsets=[
|
|
59
|
-
FieldsetConfig(title="Task Information", fields=["status", "actor_name", "queue_name"]),
|
|
60
|
-
FieldsetConfig(title="Execution Details", fields=["args_preview", "kwargs_preview", "result_preview", "error_message_display"]),
|
|
61
|
-
FieldsetConfig(title="Timing", fields=["created_at", "duration_display"]),
|
|
62
|
-
FieldsetConfig(title="Retry Information", fields=["retries_display"]),
|
|
63
|
-
],
|
|
64
|
-
actions=[
|
|
65
|
-
ActionConfig(name="retry_failed_tasks", description="Retry failed tasks",
|
|
66
|
-
variant="warning", handler=retry_failed_tasks),
|
|
67
|
-
ActionConfig(name="cancel_pending_tasks", description="Cancel pending tasks",
|
|
68
|
-
variant="danger", handler=cancel_pending_tasks),
|
|
69
|
-
],
|
|
70
|
-
ordering=["-created_at"],
|
|
71
|
-
)
|
|
72
|
-
|
|
73
|
-
try:
|
|
74
|
-
admin.site.unregister(Task)
|
|
75
|
-
except admin.sites.NotRegistered:
|
|
76
|
-
pass
|
|
77
|
-
|
|
78
|
-
@admin.register(Task)
|
|
79
|
-
class TaskAdmin(PydanticAdmin):
|
|
80
|
-
"""Enhanced admin for Dramatiq Task model."""
|
|
81
|
-
config = task_config
|
|
82
|
-
|
|
83
|
-
def has_add_permission(self, request):
|
|
84
|
-
return False
|
|
85
|
-
|
|
86
|
-
def has_delete_permission(self, request, obj=None):
|
|
87
|
-
return False
|
|
88
|
-
|
|
89
|
-
def get_changelist(self, request, **kwargs):
|
|
90
|
-
return TaskQueueChangeList
|
|
91
|
-
|
|
92
|
-
# Custom readonly methods (for detail view)
|
|
93
|
-
def args_preview(self, obj):
|
|
94
|
-
if hasattr(obj, 'args') and obj.args:
|
|
95
|
-
args_text = str(obj.args)
|
|
96
|
-
return args_text[:100] + "..." if len(args_text) > 100 else args_text
|
|
97
|
-
return "No arguments"
|
|
98
|
-
args_preview.short_description = "Arguments"
|
|
99
|
-
|
|
100
|
-
def kwargs_preview(self, obj):
|
|
101
|
-
if hasattr(obj, 'kwargs') and obj.kwargs:
|
|
102
|
-
kwargs_text = str(obj.kwargs)
|
|
103
|
-
return kwargs_text[:100] + "..." if len(kwargs_text) > 100 else kwargs_text
|
|
104
|
-
return "No kwargs"
|
|
105
|
-
kwargs_preview.short_description = "Keyword Arguments"
|
|
106
|
-
|
|
107
|
-
def result_preview(self, obj):
|
|
108
|
-
if hasattr(obj, 'result') and obj.result:
|
|
109
|
-
result_text = str(obj.result)
|
|
110
|
-
return result_text[:100] + "..." if len(result_text) > 100 else result_text
|
|
111
|
-
return "No result"
|
|
112
|
-
result_preview.short_description = "Result"
|
|
113
|
-
|
|
114
|
-
def duration_display(self, obj):
|
|
115
|
-
if obj.started_at and obj.finished_at:
|
|
116
|
-
duration = obj.finished_at - obj.started_at
|
|
117
|
-
return f"{duration.total_seconds():.2f}s"
|
|
118
|
-
return "N/A"
|
|
119
|
-
duration_display.short_description = "Duration"
|
|
120
|
-
|
|
121
|
-
def retries_display(self, obj):
|
|
122
|
-
return str(getattr(obj, 'retries', 0))
|
|
123
|
-
retries_display.short_description = "Retries"
|
|
124
|
-
|
|
125
|
-
def error_message_display(self, obj):
|
|
126
|
-
if hasattr(obj, 'error') and obj.error:
|
|
127
|
-
error_text = str(obj.error)
|
|
128
|
-
return error_text[:100] + "..." if len(error_text) > 100 else error_text
|
|
129
|
-
return "No error"
|
|
130
|
-
error_message_display.short_description = "Error"
|
|
131
|
-
|
|
132
|
-
def changelist_view(self, request, extra_context=None):
|
|
133
|
-
extra_context = extra_context or {}
|
|
134
|
-
try:
|
|
135
|
-
total_tasks = self.get_queryset(request).count()
|
|
136
|
-
status_stats = self.get_queryset(request).values('status').annotate(count=Count('id')).order_by('status')
|
|
137
|
-
actor_stats = self.get_queryset(request).values('actor_name').annotate(count=Count('id')).order_by('-count')[:10]
|
|
138
|
-
queue_stats = self.get_queryset(request).values('queue_name').annotate(count=Count('id')).order_by('-count')
|
|
139
|
-
extra_context.update({
|
|
140
|
-
'task_statistics': {
|
|
141
|
-
'total_tasks': total_tasks,
|
|
142
|
-
'status_distribution': list(status_stats),
|
|
143
|
-
'top_actors': list(actor_stats),
|
|
144
|
-
'queue_distribution': list(queue_stats),
|
|
145
|
-
}
|
|
146
|
-
})
|
|
147
|
-
except Exception as e:
|
|
148
|
-
extra_context['task_error'] = str(e)
|
|
149
|
-
return super().changelist_view(request, extra_context)
|
|
150
|
-
|
|
151
|
-
else:
|
|
152
|
-
class TaskAdmin:
|
|
153
|
-
"""Placeholder when django-dramatiq is not available."""
|
|
154
|
-
pass
|