django-cfg 1.5.1__py3-none-any.whl → 1.5.3__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/dashboard/TRANSACTION_FIX.md +73 -0
- django_cfg/apps/dashboard/serializers/__init__.py +0 -12
- django_cfg/apps/dashboard/serializers/activity.py +1 -1
- django_cfg/apps/dashboard/services/__init__.py +0 -2
- django_cfg/apps/dashboard/services/charts_service.py +4 -3
- django_cfg/apps/dashboard/services/statistics_service.py +11 -2
- django_cfg/apps/dashboard/services/system_health_service.py +64 -106
- django_cfg/apps/dashboard/urls.py +0 -2
- django_cfg/apps/dashboard/views/__init__.py +0 -2
- django_cfg/apps/dashboard/views/commands_views.py +3 -6
- django_cfg/apps/dashboard/views/overview_views.py +14 -13
- django_cfg/apps/knowbase/apps.py +2 -2
- django_cfg/apps/maintenance/admin/api_key_admin.py +2 -3
- django_cfg/apps/newsletter/admin/newsletter_admin.py +12 -11
- django_cfg/apps/rq/__init__.py +9 -0
- django_cfg/apps/rq/apps.py +80 -0
- django_cfg/apps/rq/management/__init__.py +1 -0
- django_cfg/apps/rq/management/commands/__init__.py +1 -0
- django_cfg/apps/rq/management/commands/rqscheduler.py +31 -0
- django_cfg/apps/rq/management/commands/rqstats.py +33 -0
- django_cfg/apps/rq/management/commands/rqworker.py +31 -0
- django_cfg/apps/rq/management/commands/rqworker_pool.py +27 -0
- django_cfg/apps/rq/serializers/__init__.py +40 -0
- django_cfg/apps/rq/serializers/health.py +60 -0
- django_cfg/apps/rq/serializers/job.py +100 -0
- django_cfg/apps/rq/serializers/queue.py +80 -0
- django_cfg/apps/rq/serializers/schedule.py +178 -0
- django_cfg/apps/rq/serializers/testing.py +139 -0
- django_cfg/apps/rq/serializers/worker.py +58 -0
- django_cfg/apps/rq/services/__init__.py +25 -0
- django_cfg/apps/rq/services/config_helper.py +233 -0
- django_cfg/apps/rq/services/models/README.md +417 -0
- django_cfg/apps/rq/services/models/__init__.py +30 -0
- django_cfg/apps/rq/services/models/event.py +123 -0
- django_cfg/apps/rq/services/models/job.py +99 -0
- django_cfg/apps/rq/services/models/queue.py +92 -0
- django_cfg/apps/rq/services/models/worker.py +104 -0
- django_cfg/apps/rq/services/rq_converters.py +183 -0
- django_cfg/apps/rq/tasks/__init__.py +23 -0
- django_cfg/apps/rq/tasks/demo_tasks.py +284 -0
- django_cfg/apps/rq/urls.py +54 -0
- django_cfg/apps/rq/views/__init__.py +19 -0
- django_cfg/apps/rq/views/jobs.py +882 -0
- django_cfg/apps/rq/views/monitoring.py +248 -0
- django_cfg/apps/rq/views/queues.py +261 -0
- django_cfg/apps/rq/views/schedule.py +400 -0
- django_cfg/apps/rq/views/testing.py +761 -0
- django_cfg/apps/rq/views/workers.py +195 -0
- django_cfg/apps/urls.py +6 -7
- django_cfg/core/base/config_model.py +10 -26
- django_cfg/core/builders/apps_builder.py +4 -11
- django_cfg/core/generation/integration_generators/__init__.py +3 -6
- django_cfg/core/generation/integration_generators/django_rq.py +80 -0
- django_cfg/core/generation/orchestrator.py +9 -19
- django_cfg/core/integration/display/startup.py +6 -20
- django_cfg/mixins/__init__.py +2 -0
- django_cfg/mixins/superadmin_api.py +59 -0
- django_cfg/models/__init__.py +3 -3
- django_cfg/models/django/__init__.py +3 -3
- django_cfg/models/django/django_rq.py +621 -0
- django_cfg/models/django/revolution_legacy.py +1 -1
- django_cfg/modules/base.py +4 -6
- django_cfg/modules/django_admin/config/background_task_config.py +4 -4
- django_cfg/modules/django_admin/utils/html/composition.py +9 -2
- django_cfg/modules/django_unfold/navigation.py +1 -26
- django_cfg/pyproject.toml +4 -4
- django_cfg/registry/core.py +4 -7
- django_cfg/static/frontend/admin.zip +0 -0
- django_cfg/templates/admin/constance/includes/results_list.html +73 -0
- django_cfg/templates/admin/index.html +187 -62
- django_cfg/templatetags/django_cfg.py +61 -1
- {django_cfg-1.5.1.dist-info → django_cfg-1.5.3.dist-info}/METADATA +5 -6
- {django_cfg-1.5.1.dist-info → django_cfg-1.5.3.dist-info}/RECORD +77 -82
- django_cfg/apps/dashboard/permissions.py +0 -48
- django_cfg/apps/dashboard/serializers/django_q2.py +0 -50
- django_cfg/apps/dashboard/services/django_q2_service.py +0 -159
- django_cfg/apps/dashboard/views/django_q2_views.py +0 -79
- django_cfg/apps/tasks/__init__.py +0 -64
- django_cfg/apps/tasks/admin/__init__.py +0 -4
- django_cfg/apps/tasks/admin/config.py +0 -98
- django_cfg/apps/tasks/admin/task_log.py +0 -238
- django_cfg/apps/tasks/apps.py +0 -15
- django_cfg/apps/tasks/filters/__init__.py +0 -10
- django_cfg/apps/tasks/filters/task_log.py +0 -121
- django_cfg/apps/tasks/migrations/0001_initial.py +0 -196
- django_cfg/apps/tasks/migrations/0002_delete_tasklog.py +0 -16
- django_cfg/apps/tasks/migrations/__init__.py +0 -0
- django_cfg/apps/tasks/models/__init__.py +0 -4
- django_cfg/apps/tasks/models/task_log.py +0 -246
- django_cfg/apps/tasks/serializers/__init__.py +0 -28
- django_cfg/apps/tasks/serializers/task_log.py +0 -249
- django_cfg/apps/tasks/services/__init__.py +0 -10
- django_cfg/apps/tasks/services/client/__init__.py +0 -7
- django_cfg/apps/tasks/services/client/client.py +0 -234
- django_cfg/apps/tasks/services/config_helper.py +0 -63
- django_cfg/apps/tasks/services/sync.py +0 -204
- django_cfg/apps/tasks/urls.py +0 -16
- django_cfg/apps/tasks/views/__init__.py +0 -10
- django_cfg/apps/tasks/views/task_log.py +0 -41
- django_cfg/apps/tasks/views/task_log_base.py +0 -41
- django_cfg/apps/tasks/views/task_log_overview.py +0 -100
- django_cfg/apps/tasks/views/task_log_related.py +0 -41
- django_cfg/apps/tasks/views/task_log_stats.py +0 -91
- django_cfg/apps/tasks/views/task_log_timeline.py +0 -81
- django_cfg/core/generation/integration_generators/django_q2.py +0 -133
- django_cfg/core/generation/integration_generators/tasks.py +0 -88
- django_cfg/models/django/django_q2.py +0 -514
- django_cfg/models/tasks/__init__.py +0 -49
- django_cfg/models/tasks/backends.py +0 -122
- django_cfg/models/tasks/config.py +0 -209
- django_cfg/models/tasks/utils.py +0 -162
- django_cfg/modules/django_q2/README.md +0 -140
- django_cfg/modules/django_q2/__init__.py +0 -8
- django_cfg/modules/django_q2/apps.py +0 -107
- django_cfg/modules/django_q2/management/__init__.py +0 -0
- django_cfg/modules/django_q2/management/commands/__init__.py +0 -0
- django_cfg/modules/django_q2/management/commands/sync_django_q_schedules.py +0 -74
- {django_cfg-1.5.1.dist-info → django_cfg-1.5.3.dist-info}/WHEEL +0 -0
- {django_cfg-1.5.1.dist-info → django_cfg-1.5.3.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.5.1.dist-info → django_cfg-1.5.3.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=0NVSbgIKLPfOaG0RmIksBp5ap_zzyEWSUe5YardHb3A,1777
|
|
3
3
|
django_cfg/apps.py,sha256=72m3uuvyqGiLx6gOfE-BD3P61jddCCERuBOYpxTX518,1605
|
|
4
4
|
django_cfg/config.py,sha256=eIzEviUGuqgrwUqea7R2VUwmNmapbFYRXLzlRuenw4A,4446
|
|
5
5
|
django_cfg/apps/__init__.py,sha256=JtDmEYt1OcleWM2ZaeX0LKDnRQzPOavfaXBWG4ECB5Q,26
|
|
6
|
-
django_cfg/apps/urls.py,sha256=
|
|
6
|
+
django_cfg/apps/urls.py,sha256=VxH9TYwDx7Jhgi6xPgpt-NvIrUkTkQ9yofG3WzXb9GA,6803
|
|
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
|
|
@@ -193,36 +193,33 @@ django_cfg/apps/centrifugo/views/__init__.py,sha256=QdYKO9AY6t-2bwwy78Kw1mAOpe-t
|
|
|
193
193
|
django_cfg/apps/centrifugo/views/admin_api.py,sha256=ECD7W7v0o6cvo4OShZ0K5OgluNxKqReRcNn9aIZjcg4,13888
|
|
194
194
|
django_cfg/apps/centrifugo/views/monitoring.py,sha256=TPudsIR4fnGp2w9RteH6Tm8ckXr-FQN5q9-AjD4g9fw,14416
|
|
195
195
|
django_cfg/apps/centrifugo/views/testing_api.py,sha256=sNBmYoRD7VBXZmoHEw9BmPbDa0BA5mnVZg6asqgKb8Y,16868
|
|
196
|
+
django_cfg/apps/dashboard/TRANSACTION_FIX.md,sha256=9YjD9O7G4rLLrsVwoLVtoqiJMI7KNPs85y-CufD-zfw,2236
|
|
196
197
|
django_cfg/apps/dashboard/__init__.py,sha256=TirqQji7p39fA15jGBswWSt6ML2K1SP96Iq-7Sw7NFI,236
|
|
197
198
|
django_cfg/apps/dashboard/apps.py,sha256=OvB_C5qTq-QcLvvrRpbBxJPL-DCtA-pGVK8ir2y-hKk,508
|
|
198
|
-
django_cfg/apps/dashboard/
|
|
199
|
-
django_cfg/apps/dashboard/
|
|
200
|
-
django_cfg/apps/dashboard/serializers/
|
|
201
|
-
django_cfg/apps/dashboard/serializers/activity.py,sha256=eaimk1eI1-WPFa_b8oqF-xM5V6uoSBlS0mRR7TfMtrQ,1410
|
|
199
|
+
django_cfg/apps/dashboard/urls.py,sha256=5lmqi12lOe1MZQGDdcvEfZ4HwCQ3AjJ4iIFmBn_kid0,1261
|
|
200
|
+
django_cfg/apps/dashboard/serializers/__init__.py,sha256=MHwSrYz_CHYrmhuKrh1hIhYiKF8gMNqAisGkJqjUzWk,1543
|
|
201
|
+
django_cfg/apps/dashboard/serializers/activity.py,sha256=tl5P9b2GNqhW-Df5vVB35STrmHDPLMkYjI3kalYllqw,1429
|
|
202
202
|
django_cfg/apps/dashboard/serializers/apizones.py,sha256=eeluzYPtrSXskpfFY2ykw3yM71BCr5_XoAomcU-zNqE,773
|
|
203
203
|
django_cfg/apps/dashboard/serializers/base.py,sha256=-PRmxV3eApf-JfFVjgiL8ka0b07m69crkIECX-EK4IY,526
|
|
204
204
|
django_cfg/apps/dashboard/serializers/charts.py,sha256=EPgIcQ2jPLp2-5IbVWyhP86p_puPU0TMxitFR3yPfDE,1425
|
|
205
205
|
django_cfg/apps/dashboard/serializers/commands.py,sha256=qiRcSMNz7J72TcSVZLYD-oZxEAN3hmt_MZx9kkxlp7o,1925
|
|
206
|
-
django_cfg/apps/dashboard/serializers/django_q2.py,sha256=sSCxaP_xwwNlY58lI6LooJ6JwHeaUwltXZkX2wtvloM,1735
|
|
207
206
|
django_cfg/apps/dashboard/serializers/overview.py,sha256=ejFZV2l2GOTHLA8XQty8SayyXM-cL3VM2veY7YoMeWE,1373
|
|
208
207
|
django_cfg/apps/dashboard/serializers/statistics.py,sha256=DrT3eDdsqSaeCE3GJ_7_o5Tl_WVc2NwNJ43fm-kPu2A,1664
|
|
209
208
|
django_cfg/apps/dashboard/serializers/system.py,sha256=mDwqPVS2iBfyCcs4BcnT2_kZWRnbWCtLvoTievc7qkU,2093
|
|
210
|
-
django_cfg/apps/dashboard/services/__init__.py,sha256=
|
|
209
|
+
django_cfg/apps/dashboard/services/__init__.py,sha256=0NW_FUdDumd7CzRQL5cYgOBPGZPwT2icB51RyPf6k3c,617
|
|
211
210
|
django_cfg/apps/dashboard/services/apizones_service.py,sha256=FVpdMgBzjTzK3G5zZb2ADKL8ZrjEmdclCRNOr4AdIGI,3955
|
|
212
|
-
django_cfg/apps/dashboard/services/charts_service.py,sha256=
|
|
211
|
+
django_cfg/apps/dashboard/services/charts_service.py,sha256=4FdhlHWFKFEbMaQslVzKAVdHfwtfFxwQL2-QykYSASQ,8906
|
|
213
212
|
django_cfg/apps/dashboard/services/commands_security.py,sha256=kFADVoYNbqb2DwzFfFBZ3Th2TdfL-1z2V-dnNXHU5Fw,7893
|
|
214
213
|
django_cfg/apps/dashboard/services/commands_service.py,sha256=OnvZBUv2GDUWq3JA3UVrHu-gMc2eJm0-MT_WTdM27uk,11644
|
|
215
|
-
django_cfg/apps/dashboard/services/django_q2_service.py,sha256=BalFPJhEDWPYv1fugYe123GQOSh0Gpdt6imJkNyQA1w,5113
|
|
216
214
|
django_cfg/apps/dashboard/services/overview_service.py,sha256=Dl_y89_waG9onDC9PHGWx0ci7m3NOdrMoEKSdv3Fves,6382
|
|
217
|
-
django_cfg/apps/dashboard/services/statistics_service.py,sha256=
|
|
218
|
-
django_cfg/apps/dashboard/services/system_health_service.py,sha256=
|
|
219
|
-
django_cfg/apps/dashboard/views/__init__.py,sha256=
|
|
215
|
+
django_cfg/apps/dashboard/services/statistics_service.py,sha256=DtW1v24pf7omjHWbD2fVyoD9ZxMln62g5ahYa6C8Ivk,14427
|
|
216
|
+
django_cfg/apps/dashboard/services/system_health_service.py,sha256=REQ9kV4PeNKG69t5jxzM4f7iOsIAflVS44rISiZmu5Q,11136
|
|
217
|
+
django_cfg/apps/dashboard/views/__init__.py,sha256=tgsvzkwnIr3bL35LOpZl8o-2aRLFSKbjfRFMqhZUPjA,561
|
|
220
218
|
django_cfg/apps/dashboard/views/activity_views.py,sha256=UsGTnFABCJdZZID8kmG2J6grVRx18G9xSKfl7nKVz3w,2797
|
|
221
219
|
django_cfg/apps/dashboard/views/apizones_views.py,sha256=FtEEeNQD7aFBejmuTfdtjvRCLwCJyjD7AWDR1ouBo2k,2329
|
|
222
220
|
django_cfg/apps/dashboard/views/charts_views.py,sha256=XDV3lTfoP65UuW_HIgNnp_80k35DVcicXXPLzIB6neU,5514
|
|
223
|
-
django_cfg/apps/dashboard/views/commands_views.py,sha256=
|
|
224
|
-
django_cfg/apps/dashboard/views/
|
|
225
|
-
django_cfg/apps/dashboard/views/overview_views.py,sha256=UZsGOUuZxYymziB0bPxBEfDaIHwFMGz6pCxNMLBRtsI,3680
|
|
221
|
+
django_cfg/apps/dashboard/views/commands_views.py,sha256=uunTSFBzAXrZOoLNAZrYgM9oqnVDAZ0PByIYD5Zi8-o,5856
|
|
222
|
+
django_cfg/apps/dashboard/views/overview_views.py,sha256=44VSNxGNZ0zsywexvDpMzjj_ekRx2gIcLG4KbnHMRiE,3872
|
|
226
223
|
django_cfg/apps/dashboard/views/statistics_views.py,sha256=CISWM8A5lkIqTK2dWifTBJD4RdFI9Hu-_RCFl3kMoiA,3511
|
|
227
224
|
django_cfg/apps/dashboard/views/system_views.py,sha256=PSEGZuHhexgBiKVOlrNlDV9_t2kEwS2arBT8h2KFxds,2459
|
|
228
225
|
django_cfg/apps/frontend/JWT_AUTO_INJECTION.md,sha256=vw4M49mijxjd1ANlumPbye3d2XIaYuc_3jYRbmWsb-8,8018
|
|
@@ -270,7 +267,7 @@ django_cfg/apps/grpc/views/__init__.py,sha256=IZWj31gnice6VOBZ1hkunPnnA5pXwJFTdz
|
|
|
270
267
|
django_cfg/apps/grpc/views/monitoring.py,sha256=sVulfX_r5TIITisRea-jzLTcql9PQPN4txXY3fNM9NE,18125
|
|
271
268
|
django_cfg/apps/knowbase/README.md,sha256=HXt_J6WCN-LsMhA7p9mdvih07_vp_r_hkPdmqHhNEeo,3965
|
|
272
269
|
django_cfg/apps/knowbase/__init__.py,sha256=XLhl7_wweUm1nqmA_xVlPxiCSuARxtCro-uY41JFQgs,1039
|
|
273
|
-
django_cfg/apps/knowbase/apps.py,sha256=
|
|
270
|
+
django_cfg/apps/knowbase/apps.py,sha256=l6LJ4q6HxwKfNIwc3n8P4Qmw7xJzRaThP2ZQFLmzHn8,3070
|
|
274
271
|
django_cfg/apps/knowbase/urls.py,sha256=r5Ak_fp1bWpW01hcstZsJK5F9RhuRFyhR6bUmuoJOA4,643
|
|
275
272
|
django_cfg/apps/knowbase/urls_admin.py,sha256=fu6KG-nat8ay7buB8t255-Ye_5uiQYibZ1NzhNiyvtg,640
|
|
276
273
|
django_cfg/apps/knowbase/urls_system.py,sha256=ZW7TOf_7Svt5V-83EBiN9qnm1Y4fQE5YspYRkAJFyVA,736
|
|
@@ -405,7 +402,7 @@ django_cfg/apps/maintenance/urls.py,sha256=wOd5n5Ky62gUx-TVaIC5OZcH9K6plsC2pCAJH
|
|
|
405
402
|
django_cfg/apps/maintenance/urls_admin.py,sha256=E61etVCrwAzWZdPckWWX5yMDPsZzi3cQtAXn_zzZNL4,226
|
|
406
403
|
django_cfg/apps/maintenance/admin/__init__.py,sha256=9EDtPitnC45uazpAky927lzo0jW7Qg-qfzv5LCxMW_I,463
|
|
407
404
|
django_cfg/apps/maintenance/admin/actions.py,sha256=a2y5Gg7m806yAg8J4V_i-jxbFN6A47L5Qa7a1sYVZrg,5304
|
|
408
|
-
django_cfg/apps/maintenance/admin/api_key_admin.py,sha256=
|
|
405
|
+
django_cfg/apps/maintenance/admin/api_key_admin.py,sha256=SrYLkuhB_rgIBrM0e45Ts7TP9iU_LrYocJnKCjeRt2c,5638
|
|
409
406
|
django_cfg/apps/maintenance/admin/log_admin.py,sha256=9Kb9IN95QATKVn0yVfFmn5VsvoxJ6B9BeQFUZ-HCd_Y,5551
|
|
410
407
|
django_cfg/apps/maintenance/admin/scheduled_admin.py,sha256=Vn9qLlC7XjYntAfdSHJbchZ32t3913yZiC8dHjWAhjc,6630
|
|
411
408
|
django_cfg/apps/maintenance/admin/site_admin.py,sha256=LDG2XXmoBmZnbkCpLX1yUXra8ibjZTK57exVVzm6y2c,8280
|
|
@@ -446,7 +443,7 @@ django_cfg/apps/newsletter/urls_admin.py,sha256=E61etVCrwAzWZdPckWWX5yMDPsZzi3cQ
|
|
|
446
443
|
django_cfg/apps/newsletter/admin/__init__.py,sha256=IGjWzRtv8xLNJDFUW7pTHujJu1rHtRVVYUbIkZzyX4Q,830
|
|
447
444
|
django_cfg/apps/newsletter/admin/actions.py,sha256=aHC2ACDREfkHscnLToMTdZBQ7orbE7sjB3f4V9-nsOE,3814
|
|
448
445
|
django_cfg/apps/newsletter/admin/filters.py,sha256=lPMtHULDOisTsN9_2BMoGu23ICkFEJDZst5Fhj5Sv5c,3675
|
|
449
|
-
django_cfg/apps/newsletter/admin/newsletter_admin.py,sha256=
|
|
446
|
+
django_cfg/apps/newsletter/admin/newsletter_admin.py,sha256=hLE1gddSx0vqAotEIUYYDbWn1CNvLVaUGD08nFa1NPM,23160
|
|
450
447
|
django_cfg/apps/newsletter/admin/resources.py,sha256=KJfXZyG763ikhjGJvHE9wcx_k1dm111sg3id1QVFHrY,6808
|
|
451
448
|
django_cfg/apps/newsletter/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
452
449
|
django_cfg/apps/newsletter/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -508,6 +505,40 @@ django_cfg/apps/payments/services/providers/nowpayments/__init__.py,sha256=_AMqc
|
|
|
508
505
|
django_cfg/apps/payments/services/providers/nowpayments/config.py,sha256=JjrCOG8N7whBW_DWM6ObX54yqD2Bo3Z5MeBKbLfYR8g,3603
|
|
509
506
|
django_cfg/apps/payments/services/providers/nowpayments/parser.py,sha256=cTuZKhfUPsyWMxOoMVIhmsH1tius3AzPYcnvZGb5KRs,6521
|
|
510
507
|
django_cfg/apps/payments/services/providers/nowpayments/provider.py,sha256=nafsOrUNd5WkDY3ipDi70ETDh3PhV-fMoDtwriZtRB8,12227
|
|
508
|
+
django_cfg/apps/rq/__init__.py,sha256=iyW7QkExvC2W8D5Q8I8bBe_bG3zGVIsf1RzW60EebZU,202
|
|
509
|
+
django_cfg/apps/rq/apps.py,sha256=psQRGNCrPZgpgsI8n9hA2Fk9yFcVutg2fI3EBmGGgqE,2463
|
|
510
|
+
django_cfg/apps/rq/urls.py,sha256=yMYiW-Du_wOCy4l8L7YujcnMl6xHnBpCE5mG4rzi-Zc,1616
|
|
511
|
+
django_cfg/apps/rq/management/__init__.py,sha256=i1gU5aI6Ib6bSbA4R0snjJayGpGLn-rSlTdkyaJInjE,53
|
|
512
|
+
django_cfg/apps/rq/management/commands/__init__.py,sha256=dxwH_9KU9Q1x8xZzj4ySfCFJ7q7hs2_D_nDNmQ8c670,52
|
|
513
|
+
django_cfg/apps/rq/management/commands/rqscheduler.py,sha256=J2726GV9z7Tx_BuGxBMUglDFbFU4doL6yiWP5msfPGw,906
|
|
514
|
+
django_cfg/apps/rq/management/commands/rqstats.py,sha256=IDz1wn5r6WesobVjA-xoDbKtQyKYGXJSPr9vkokeK18,941
|
|
515
|
+
django_cfg/apps/rq/management/commands/rqworker.py,sha256=FMtMpssvtCR_5k4YJjNGRommJOZBNJkMlAv5Pca3qPQ,1048
|
|
516
|
+
django_cfg/apps/rq/management/commands/rqworker_pool.py,sha256=ojJbu6cBCpc4tmc8F6QugOCgCJzH6KoAo6MQnaTHKs4,890
|
|
517
|
+
django_cfg/apps/rq/serializers/__init__.py,sha256=HMUNP2tcgkNaTdOOGp1vefJ1W1FdabcvndDHUc_GQ3g,1167
|
|
518
|
+
django_cfg/apps/rq/serializers/health.py,sha256=bqPbfvV1RM6FmerKOOrnju9i6g0ijEFxUpoYKCoomp0,2031
|
|
519
|
+
django_cfg/apps/rq/serializers/job.py,sha256=C99RLvJrp9kBfayxxGeiZ0Pgt45GcxgbkvcQuNb_PFk,3330
|
|
520
|
+
django_cfg/apps/rq/serializers/queue.py,sha256=1xhf6nc_dSMpwZwGeAofG5XU_Xf5IUJmkCSo-o9RFlE,2802
|
|
521
|
+
django_cfg/apps/rq/serializers/schedule.py,sha256=eBZmuKMkiXLcSis5iI_i6Jtt6sqpK8zu3rZDGqfBhBQ,5066
|
|
522
|
+
django_cfg/apps/rq/serializers/testing.py,sha256=OSvOdgDYo0HRFdeC4EeqoEIYErajjQYocrR-t41k1WQ,3879
|
|
523
|
+
django_cfg/apps/rq/serializers/worker.py,sha256=Yx_qz_7uJYu6nncwF18jMKcN_1UAIr3YuRCmtSTuczg,2183
|
|
524
|
+
django_cfg/apps/rq/services/__init__.py,sha256=D2XoavoGfs3OqzVwDeBIVjrU2iQrPbj2gr_Bmkq7lZw,516
|
|
525
|
+
django_cfg/apps/rq/services/config_helper.py,sha256=FbjIp2hNhCLi-z8lADYzx2av1YB8VytGeX4_tYTBrD0,7348
|
|
526
|
+
django_cfg/apps/rq/services/rq_converters.py,sha256=Wx88vGhT5dR2aEehb_KdB2fRmI_-KKeR3Hrjr0mWwRc,5800
|
|
527
|
+
django_cfg/apps/rq/services/models/README.md,sha256=6yIQ1QnPcqvXRwo5Cns1Ar7K8vw3VS0HoyL9PtOFKzw,11509
|
|
528
|
+
django_cfg/apps/rq/services/models/__init__.py,sha256=utd56sNx9gy_o6SmJduMx2CaE9svdg975JRj5M4k3Tw,650
|
|
529
|
+
django_cfg/apps/rq/services/models/event.py,sha256=YTalO6m1Ya7WL5Mm1JqHxFnbOzptsHbpXpV1h7oYlmg,3612
|
|
530
|
+
django_cfg/apps/rq/services/models/job.py,sha256=tcoFZQUkzaybwNdKmvhGjHlJEL1gevkJQ44dqVQqNSk,3347
|
|
531
|
+
django_cfg/apps/rq/services/models/queue.py,sha256=2wUtYH7NrtemNaVYrjVy380bqsapbJVj5LT2ECN8MDY,2928
|
|
532
|
+
django_cfg/apps/rq/services/models/worker.py,sha256=EDZQVRScRgwJveC78VSTotbdzyej0YkJk45L68noLwQ,3276
|
|
533
|
+
django_cfg/apps/rq/tasks/__init__.py,sha256=sCPVlradQ2PJYis17AWRudvlaFfF9xu37ahXniPL-v8,449
|
|
534
|
+
django_cfg/apps/rq/tasks/demo_tasks.py,sha256=xpM6P70iwJ169EbeIXEhdPstaMwG-sKYChpyJpJz9fQ,7278
|
|
535
|
+
django_cfg/apps/rq/views/__init__.py,sha256=Af4Zbr_Uc7cNkRPWZbk6EBrYmnO7dazHlSHMq76nl0s,415
|
|
536
|
+
django_cfg/apps/rq/views/jobs.py,sha256=5IMW5XYSAL-7sqtbgYu5JkOgTzV-034sNnSQrTfd6tw,33020
|
|
537
|
+
django_cfg/apps/rq/views/monitoring.py,sha256=ZuVc-0NAiePSOKD-a6UDT5AsxRlYE0eqQQ8pFMkYpjA,9270
|
|
538
|
+
django_cfg/apps/rq/views/queues.py,sha256=vXk0CdS3kXVgKPLQPLRfJuDf1glVrB5PJNEzTTllmAA,9111
|
|
539
|
+
django_cfg/apps/rq/views/schedule.py,sha256=eDAR_qnIAxbW7b6La9ojXh1QbfD2aML_d6Sny2eWrfE,15286
|
|
540
|
+
django_cfg/apps/rq/views/testing.py,sha256=fqE3W9LH_MwbExxyOAiKfLTyYM_uNmb8a2ehJsO0Itg,29416
|
|
541
|
+
django_cfg/apps/rq/views/workers.py,sha256=3Ej6fG9o_pDqp_g4v4Hlbc7KHb_C2TTP4-LJW1t4ADs,7076
|
|
511
542
|
django_cfg/apps/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
512
543
|
django_cfg/apps/support/admin.py,sha256=rAxgGyOKV3e5ihRyruR0f9LCCtETDmnzsTHqqdZ7qXo,8756
|
|
513
544
|
django_cfg/apps/support/admin_filters.py,sha256=ZpKtetRxppRAMwIr-pwDbXAyh7qouDfTCEZoo1YJfFs,2179
|
|
@@ -535,33 +566,6 @@ django_cfg/apps/support/views/__init__.py,sha256=0-6pYFqa2aDioxVImPt_-HHe4z_2x6N
|
|
|
535
566
|
django_cfg/apps/support/views/admin.py,sha256=3bofdyoFWPhip0kia7WTFW_4y4-2FtOraOQSMElaemA,1585
|
|
536
567
|
django_cfg/apps/support/views/api.py,sha256=8hHY-j6EZpSdYkT6JA8_yo7LJKPpSon3DVNWl6jfGRw,5506
|
|
537
568
|
django_cfg/apps/support/views/chat.py,sha256=wbWR_UgvdgYBYlhHJBLJRPpVm7V44bNy5NZWHqBx2AE,3255
|
|
538
|
-
django_cfg/apps/tasks/__init__.py,sha256=_k1_FJbPDmsKGXgaL6oFvZKj31u3uItDBR53kTUiuLM,1932
|
|
539
|
-
django_cfg/apps/tasks/apps.py,sha256=jcl4NO8t37_RNHyaCh2GJXXlZqYIMLwpiAY26lnMO8M,459
|
|
540
|
-
django_cfg/apps/tasks/urls.py,sha256=4KA6on-Hii-4mQLJaSQ58iPrYBZL4apSsvksLbyhzWU,344
|
|
541
|
-
django_cfg/apps/tasks/admin/__init__.py,sha256=h4Hx8VGvbohLLS6nt0OFE7mi0JBx1pHA0lbjjcaXPgU,106
|
|
542
|
-
django_cfg/apps/tasks/admin/config.py,sha256=SZ4gh2omc5sPEa3VLz7ewUjV-_O4qPFgHe_e0AkEm9c,2161
|
|
543
|
-
django_cfg/apps/tasks/admin/task_log.py,sha256=a9XYEvdFfsLcMeaw12o66dLtww9tmv6VTYwDw785Uys,7604
|
|
544
|
-
django_cfg/apps/tasks/filters/__init__.py,sha256=9H6dh9ryI_zJ0_tPENjsSS2V3Mx8MMcWze8hyHokfhc,151
|
|
545
|
-
django_cfg/apps/tasks/filters/task_log.py,sha256=BY67R3jyzHR6XdhNty8gjGmLTC5VDTx2_tGeGODOJXE,4929
|
|
546
|
-
django_cfg/apps/tasks/migrations/0001_initial.py,sha256=dVbEPP7umgjsJsubxaTYsrDq7dvwv2xf6_K8hfju-lE,7367
|
|
547
|
-
django_cfg/apps/tasks/migrations/0002_delete_tasklog.py,sha256=HW1ovU2mwvUXPhrVFaRorJW-rC-SlBNT0qUg6hG6vPY,283
|
|
548
|
-
django_cfg/apps/tasks/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
549
|
-
django_cfg/apps/tasks/models/__init__.py,sha256=4tvTev7IYkcjBrll3eLUFLJCDNlyG9c_863qoe_Fzu0,72
|
|
550
|
-
django_cfg/apps/tasks/models/task_log.py,sha256=PxcQ7D3LNwQPy9IYLaBYL08buMHeakbmmXyr4Vgaqa0,7967
|
|
551
|
-
django_cfg/apps/tasks/serializers/__init__.py,sha256=VcsKMRI4fOE1zajh-IOC0X5NwK2e5ytFh18w-43lXl0,675
|
|
552
|
-
django_cfg/apps/tasks/serializers/task_log.py,sha256=XEjWsnojxN2j55PYyoDw1KfXhb_-Ng8VnCeSJJDaL8w,7777
|
|
553
|
-
django_cfg/apps/tasks/services/__init__.py,sha256=VRFnirt868_jFvCzvLD3vLNa2HFi4zqFQFXQG9Nm4Kg,268
|
|
554
|
-
django_cfg/apps/tasks/services/config_helper.py,sha256=-Iv7EK1fNAydlk6IzvOFvk4TRBBp9IngYBt7tmansRI,1447
|
|
555
|
-
django_cfg/apps/tasks/services/sync.py,sha256=wA-gRvqRsElfdP9XD6PosQIwOOJQwy6dUtQbIlb2W2o,5783
|
|
556
|
-
django_cfg/apps/tasks/services/client/__init__.py,sha256=pQ6eJPbdj8P9q7qq4XcxtAgEisXjVrT1KTdoqHI5zMI,135
|
|
557
|
-
django_cfg/apps/tasks/services/client/client.py,sha256=je4j4Yw0v3fR1PijajoAptAbP7Zx06yAykV21MxAMlQ,6437
|
|
558
|
-
django_cfg/apps/tasks/views/__init__.py,sha256=nfwn_GtoZ-H83YeL2BvhWYn9VdBjPM3QiNIivzLiKUw,151
|
|
559
|
-
django_cfg/apps/tasks/views/task_log.py,sha256=cyywdhBaLgEFpwc9YaxQSU7or1whSTfDnXA7l8P5iq8,1312
|
|
560
|
-
django_cfg/apps/tasks/views/task_log_base.py,sha256=MJ1UzSpYzV75KyQBVSUHyQ0ejYe91h3douXt2osCPf8,1499
|
|
561
|
-
django_cfg/apps/tasks/views/task_log_overview.py,sha256=ch7nPu6k9JCDOUh7Z8TQXGrqLGT1X6m-n9HhHFF32yY,3291
|
|
562
|
-
django_cfg/apps/tasks/views/task_log_related.py,sha256=mXtDfzfkNpNc2vYPKRV9zNGlsOPV2MOx-xwj1-a6yik,1194
|
|
563
|
-
django_cfg/apps/tasks/views/task_log_stats.py,sha256=UhoXFmIsb6utWIuighLuPnFjWcz0BPbkKCCfvHYJyrQ,3046
|
|
564
|
-
django_cfg/apps/tasks/views/task_log_timeline.py,sha256=8tTAGNAbKseLmljx6SSr-ATDHuvnUZYQlcG51Wk73fs,2710
|
|
565
569
|
django_cfg/cli/README.md,sha256=-fZmNv8OUc1OAwwiDnhkUmhTVhEEXX7CXwJQlSRwgQ8,2118
|
|
566
570
|
django_cfg/cli/__init__.py,sha256=i3ksFngCqZCBvaimQcBD1P2_gr5PiM--4efLScCjvvU,152
|
|
567
571
|
django_cfg/cli/main.py,sha256=GOmMubPoMpcA0XcRJn4VG2cX9tuhE0i_ioy_d3ujzRQ,883
|
|
@@ -577,16 +581,16 @@ django_cfg/core/validation.py,sha256=QmwGlNDa0MFG2OUmgykIUAaEotT55YNh-wAWSVxOAos
|
|
|
577
581
|
django_cfg/core/backends/__init__.py,sha256=5Qfza7oKQ8_UIHOs4ibhYvwtgAjngUqLrlwjKl_q124,38
|
|
578
582
|
django_cfg/core/backends/smtp.py,sha256=kWkNMG7UwLsHcFYSKRgrk1HbP9mU1fxzWYnalHXqoL8,2308
|
|
579
583
|
django_cfg/core/base/__init__.py,sha256=Z3bZvxejxk4vvWqmqTBLUi9XJpo6A_5Bq4R0J8q81Y4,116
|
|
580
|
-
django_cfg/core/base/config_model.py,sha256=
|
|
584
|
+
django_cfg/core/base/config_model.py,sha256=vcADfj1dFIenIRf9fBynShG1cO0VIRQII8oSZKXrEjE,21513
|
|
581
585
|
django_cfg/core/builders/__init__.py,sha256=jkInI7_jbxcjitapohw6QmbJPpacnnID6V1JovqtOFM,282
|
|
582
|
-
django_cfg/core/builders/apps_builder.py,sha256=
|
|
586
|
+
django_cfg/core/builders/apps_builder.py,sha256=7wk_BDD8MgNNSAmI7UCj2SkwCMMbo_WuXYdN4NBv91E,6643
|
|
583
587
|
django_cfg/core/builders/middleware_builder.py,sha256=OwqQRoJKYWlXsQNPFBfUvVMYdppUHCPw-UDczV_esYg,3101
|
|
584
588
|
django_cfg/core/builders/security_builder.py,sha256=W8Lk9eTMi3PuNK5qH-BIHegeE0cbvmuHKTumLcwOAh8,23961
|
|
585
589
|
django_cfg/core/environment/__init__.py,sha256=sMOIe9z1i51j8B1VGjpLHJMaeDsBfsgn1TmL03FIeNo,141
|
|
586
590
|
django_cfg/core/environment/detector.py,sha256=bI9k4fdK8Nbfl61ZcQ3yNbm3WlmK-L0xB-g-aXKUdhA,8923
|
|
587
591
|
django_cfg/core/generation/__init__.py,sha256=0cYgeQ5EDN6sscQuFnXsFCy6m1BKgv_izNz0a1TlYSc,1355
|
|
588
592
|
django_cfg/core/generation/generation.py,sha256=uLLJnJ_9kq8zV_auySK05dXwZB-BJx920mID0Pm4RCo,2524
|
|
589
|
-
django_cfg/core/generation/orchestrator.py,sha256=
|
|
593
|
+
django_cfg/core/generation/orchestrator.py,sha256=h3VcyKMvHbgmufifYQG4ITQfB5t3_9sqNzTJcIr7YlU,12057
|
|
590
594
|
django_cfg/core/generation/protocols.py,sha256=9pqGsZD_Y5v3jdYp4YdkL-i--8feuvX_iKXxV-Cc4Bg,676
|
|
591
595
|
django_cfg/core/generation/core_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
592
596
|
django_cfg/core/generation/core_generators/settings.py,sha256=Rto9qjqQC-MeQJMNyoflS91RrNDS_lBNH4d4ZtgER-8,2632
|
|
@@ -595,13 +599,12 @@ django_cfg/core/generation/core_generators/templates.py,sha256=XeGKzF790_zKwFdRw
|
|
|
595
599
|
django_cfg/core/generation/data_generators/__init__.py,sha256=O7cmt_k34hWRgrdaAzCRPudcaowaOwMgaoXmZY8HG54,298
|
|
596
600
|
django_cfg/core/generation/data_generators/cache.py,sha256=UvBmkmiUMPTaA5PDuOdMH1RgpvUz7xvX7jlWe4GUCsg,4920
|
|
597
601
|
django_cfg/core/generation/data_generators/database.py,sha256=mYR2mBvqWU93YP9XUUVlcZaQJtSNeAQ7Dk4Vj6Tu95k,3481
|
|
598
|
-
django_cfg/core/generation/integration_generators/__init__.py,sha256=
|
|
602
|
+
django_cfg/core/generation/integration_generators/__init__.py,sha256=fN412Ytj-TY41tlwshvWOQNonvMlv9m3aN3tBgnRI3Q,638
|
|
599
603
|
django_cfg/core/generation/integration_generators/api.py,sha256=Xsyu3mYyq9mje8QGNSU0Yp4tLbtF0ckq4lEf_Rj5pLc,11062
|
|
600
|
-
django_cfg/core/generation/integration_generators/
|
|
604
|
+
django_cfg/core/generation/integration_generators/django_rq.py,sha256=WqmEzGHhZtn2a5E4xg063TyCunb67_CoLQS1KSLQUYc,2367
|
|
601
605
|
django_cfg/core/generation/integration_generators/grpc_generator.py,sha256=UpeumEd7ASWiWUUTsyWu35scOP3kVz14CDIxyc4AszU,10423
|
|
602
606
|
django_cfg/core/generation/integration_generators/sessions.py,sha256=GbRC72Gny4dzj7oTIrbuhYyvhCQBoWI-0GxB8ZHTrEU,1644
|
|
603
607
|
django_cfg/core/generation/integration_generators/tailwind.py,sha256=YgiV5c-l0DDJnMKx6mWcUtH5zyMdewAJXjLDwmHrSuc,1208
|
|
604
|
-
django_cfg/core/generation/integration_generators/tasks.py,sha256=fMbuIdjRenuZQ6rfco7imLzDbCdX4WEO1aLslBpxjTQ,2253
|
|
605
608
|
django_cfg/core/generation/integration_generators/third_party.py,sha256=ef3sdpfDIf6B_dRuRjoIYc9rlqMYoKgTH4luFvjy9UM,3971
|
|
606
609
|
django_cfg/core/generation/security_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
607
610
|
django_cfg/core/generation/security_generators/crypto_fields.py,sha256=CCNP4UxsSXMTRhB83KqAvtOyEGXb9qpooFg-gXwngYY,1980
|
|
@@ -621,7 +624,7 @@ django_cfg/core/integration/version_checker.py,sha256=VJo7CWjNjj_XYE2YqIWGSnxnos
|
|
|
621
624
|
django_cfg/core/integration/display/__init__.py,sha256=8vvW7rdKEnPO9iVMHUazGmVCE0gwClsK10mDz6_FCt0,314
|
|
622
625
|
django_cfg/core/integration/display/base.py,sha256=ElP8XtUGhtQm3LrSrLf-fgESi10G8EKevxku85nWyAU,5541
|
|
623
626
|
django_cfg/core/integration/display/ngrok.py,sha256=IAuZzh1swfQwPl-wadVpooEvAqe085HYrTPSEGgYfr8,5899
|
|
624
|
-
django_cfg/core/integration/display/startup.py,sha256=
|
|
627
|
+
django_cfg/core/integration/display/startup.py,sha256=RaaetLTIVbStzIpAsHKSVJnp0fS5bf18bewotyQaJ98,34006
|
|
625
628
|
django_cfg/core/services/__init__.py,sha256=Eb-F6qqQ-qkep1O-JkaT96IpuxxqtGdT_MIwGXafqSE,117
|
|
626
629
|
django_cfg/core/services/config_service.py,sha256=leo6i6QDq25Bst8PIhBoRVIorPNupLHJub2IwhumAjo,3579
|
|
627
630
|
django_cfg/core/state/__init__.py,sha256=0jAOD0WHpq_W8L5Gh2084D0V5nhb-RAB3t8Akr2SX8M,225
|
|
@@ -658,10 +661,11 @@ django_cfg/middleware/authentication.py,sha256=1deekm3lyAMJ2pK7Usd5q1FtUN1aDq_CG
|
|
|
658
661
|
django_cfg/middleware/pagination.py,sha256=xnaFH1olDH_m4ecwpTTUyFWV6jKoF6IxJvagSZSJR0E,8603
|
|
659
662
|
django_cfg/middleware/public_endpoints.py,sha256=p-VCjeu0k7B4OuQIe2OVUx7Onh9gsM2HweWcYNxEaRA,6775
|
|
660
663
|
django_cfg/middleware/user_activity.py,sha256=bgftHXXeGBS-jCa8mLzTx4Gcz2fHTaQz_nbRCR5Yqio,5980
|
|
661
|
-
django_cfg/mixins/__init__.py,sha256=
|
|
664
|
+
django_cfg/mixins/__init__.py,sha256=3nJ5PySz233LJCKC5x5iqqh9P_C2n-KxNKxAEY5tVao,284
|
|
662
665
|
django_cfg/mixins/admin_api.py,sha256=3GRfAty6YXGbZp4ZFsNFt1Gs_e5T4xBOLnRPoc5vaq0,1116
|
|
663
666
|
django_cfg/mixins/client_api.py,sha256=KeGK_f2xR08l0ckGpMmXHHpVLDQ7SnSbZn4WP5bSsvI,1200
|
|
664
|
-
django_cfg/
|
|
667
|
+
django_cfg/mixins/superadmin_api.py,sha256=B059W_nU0HsjqBUf-bD_2UlKpLba-P3Rh0Z-dc5Rut0,1856
|
|
668
|
+
django_cfg/models/__init__.py,sha256=HsH_4IQLHENFt3ljbbNTO0o_78LKf5IKX8F5TXqnC0o,2865
|
|
665
669
|
django_cfg/models/api/__init__.py,sha256=VWkiYs38A7Tx5ZWePeBxL1lMiXKsonb5TQfoVRRCBac,605
|
|
666
670
|
django_cfg/models/api/config.py,sha256=KzaDn2Ubc7SpZ_8xt6-Q-XxnZbf9Glu1xJhJWbAI--o,4455
|
|
667
671
|
django_cfg/models/api/cors.py,sha256=kRDGD-HcCK39QhoyvKnn2yGcwzGFp2QIw50G7TNx78I,3467
|
|
@@ -678,14 +682,14 @@ django_cfg/models/api/grpc/config.py,sha256=YY0KKCzPiLxV3l-l7oXoKN-n-CbcH11Iala-
|
|
|
678
682
|
django_cfg/models/base/__init__.py,sha256=f6sMVyd-YEFdLebmIKOOPviu1Ovn4BHGp7j7ZVNqFDo,271
|
|
679
683
|
django_cfg/models/base/config.py,sha256=hfpf35yMR8oOE1J0SBPNNSBwXckK3F2-Iv0Vw6cNX4E,10114
|
|
680
684
|
django_cfg/models/base/module.py,sha256=nxN1Y9J4l94kOfSXLQJ2eGgIGWTq8kyh7hUGvCQNyIs,2674
|
|
681
|
-
django_cfg/models/django/__init__.py,sha256=
|
|
685
|
+
django_cfg/models/django/__init__.py,sha256=inT3j1zEvsA_uKomx6MfNOdlIEAt_xWLZP1N5vkBOhA,493
|
|
682
686
|
django_cfg/models/django/axes.py,sha256=-4nk2gSfpj7lNY5vnm_2jHVLz8VAKoEd9yF2TuCR8O8,5624
|
|
683
687
|
django_cfg/models/django/constance.py,sha256=6x57bi40mDX0fKcKeQKgV2BO3WIVYPQllAchWsj4KvM,8847
|
|
684
688
|
django_cfg/models/django/crypto_fields.py,sha256=OguITidM4Mp564p_gbsokeNCZxjL9hrK1Vw0McuA3yo,4700
|
|
685
|
-
django_cfg/models/django/
|
|
689
|
+
django_cfg/models/django/django_rq.py,sha256=gjOq_UgR6H1xcLrgzQGprM_6HLsn5jbUd54nUVkRml4,18096
|
|
686
690
|
django_cfg/models/django/environment.py,sha256=lBCHBs1lphv9tlu1BCTfLZeH_kUame0p66A_BIjBY7M,9440
|
|
687
691
|
django_cfg/models/django/openapi.py,sha256=avE3iapaCj8eyOqVUum_v2EExR3V-hwHrexqtXMHtTQ,3739
|
|
688
|
-
django_cfg/models/django/revolution_legacy.py,sha256=
|
|
692
|
+
django_cfg/models/django/revolution_legacy.py,sha256=kXKavMKjwge2xqKSckmuIWfWxkvn9aW4dXuXnlKzwSU,8918
|
|
689
693
|
django_cfg/models/infrastructure/__init__.py,sha256=VdOapoHa_yPtme8dLEJsmOlmT2klGs8G62W5CES8e2E,369
|
|
690
694
|
django_cfg/models/infrastructure/cache.py,sha256=-eN2GjDJo-4Ta6b4hamG-AuBHNEKoYK_LqVOt_fJvZE,12012
|
|
691
695
|
django_cfg/models/infrastructure/logging.py,sha256=dbbDJ0hjJKigKKTmqKnh7hkLzmipm3_abp-whaK1lOY,10314
|
|
@@ -706,12 +710,8 @@ django_cfg/models/services/__init__.py,sha256=K3mit3rKumqC4XiCUU0BziZC3143j1SM9j
|
|
|
706
710
|
django_cfg/models/services/base.py,sha256=q_QggR8i_6qoiIvbAubddCklpfjVfeLP3Bv2bsdT4BQ,1607
|
|
707
711
|
django_cfg/models/services/email.py,sha256=JigMJaJA26MT_Euc4q_OfmZYJYzaGyHb0JXsNFOS0uY,5119
|
|
708
712
|
django_cfg/models/services/telegram.py,sha256=wrMqOGZCp1KAxRmCn5oxMU0BMBgbzsQD6o0Fi_7kfIY,4810
|
|
709
|
-
django_cfg/models/tasks/__init__.py,sha256=1cZH-P022je3FGSaus6kwxSzMAKBLkIetZ8qp4Dy46I,1228
|
|
710
|
-
django_cfg/models/tasks/backends.py,sha256=r5VcuAxyyxqd5grpktEd-0yJNvSJu2jv0IBgrK32ENs,3369
|
|
711
|
-
django_cfg/models/tasks/config.py,sha256=0Tc7O2mVQLc8IYXMm__cdeP0ytYn_NucL2xyA95wyT4,5892
|
|
712
|
-
django_cfg/models/tasks/utils.py,sha256=9TEbdxgd0N_O2T_7GGwkyPeDg4H7tSKLHoHG_n8edqg,4459
|
|
713
713
|
django_cfg/modules/__init__.py,sha256=Ip9WMpzImEwIAywpFwU056_v0O9oIGG7nCT1YSArxkw,316
|
|
714
|
-
django_cfg/modules/base.py,sha256=
|
|
714
|
+
django_cfg/modules/base.py,sha256=HoGNleQkBLca-oxF-C7PyNoXPOgSiXGZG2gWcV3Qshs,6615
|
|
715
715
|
django_cfg/modules/django_admin/__init__.py,sha256=0g5SJPtmMhM57MMZG4msvhKbgDTqabf5r95_EsQMQuY,3370
|
|
716
716
|
django_cfg/modules/django_admin/apps.py,sha256=xJjgIRgS_I1ehyq7ZbFpZY_L4umRa5ZPQP3mf0alUaU,526
|
|
717
717
|
django_cfg/modules/django_admin/base/__init__.py,sha256=tzre09bnD_SlS-pA30WzYZRxyvch7eLq3q0wLEcZOmc,118
|
|
@@ -720,7 +720,7 @@ django_cfg/modules/django_admin/base/unfold_admin.py,sha256=iqpRWSkzW5HktXDuuG7G
|
|
|
720
720
|
django_cfg/modules/django_admin/config/__init__.py,sha256=yhoZcTjgl40bDnaPe1MFdNLqYQj02cdE48aVrfGCmXU,968
|
|
721
721
|
django_cfg/modules/django_admin/config/action_config.py,sha256=JjS01JxLT-FzUVq7RlKaB7L38wmVL8uibXO_iXZcljo,1668
|
|
722
722
|
django_cfg/modules/django_admin/config/admin_config.py,sha256=L48YHLt-JyNyL-XOltqIZVh1ALoG4wXQsvi_WIbhuFw,5577
|
|
723
|
-
django_cfg/modules/django_admin/config/background_task_config.py,sha256=
|
|
723
|
+
django_cfg/modules/django_admin/config/background_task_config.py,sha256=71RlnM7m381t9PPXA1EBPWrhl6PJtKRfbGBMnJmofFI,1765
|
|
724
724
|
django_cfg/modules/django_admin/config/documentation_config.py,sha256=lI_gMSWCtyKmdyttLNdgbg_zbGgrwXA-QoLxVOXJj9A,14189
|
|
725
725
|
django_cfg/modules/django_admin/config/field_config.py,sha256=J-CTdhJFP0CLw8T0cOb1FvYwTPpdawv9qVam69QbO4s,12638
|
|
726
726
|
django_cfg/modules/django_admin/config/fieldset_config.py,sha256=5BPUWO_HvS6YhPU_vqQPzRT2y3OIPrBCioFuer5-mrA,1249
|
|
@@ -751,7 +751,7 @@ django_cfg/modules/django_admin/utils/html/__init__.py,sha256=22_xZ2Mlec5U-eSRZw
|
|
|
751
751
|
django_cfg/modules/django_admin/utils/html/badges.py,sha256=fAEW_4U44xcrbQg7wvk3bQb1BYUAp-nWCbDFm8WNBOw,1769
|
|
752
752
|
django_cfg/modules/django_admin/utils/html/base.py,sha256=HWhGTRy1pXFcK2v2Gds7psFDze1S-GS89HDlrmWLq3M,5302
|
|
753
753
|
django_cfg/modules/django_admin/utils/html/code.py,sha256=yBhBjEWI0o9NlB-EJiHFmyxzPDh8wH3iJwv7kB6HDw8,3012
|
|
754
|
-
django_cfg/modules/django_admin/utils/html/composition.py,sha256=
|
|
754
|
+
django_cfg/modules/django_admin/utils/html/composition.py,sha256=KrlRDdpKGosw9tUhGeS1Q7V86gCxYpKv4kGUS2R7jzg,7356
|
|
755
755
|
django_cfg/modules/django_admin/utils/html/formatting.py,sha256=EeSHyObFGPr2Ie6KbySE8WBQtqUFT_BQfXf0oucigIU,8613
|
|
756
756
|
django_cfg/modules/django_admin/utils/html/keyvalue.py,sha256=cBw2RPE3J_3kENYSYNxpm8eY56bwp5yityxBl6N4_q8,7299
|
|
757
757
|
django_cfg/modules/django_admin/utils/html/markdown_integration.py,sha256=r28EyVtma9YfCnSoDDbBthWrZtT9LVmhcXSwe4OG4Ws,3372
|
|
@@ -1000,12 +1000,6 @@ django_cfg/modules/django_ngrok/service.py,sha256=Xkh9Gl6Rth32UcT0UYjD0ckROHFw6F
|
|
|
1000
1000
|
django_cfg/modules/django_ngrok/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1001
1001
|
django_cfg/modules/django_ngrok/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1002
1002
|
django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py,sha256=urwO1nPjcBMPn7k8WXBzfWQpjzCsIKaiET2Gf5afYwk,6259
|
|
1003
|
-
django_cfg/modules/django_q2/README.md,sha256=pyY0EqefXTJ47k_liMv22d0zx-9dHVPGFUSZS3aLQjE,4763
|
|
1004
|
-
django_cfg/modules/django_q2/__init__.py,sha256=6Eu26O-4ddwE8qO27pTT6x13-iPc9eA2Pzq8_cRHZMc,186
|
|
1005
|
-
django_cfg/modules/django_q2/apps.py,sha256=UoSbow-Wlkwriem5mEud1vrUD7_TnqANMzoajGLBVQs,3396
|
|
1006
|
-
django_cfg/modules/django_q2/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1007
|
-
django_cfg/modules/django_q2/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1008
|
-
django_cfg/modules/django_q2/management/commands/sync_django_q_schedules.py,sha256=ik_4kmKp9RUTOaxewWK6KgwK_1_1wJcVZQ2LAdSG0Lo,2671
|
|
1009
1003
|
django_cfg/modules/django_tailwind/README.md,sha256=tPQd4ir79MLFSVUKBGfPAF22LZWE0BcmzcNdQhJ4k7I,10804
|
|
1010
1004
|
django_cfg/modules/django_tailwind/__init__.py,sha256=K0GbFxjemNixRUgexurSTDfN4kB--TmuFCk9n5DbLYc,186
|
|
1011
1005
|
django_cfg/modules/django_tailwind/apps.py,sha256=CKNd0xDoLaQpe7SEfay0ZtWkjLUVRgofkB8FobKLXV8,313
|
|
@@ -1044,7 +1038,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
|
|
|
1044
1038
|
django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
|
|
1045
1039
|
django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
|
|
1046
1040
|
django_cfg/modules/django_unfold/__init__.py,sha256=Uquez6xgPUIc8FBMP7qif-adRYQSjQ2dBHxnJPom3eQ,1337
|
|
1047
|
-
django_cfg/modules/django_unfold/navigation.py,sha256=
|
|
1041
|
+
django_cfg/modules/django_unfold/navigation.py,sha256=cPX9speejarL488CyAfBLkNHJnRbtV5hiQN7a2X8brI,14484
|
|
1048
1042
|
django_cfg/modules/django_unfold/system_monitor.py,sha256=KcrTa5irstdB1pDKe3sC0zl4tz9LVjhp7xvbqUM4YVk,6781
|
|
1049
1043
|
django_cfg/modules/django_unfold/tailwind.py,sha256=NY8nWcUdQw61oNmjPoPl7agcTb-r5IqcpFYy35MNsTM,9107
|
|
1050
1044
|
django_cfg/modules/django_unfold/utils.py,sha256=5aFaceRc9B3eXfpOVyKRD2wWqFt8KcHxjQg54oD7Oyg,4482
|
|
@@ -1061,7 +1055,7 @@ django_cfg/modules/nextjs_admin/models/config.py,sha256=75iM81aaTlDQdhfvdlCzj6o9
|
|
|
1061
1055
|
django_cfg/modules/nextjs_admin/templatetags/__init__.py,sha256=ChVBnJggCIY8rMhfyJFoA8k0qKo-8FtJknrk54Vx4wM,51
|
|
1062
1056
|
django_cfg/modules/nextjs_admin/templatetags/nextjs_admin.py,sha256=aAekrlu3pvvx3I4uJGT3S2ie8QfF94umDBjgAF71EII,4483
|
|
1063
1057
|
django_cfg/registry/__init__.py,sha256=CaiL9KwqPzXlIe5-4Qr7PQu5ZxAW1HtuDIXZ7-ktRQg,538
|
|
1064
|
-
django_cfg/registry/core.py,sha256=
|
|
1058
|
+
django_cfg/registry/core.py,sha256=oHFEmCZDkPNP184mVKVKqD36nN0mJFrLc2q8MWbfSfk,3439
|
|
1065
1059
|
django_cfg/registry/exceptions.py,sha256=b4pIakeRxhT1-ST3lbAnmAQaASRBARCoah_w6vb3VF0,399
|
|
1066
1060
|
django_cfg/registry/modules.py,sha256=OXQ9Ls7KM28kmW2yjT_xPNA_3BsDQyXJFxCmmQpzL7s,2220
|
|
1067
1061
|
django_cfg/registry/services.py,sha256=l0V2twGpF9BwVlo-TTfFu8dV7GVBS7XKCsScIZXWWbc,2457
|
|
@@ -1084,7 +1078,7 @@ django_cfg/static/admin/js/alpine/commands-section.js,sha256=8z2MQNwZF9Tx_2EK1AY
|
|
|
1084
1078
|
django_cfg/static/admin/js/alpine/dashboard-tabs.js,sha256=ob8Q_I9lFLDv_hFERXgTyvqMDBspAGfzCxI_7slRur4,1354
|
|
1085
1079
|
django_cfg/static/admin/js/alpine/system-metrics.js,sha256=m-Fg55K_vpHXToD46PXL9twl4OBF_V9MONvbSWbQqDw,440
|
|
1086
1080
|
django_cfg/static/admin/js/alpine/toggle-section.js,sha256=T141NFmy0fRJyGGuuaCJRjJXwPam-xxtQNW1hi8BJbc,672
|
|
1087
|
-
django_cfg/static/frontend/admin.zip,sha256=
|
|
1081
|
+
django_cfg/static/frontend/admin.zip,sha256=6kj31ET88jIKeZRi5__JGr8wxBZGCHPPfef0G6R-SP8,7679198
|
|
1088
1082
|
django_cfg/static/js/api-loader.mjs,sha256=boGqqRGnFR-Mzo_RQOjhAzNvsb7QxZddSwMKROzkk9Q,5163
|
|
1089
1083
|
django_cfg/static/js/api/base.mjs,sha256=KUxZHHdELAV8mNnACpwJRvaQhdJxp-n5LFEQ4oUZxBo,4707
|
|
1090
1084
|
django_cfg/static/js/api/index.mjs,sha256=_-Q04jjHcgwi4CGfiaLyiOR6NW7Yu1HBhJWp2J1cjpc,2538
|
|
@@ -1107,11 +1101,12 @@ django_cfg/static/js/api/tasks/client.mjs,sha256=tIy8K-finXzTUL9kOo_L4Q1kchDaHyu
|
|
|
1107
1101
|
django_cfg/static/js/api/tasks/index.mjs,sha256=yCY1GzdD-RtFZ3pAfk1l0msgO1epyo0lsGCjH0g1Afc,294
|
|
1108
1102
|
django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
|
|
1109
1103
|
django_cfg/templates/admin/DUAL_TAB_ARCHITECTURE.md,sha256=CL8E3K4rFpXeQiNgrYSMvCW1y-eFaoXxxsI58zPf9dY,17562
|
|
1110
|
-
django_cfg/templates/admin/index.html,sha256=
|
|
1104
|
+
django_cfg/templates/admin/index.html,sha256=j8WVCX-wlg11k9AWEfQQ46xzGiHV5sg2REAV0FKgQIg,37124
|
|
1105
|
+
django_cfg/templates/admin/constance/includes/results_list.html,sha256=Itzs1lGqOYg6ftJUjQ1jWmsbdXDKdov3cDtqMllxih8,3835
|
|
1111
1106
|
django_cfg/templates/emails/base_email.html,sha256=TWcvYa2IHShlF_E8jf1bWZStRO0v8G4L_GexPxvz6XQ,8836
|
|
1112
1107
|
django_cfg/templates/unfold/layouts/skeleton.html,sha256=2ArkcNZ34mFs30cOAsTQ1EZiDXcB0aVxkO71lJq9SLE,718
|
|
1113
1108
|
django_cfg/templatetags/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
1114
|
-
django_cfg/templatetags/django_cfg.py,sha256=
|
|
1109
|
+
django_cfg/templatetags/django_cfg.py,sha256=7vAxJ56vggN9ZEFmV_pUNhSiWjX2nF_4IhaC0Mp82hI,12429
|
|
1115
1110
|
django_cfg/utils/__init__.py,sha256=64wwXJuXytvwt8Ze_erSR2HmV07nGWJ6DV5wloRBvYE,435
|
|
1116
1111
|
django_cfg/utils/path_resolution.py,sha256=2n0I04lQkSssFaELu3A93YyMAl1K10KPdpxMt5k4Iy0,13341
|
|
1117
1112
|
django_cfg/utils/smart_defaults.py,sha256=ZUj6K_Deq-fp5O0Dy_Emt257UWFn0f9bkgFv9YCR58U,9239
|
|
@@ -1119,9 +1114,9 @@ django_cfg/utils/version_check.py,sha256=WO51J2m2e-wVqWCRwbultEwu3q1lQasV67Mw2aa
|
|
|
1119
1114
|
django_cfg/CHANGELOG.md,sha256=jtT3EprqEJkqSUh7IraP73vQ8PmKUMdRtznQsEnqDZk,2052
|
|
1120
1115
|
django_cfg/CONTRIBUTING.md,sha256=DU2kyQ6PU0Z24ob7O_OqKWEYHcZmJDgzw-lQCmu6uBg,3041
|
|
1121
1116
|
django_cfg/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
|
1122
|
-
django_cfg/pyproject.toml,sha256=
|
|
1123
|
-
django_cfg-1.5.
|
|
1124
|
-
django_cfg-1.5.
|
|
1125
|
-
django_cfg-1.5.
|
|
1126
|
-
django_cfg-1.5.
|
|
1127
|
-
django_cfg-1.5.
|
|
1117
|
+
django_cfg/pyproject.toml,sha256=ENc8CngQwTbR8e5jGuNMQNy5_uPmsNBqMBK8C-Vz6-o,8827
|
|
1118
|
+
django_cfg-1.5.3.dist-info/METADATA,sha256=XhXKsyeJ6ST8_7tHOMWOItP92kESUreGpVDO-LOuBlE,24312
|
|
1119
|
+
django_cfg-1.5.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
1120
|
+
django_cfg-1.5.3.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
|
|
1121
|
+
django_cfg-1.5.3.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
|
|
1122
|
+
django_cfg-1.5.3.dist-info/RECORD,,
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Dashboard Permissions
|
|
3
|
-
|
|
4
|
-
Custom permission classes for dashboard API endpoints.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from rest_framework.permissions import BasePermission
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class IsSuperAdmin(BasePermission):
|
|
11
|
-
"""
|
|
12
|
-
Permission that allows access only to superusers.
|
|
13
|
-
|
|
14
|
-
More restrictive than IsAdminUser - requires is_superuser flag.
|
|
15
|
-
Use for sensitive operations like command execution.
|
|
16
|
-
"""
|
|
17
|
-
|
|
18
|
-
def has_permission(self, request, view):
|
|
19
|
-
"""Check if user is authenticated and is a superuser."""
|
|
20
|
-
return bool(
|
|
21
|
-
request.user and
|
|
22
|
-
request.user.is_authenticated and
|
|
23
|
-
request.user.is_superuser
|
|
24
|
-
)
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
class IsStaffOrReadOnly(BasePermission):
|
|
28
|
-
"""
|
|
29
|
-
Permission that allows read access to staff,
|
|
30
|
-
but write access only to superusers.
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
def has_permission(self, request, view):
|
|
34
|
-
"""Check permissions based on request method."""
|
|
35
|
-
# Read permissions are allowed to any staff user
|
|
36
|
-
if request.method in ['GET', 'HEAD', 'OPTIONS']:
|
|
37
|
-
return bool(
|
|
38
|
-
request.user and
|
|
39
|
-
request.user.is_authenticated and
|
|
40
|
-
request.user.is_staff
|
|
41
|
-
)
|
|
42
|
-
|
|
43
|
-
# Write permissions are only allowed to superusers
|
|
44
|
-
return bool(
|
|
45
|
-
request.user and
|
|
46
|
-
request.user.is_authenticated and
|
|
47
|
-
request.user.is_superuser
|
|
48
|
-
)
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Django-Q2 Task Serializers
|
|
3
|
-
|
|
4
|
-
Serializers for displaying Django-Q2 scheduled tasks and task history.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from rest_framework import serializers
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DjangoQ2ScheduleSerializer(serializers.Serializer):
|
|
11
|
-
"""Serializer for Django-Q2 scheduled tasks."""
|
|
12
|
-
|
|
13
|
-
id = serializers.IntegerField(read_only=True)
|
|
14
|
-
name = serializers.CharField(max_length=255)
|
|
15
|
-
func = serializers.CharField(max_length=512)
|
|
16
|
-
schedule_type = serializers.CharField(max_length=24)
|
|
17
|
-
repeats = serializers.IntegerField()
|
|
18
|
-
next_run = serializers.DateTimeField(allow_null=True)
|
|
19
|
-
last_run = serializers.DateTimeField(allow_null=True)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class DjangoQ2TaskSerializer(serializers.Serializer):
|
|
23
|
-
"""Serializer for Django-Q2 task execution history."""
|
|
24
|
-
|
|
25
|
-
id = serializers.CharField(max_length=32)
|
|
26
|
-
name = serializers.CharField(max_length=255)
|
|
27
|
-
func = serializers.CharField(max_length=512)
|
|
28
|
-
started = serializers.DateTimeField()
|
|
29
|
-
stopped = serializers.DateTimeField(allow_null=True)
|
|
30
|
-
success = serializers.BooleanField()
|
|
31
|
-
result = serializers.CharField(allow_null=True)
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
class DjangoQ2StatusSerializer(serializers.Serializer):
|
|
35
|
-
"""Serializer for Django-Q2 cluster status."""
|
|
36
|
-
|
|
37
|
-
cluster_running = serializers.BooleanField()
|
|
38
|
-
total_schedules = serializers.IntegerField()
|
|
39
|
-
active_schedules = serializers.IntegerField()
|
|
40
|
-
recent_tasks = serializers.IntegerField()
|
|
41
|
-
successful_tasks = serializers.IntegerField()
|
|
42
|
-
failed_tasks = serializers.IntegerField()
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
class DjangoQ2SummarySerializer(serializers.Serializer):
|
|
46
|
-
"""Summary serializer for Django-Q2 dashboard."""
|
|
47
|
-
|
|
48
|
-
status = DjangoQ2StatusSerializer()
|
|
49
|
-
schedules = DjangoQ2ScheduleSerializer(many=True)
|
|
50
|
-
recent_tasks = DjangoQ2TaskSerializer(many=True)
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Django-Q2 Service
|
|
3
|
-
|
|
4
|
-
Business logic for collecting Django-Q2 task data.
|
|
5
|
-
"""
|
|
6
|
-
|
|
7
|
-
from typing import Dict, List, Any
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
class DjangoQ2Service:
|
|
11
|
-
"""Service for aggregating Django-Q2 task information."""
|
|
12
|
-
|
|
13
|
-
@staticmethod
|
|
14
|
-
def get_schedules() -> List[Dict[str, Any]]:
|
|
15
|
-
"""
|
|
16
|
-
Get all scheduled tasks from Django-Q2.
|
|
17
|
-
|
|
18
|
-
Returns:
|
|
19
|
-
List of scheduled tasks with their configurations
|
|
20
|
-
"""
|
|
21
|
-
try:
|
|
22
|
-
from django_q.models import Schedule
|
|
23
|
-
|
|
24
|
-
schedules = Schedule.objects.all().order_by('-next_run')
|
|
25
|
-
return [
|
|
26
|
-
{
|
|
27
|
-
'id': schedule.id,
|
|
28
|
-
'name': schedule.name,
|
|
29
|
-
'func': schedule.func,
|
|
30
|
-
'schedule_type': schedule.schedule_type,
|
|
31
|
-
'repeats': schedule.repeats,
|
|
32
|
-
'next_run': schedule.next_run,
|
|
33
|
-
'last_run': getattr(schedule, 'last_run', None),
|
|
34
|
-
}
|
|
35
|
-
for schedule in schedules
|
|
36
|
-
]
|
|
37
|
-
except ImportError:
|
|
38
|
-
# django-q2 not installed
|
|
39
|
-
return []
|
|
40
|
-
except Exception:
|
|
41
|
-
# Database error or table doesn't exist yet
|
|
42
|
-
return []
|
|
43
|
-
|
|
44
|
-
@staticmethod
|
|
45
|
-
def get_recent_tasks(limit: int = 20) -> List[Dict[str, Any]]:
|
|
46
|
-
"""
|
|
47
|
-
Get recent task executions from Django-Q2.
|
|
48
|
-
|
|
49
|
-
Args:
|
|
50
|
-
limit: Maximum number of tasks to return
|
|
51
|
-
|
|
52
|
-
Returns:
|
|
53
|
-
List of recent task executions with their results
|
|
54
|
-
"""
|
|
55
|
-
try:
|
|
56
|
-
from django_q.models import Task
|
|
57
|
-
|
|
58
|
-
tasks = Task.objects.all().order_by('-started')[:limit]
|
|
59
|
-
return [
|
|
60
|
-
{
|
|
61
|
-
'id': task.id,
|
|
62
|
-
'name': task.name,
|
|
63
|
-
'func': task.func,
|
|
64
|
-
'started': task.started,
|
|
65
|
-
'stopped': task.stopped,
|
|
66
|
-
'success': task.success,
|
|
67
|
-
'result': str(task.result) if task.result else None,
|
|
68
|
-
}
|
|
69
|
-
for task in tasks
|
|
70
|
-
]
|
|
71
|
-
except ImportError:
|
|
72
|
-
# django-q2 not installed
|
|
73
|
-
return []
|
|
74
|
-
except Exception:
|
|
75
|
-
# Database error or table doesn't exist yet
|
|
76
|
-
return []
|
|
77
|
-
|
|
78
|
-
@staticmethod
|
|
79
|
-
def get_cluster_status() -> Dict[str, Any]:
|
|
80
|
-
"""
|
|
81
|
-
Get Django-Q2 cluster status.
|
|
82
|
-
|
|
83
|
-
Returns:
|
|
84
|
-
Dictionary with cluster status information
|
|
85
|
-
"""
|
|
86
|
-
try:
|
|
87
|
-
from django_q.models import Schedule, Task
|
|
88
|
-
from django_q.cluster import Cluster
|
|
89
|
-
|
|
90
|
-
# Count schedules
|
|
91
|
-
total_schedules = Schedule.objects.count()
|
|
92
|
-
active_schedules = Schedule.objects.filter(repeats__gt=0).count()
|
|
93
|
-
|
|
94
|
-
# Count recent tasks (last 24 hours)
|
|
95
|
-
from django.utils import timezone
|
|
96
|
-
from datetime import timedelta
|
|
97
|
-
|
|
98
|
-
last_24h = timezone.now() - timedelta(hours=24)
|
|
99
|
-
recent_tasks = Task.objects.filter(started__gte=last_24h).count()
|
|
100
|
-
successful_tasks = Task.objects.filter(
|
|
101
|
-
started__gte=last_24h, success=True
|
|
102
|
-
).count()
|
|
103
|
-
failed_tasks = Task.objects.filter(
|
|
104
|
-
started__gte=last_24h, success=False
|
|
105
|
-
).count()
|
|
106
|
-
|
|
107
|
-
# Check if cluster is running
|
|
108
|
-
cluster_running = False
|
|
109
|
-
try:
|
|
110
|
-
# Check for recent task activity as proxy for cluster status
|
|
111
|
-
recent_task = Task.objects.filter(
|
|
112
|
-
started__gte=timezone.now() - timedelta(minutes=5)
|
|
113
|
-
).exists()
|
|
114
|
-
cluster_running = recent_task
|
|
115
|
-
except Exception:
|
|
116
|
-
pass
|
|
117
|
-
|
|
118
|
-
return {
|
|
119
|
-
'cluster_running': cluster_running,
|
|
120
|
-
'total_schedules': total_schedules,
|
|
121
|
-
'active_schedules': active_schedules,
|
|
122
|
-
'recent_tasks': recent_tasks,
|
|
123
|
-
'successful_tasks': successful_tasks,
|
|
124
|
-
'failed_tasks': failed_tasks,
|
|
125
|
-
}
|
|
126
|
-
except ImportError:
|
|
127
|
-
# django-q2 not installed
|
|
128
|
-
return {
|
|
129
|
-
'cluster_running': False,
|
|
130
|
-
'total_schedules': 0,
|
|
131
|
-
'active_schedules': 0,
|
|
132
|
-
'recent_tasks': 0,
|
|
133
|
-
'successful_tasks': 0,
|
|
134
|
-
'failed_tasks': 0,
|
|
135
|
-
}
|
|
136
|
-
except Exception:
|
|
137
|
-
# Database error or table doesn't exist yet
|
|
138
|
-
return {
|
|
139
|
-
'cluster_running': False,
|
|
140
|
-
'total_schedules': 0,
|
|
141
|
-
'active_schedules': 0,
|
|
142
|
-
'recent_tasks': 0,
|
|
143
|
-
'successful_tasks': 0,
|
|
144
|
-
'failed_tasks': 0,
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
@classmethod
|
|
148
|
-
def get_summary(cls) -> Dict[str, Any]:
|
|
149
|
-
"""
|
|
150
|
-
Get complete Django-Q2 summary for dashboard.
|
|
151
|
-
|
|
152
|
-
Returns:
|
|
153
|
-
Dictionary with status, schedules, and recent tasks
|
|
154
|
-
"""
|
|
155
|
-
return {
|
|
156
|
-
'status': cls.get_cluster_status(),
|
|
157
|
-
'schedules': cls.get_schedules(),
|
|
158
|
-
'recent_tasks': cls.get_recent_tasks(limit=10),
|
|
159
|
-
}
|