django-cfg 1.1.58__tar.gz → 1.1.61__tar.gz

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.
Files changed (262) hide show
  1. {django_cfg-1.1.58 → django_cfg-1.1.61}/PKG-INFO +1 -1
  2. {django_cfg-1.1.58 → django_cfg-1.1.61}/pyproject.toml +1 -1
  3. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/__init__.py +1 -1
  4. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/rundramatiq.py +50 -18
  5. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_tasks.py +17 -66
  6. {django_cfg-1.1.58 → django_cfg-1.1.61}/.gitignore +0 -0
  7. {django_cfg-1.1.58 → django_cfg-1.1.61}/LICENSE +0 -0
  8. {django_cfg-1.1.58 → django_cfg-1.1.61}/MANIFEST.in +0 -0
  9. {django_cfg-1.1.58 → django_cfg-1.1.61}/README.md +0 -0
  10. {django_cfg-1.1.58 → django_cfg-1.1.61}/requirements-dev.txt +0 -0
  11. {django_cfg-1.1.58 → django_cfg-1.1.61}/requirements-test.txt +0 -0
  12. {django_cfg-1.1.58 → django_cfg-1.1.61}/requirements.txt +0 -0
  13. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/__init__.py +0 -0
  14. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/README.md +0 -0
  15. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/__init__.py +0 -0
  16. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/__init__.py +0 -0
  17. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/activity.py +0 -0
  18. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/filters.py +0 -0
  19. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/group.py +0 -0
  20. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/inlines.py +0 -0
  21. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/otp.py +0 -0
  22. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/registration_source.py +0 -0
  23. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/twilio_response.py +0 -0
  24. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/admin/user.py +0 -0
  25. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/apps.py +0 -0
  26. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/management/commands/test_otp.py +0 -0
  27. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/managers/__init__.py +0 -0
  28. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/managers/user_manager.py +0 -0
  29. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/migrations/0001_initial.py +0 -0
  30. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/migrations/0002_add_phone_otp_clean.py +0 -0
  31. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/migrations/0003_twilioresponse.py +0 -0
  32. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/migrations/0004_delete_twilioresponse.py +0 -0
  33. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/migrations/__init__.py +0 -0
  34. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/models.py +0 -0
  35. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/serializers/__init__.py +0 -0
  36. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/serializers/otp.py +0 -0
  37. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/serializers/profile.py +0 -0
  38. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/serializers/webhook.py +0 -0
  39. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/services/__init__.py +0 -0
  40. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/services/activity_service.py +0 -0
  41. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/services/otp_service.py +0 -0
  42. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/signals.py +0 -0
  43. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/templates/emails/base_email.html +0 -0
  44. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/templates/emails/base_email.txt +0 -0
  45. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/templates/emails/otp_email.html +0 -0
  46. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt +0 -0
  47. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/templates/emails/welcome_email.html +0 -0
  48. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/templates/emails/welcome_email.txt +0 -0
  49. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/urls.py +0 -0
  50. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/utils/notifications.py +0 -0
  51. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/views/__init__.py +0 -0
  52. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/views/otp.py +0 -0
  53. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/views/profile.py +0 -0
  54. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/accounts/views/webhook.py +0 -0
  55. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/__init__.py +0 -0
  56. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/commands/__init__.py +0 -0
  57. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/commands/urls.py +0 -0
  58. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/commands/views.py +0 -0
  59. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/health/__init__.py +0 -0
  60. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/health/urls.py +0 -0
  61. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/api/health/views.py +0 -0
  62. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/README.md +0 -0
  63. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/__init__.py +0 -0
  64. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/admin.py +0 -0
  65. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/apps.py +0 -0
  66. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/migrations/0001_initial.py +0 -0
  67. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/migrations/__init__.py +0 -0
  68. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/models.py +0 -0
  69. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/serializers.py +0 -0
  70. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/signals.py +0 -0
  71. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/tests.py +0 -0
  72. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/urls.py +0 -0
  73. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/leads/views.py +0 -0
  74. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/README.md +0 -0
  75. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/__init__.py +0 -0
  76. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/admin.py +0 -0
  77. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/admin_filters.py +0 -0
  78. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/apps.py +0 -0
  79. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/management/__init__.py +0 -0
  80. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/management/commands/__init__.py +0 -0
  81. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -0
  82. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/managers/README.md +0 -0
  83. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/managers/__init__.py +0 -0
  84. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/migrations/0001_initial.py +0 -0
  85. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/migrations/__init__.py +0 -0
  86. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/models.py +0 -0
  87. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/serializers.py +0 -0
  88. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/services/email_service.py +0 -0
  89. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/signals.py +0 -0
  90. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/urls.py +0 -0
  91. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/utils/__init__.py +0 -0
  92. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/views/__init__.py +0 -0
  93. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/views/campaigns.py +0 -0
  94. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/views/emails.py +0 -0
  95. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/views/newsletters.py +0 -0
  96. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/views/subscriptions.py +0 -0
  97. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/newsletter/views/tracking.py +0 -0
  98. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/__init__.py +0 -0
  99. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/admin.py +0 -0
  100. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/admin_filters.py +0 -0
  101. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/apps.py +0 -0
  102. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/managers/message_manager.py +0 -0
  103. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/managers/ticket_manager.py +0 -0
  104. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/migrations/0001_initial.py +0 -0
  105. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -0
  106. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/migrations/__init__.py +0 -0
  107. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/models.py +0 -0
  108. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/serializers.py +0 -0
  109. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/signals.py +0 -0
  110. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/templates/support/chat/access_denied.html +0 -0
  111. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -0
  112. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/urls.py +0 -0
  113. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/utils/__init__.py +0 -0
  114. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/utils/support_email_service.py +0 -0
  115. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/views/__init__.py +0 -0
  116. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/views/admin.py +0 -0
  117. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/views/api.py +0 -0
  118. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/support/views/chat.py +0 -0
  119. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/__init__.py +0 -0
  120. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/admin.py +0 -0
  121. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/apps.py +0 -0
  122. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/serializers.py +0 -0
  123. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -0
  124. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/js/api.js +0 -0
  125. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -0
  126. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/js/modals.js +0 -0
  127. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -0
  128. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -0
  129. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/static/tasks/js/theme.js +0 -0
  130. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/base.html +0 -0
  131. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -0
  132. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -0
  133. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -0
  134. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -0
  135. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/status_cards.html +0 -0
  136. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -0
  137. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -0
  138. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -0
  139. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -0
  140. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -0
  141. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/urls.py +0 -0
  142. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/tasks/views.py +0 -0
  143. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps/urls.py +0 -0
  144. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/apps.py +0 -0
  145. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/archive/django_sample.zip +0 -0
  146. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/README.md +0 -0
  147. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/__init__.py +0 -0
  148. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/commands/__init__.py +0 -0
  149. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/commands/create_project.py +0 -0
  150. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/commands/info.py +0 -0
  151. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/main.py +0 -0
  152. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/cli/utils.py +0 -0
  153. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/core/__init__.py +0 -0
  154. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/core/config.py +0 -0
  155. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/core/environment.py +0 -0
  156. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/core/generation.py +0 -0
  157. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/core/validation.py +0 -0
  158. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/exceptions.py +0 -0
  159. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/integration.py +0 -0
  160. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/__init__.py +0 -0
  161. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/__init__.py +0 -0
  162. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/check_settings.py +0 -0
  163. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/clear_constance.py +0 -0
  164. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/create_token.py +0 -0
  165. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/generate.py +0 -0
  166. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/list_urls.py +0 -0
  167. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/migrator.py +0 -0
  168. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/runserver_ngrok.py +0 -0
  169. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/script.py +0 -0
  170. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/show_config.py +0 -0
  171. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/show_urls.py +0 -0
  172. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/superuser.py +0 -0
  173. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/task_clear.py +0 -0
  174. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/task_status.py +0 -0
  175. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/test_email.py +0 -0
  176. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/test_telegram.py +0 -0
  177. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/test_twilio.py +0 -0
  178. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/tree.py +0 -0
  179. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/management/commands/validate_config.py +0 -0
  180. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/middleware/README.md +0 -0
  181. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/middleware/__init__.py +0 -0
  182. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/middleware/user_activity.py +0 -0
  183. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/__init__.py +0 -0
  184. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/cache.py +0 -0
  185. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/constance.py +0 -0
  186. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/database.py +0 -0
  187. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/drf.py +0 -0
  188. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/jwt.py +0 -0
  189. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/limits.py +0 -0
  190. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/ngrok.py +0 -0
  191. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/revolution.py +0 -0
  192. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/services.py +0 -0
  193. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/tasks.py +0 -0
  194. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/models/unfold.py +0 -0
  195. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/__init__.py +0 -0
  196. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/base.py +0 -0
  197. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_currency/README.md +0 -0
  198. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_currency/__init__.py +0 -0
  199. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_currency/cache.py +0 -0
  200. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_currency/converter.py +0 -0
  201. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_currency/service.py +0 -0
  202. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_email.py +0 -0
  203. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/README.md +0 -0
  204. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/__init__.py +0 -0
  205. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/example.py +0 -0
  206. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/__init__.py +0 -0
  207. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/cache.py +0 -0
  208. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/client.py +0 -0
  209. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/costs.py +0 -0
  210. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/extractor.py +0 -0
  211. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/models_cache.py +0 -0
  212. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/llm/tokenizer.py +0 -0
  213. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/translator/__init__.py +0 -0
  214. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/translator/cache.py +0 -0
  215. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_llm/translator/translator.py +0 -0
  216. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_logger.py +0 -0
  217. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_ngrok.py +0 -0
  218. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_telegram.py +0 -0
  219. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/README.md +0 -0
  220. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/__init__.py +0 -0
  221. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/exceptions.py +0 -0
  222. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/models.py +0 -0
  223. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/sendgrid_service.py +0 -0
  224. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/service.py +0 -0
  225. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/simple_service.py +0 -0
  226. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/templates/guide.md +0 -0
  227. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -0
  228. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -0
  229. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/django_twilio/twilio_service.py +0 -0
  230. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/logger.py +0 -0
  231. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/unfold/__init__.py +0 -0
  232. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/unfold/callbacks.py +0 -0
  233. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/unfold/dashboard.py +0 -0
  234. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/unfold/models.py +0 -0
  235. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/unfold/system_monitor.py +0 -0
  236. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/modules/unfold/tailwind.py +0 -0
  237. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/routers.py +0 -0
  238. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/__init__.py +0 -0
  239. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/index.html +0 -0
  240. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -0
  241. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -0
  242. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/charts_section.html +0 -0
  243. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/django_commands.html +0 -0
  244. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/quick_actions.html +0 -0
  245. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/recent_activity.html +0 -0
  246. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -0
  247. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/stats_cards.html +0 -0
  248. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -0
  249. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/system_health.html +0 -0
  250. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/system_metrics.html +0 -0
  251. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/components/user_permissions.html +0 -0
  252. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -0
  253. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -0
  254. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -0
  255. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -0
  256. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -0
  257. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/admin/snippets/zones/zones_table.html +0 -0
  258. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/templates/emails/base_email.html +0 -0
  259. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/utils/__init__.py +0 -0
  260. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/utils/path_resolution.py +0 -0
  261. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/utils/smart_defaults.py +0 -0
  262. {django_cfg-1.1.58 → django_cfg-1.1.61}/src/django_cfg/version_check.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.1.58
3
+ Version: 1.1.61
4
4
  Summary: 🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience
5
5
  Project-URL: Homepage, https://github.com/markolofsen/django-cfg
6
6
  Project-URL: Documentation, https://django-cfg.readthedocs.io
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "django-cfg"
7
- version = "1.1.58"
7
+ version = "1.1.61"
8
8
  description = "🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -38,7 +38,7 @@ default_app_config = "django_cfg.apps.DjangoCfgConfig"
38
38
  from typing import TYPE_CHECKING
39
39
 
40
40
  # Version information
41
- __version__ = "1.1.58"
41
+ __version__ = "1.1.60"
42
42
  __author__ = "Unrealos Team"
43
43
  __email__ = "info@unrealos.com"
44
44
  __license__ = "MIT"
@@ -183,7 +183,7 @@ class Command(BaseCommand):
183
183
  self.stdout.write(f" {' '.join(worker_args)}")
184
184
 
185
185
  def _start_workers(self, worker_args, options):
186
- """Start Dramatiq workers using Python API instead of CLI."""
186
+ """Start Dramatiq workers using subprocess like django_dramatiq does."""
187
187
  self.stdout.write(
188
188
  self.style.SUCCESS("Starting Dramatiq workers...")
189
189
  )
@@ -209,29 +209,61 @@ class Command(BaseCommand):
209
209
  self.stdout.write(f"PID written to: {options['pid_file']}")
210
210
 
211
211
  try:
212
- # Import dramatiq and get broker
213
- import dramatiq
214
- from dramatiq.worker import Worker
215
- from django_cfg.modules.django_tasks import get_dramatiq_broker
212
+ # Build process arguments like django_dramatiq does
213
+ executable_name = "dramatiq"
214
+ executable_path = self._resolve_executable(executable_name)
216
215
 
217
- # Get the configured broker
218
- broker = get_dramatiq_broker()
216
+ # Discover task modules (including django_dramatiq.setup)
217
+ discovered_modules = self._discover_task_modules()
219
218
 
220
- # Discover and import task modules
221
- discovered_modules = get_task_service().discover_tasks()
222
- for module_name in discovered_modules:
223
- try:
224
- __import__(module_name)
225
- self.stdout.write(f"Loaded tasks from: {module_name}")
226
- except ImportError as e:
227
- self.stdout.write(f"Warning: Could not import {module_name}: {e}")
219
+ process_args = [
220
+ executable_name,
221
+ "--processes", str(processes),
222
+ "--threads", str(threads),
223
+ ]
228
224
 
229
- # Create and start worker
230
- worker = Worker(broker, worker_timeout=600000)
231
- worker.start()
225
+ # Add queues
226
+ if queues:
227
+ process_args.extend(["--queues"] + queues)
228
+
229
+ # Add task modules (including django_dramatiq.setup)
230
+ process_args.extend(discovered_modules)
231
+
232
+ self.stdout.write(f"Running dramatiq: {' '.join(process_args)}")
233
+
234
+ # Use subprocess like django_dramatiq does
235
+ import subprocess
236
+ if sys.platform == "win32":
237
+ command = [executable_path] + process_args[1:]
238
+ sys.exit(subprocess.run(command))
239
+ else:
240
+ # Use os.execvp like django_dramatiq
241
+ os.execvp(executable_path, process_args)
232
242
 
233
243
  except KeyboardInterrupt:
234
244
  self.stdout.write("\nShutting down workers...")
235
245
  except Exception as e:
236
246
  logger.exception("Worker execution failed")
237
247
  raise CommandError(f"Worker execution failed: {e}")
248
+
249
+ def _discover_task_modules(self):
250
+ """Discover task modules like django_dramatiq does."""
251
+ task_modules = ["django_dramatiq.setup"] # Always include setup module
252
+
253
+ # Add discovered modules from django-cfg
254
+ discovered_modules = get_task_service().discover_tasks()
255
+ for module_name in discovered_modules:
256
+ self.stdout.write(f"Discovered tasks module: {module_name}")
257
+ task_modules.append(module_name)
258
+
259
+ return task_modules
260
+
261
+ def _resolve_executable(self, exec_name):
262
+ """Resolve executable path like django_dramatiq does."""
263
+ bin_dir = os.path.dirname(sys.executable)
264
+ if bin_dir:
265
+ for d in [bin_dir, os.path.join(bin_dir, "Scripts")]:
266
+ exec_path = os.path.join(d, exec_name)
267
+ if os.path.isfile(exec_path):
268
+ return exec_path
269
+ return exec_name
@@ -681,6 +681,21 @@ def initialize_task_system():
681
681
 
682
682
  if config and config.enabled:
683
683
  logger.info("🔧 Initializing Django-CFG task system...")
684
+
685
+ # Set up Dramatiq broker from Django settings
686
+ try:
687
+ import dramatiq
688
+ from django.conf import settings
689
+
690
+ # Django-dramatiq automatically configures the broker from DRAMATIQ_BROKER setting
691
+ if hasattr(settings, 'DRAMATIQ_BROKER'):
692
+ logger.debug("✅ Dramatiq broker configured from Django settings")
693
+ else:
694
+ logger.warning("DRAMATIQ_BROKER not found in Django settings")
695
+
696
+ except Exception as e:
697
+ logger.warning(f"Failed to configure Dramatiq: {e}")
698
+
684
699
  logger.info("✅ Task system initialized successfully")
685
700
  logger.info("💡 To start workers, run: python manage.py rundramatiq")
686
701
  else:
@@ -712,70 +727,8 @@ def extend_constance_config_with_tasks():
712
727
  return []
713
728
 
714
729
 
715
- # === Broker Creation ===
716
-
717
- def create_dramatiq_broker():
718
- """
719
- Create and configure Dramatiq broker from Django settings.
720
-
721
- This function creates a broker instance that can be used directly
722
- by the Dramatiq CLI without requiring a separate broker.py file.
723
-
724
- Returns:
725
- dramatiq.Broker: Configured Dramatiq broker instance
726
- """
727
- try:
728
- from django.conf import settings
729
-
730
- if not hasattr(settings, 'DRAMATIQ_BROKER'):
731
- raise RuntimeError("DRAMATIQ_BROKER not configured in Django settings")
732
-
733
- broker_config = settings.DRAMATIQ_BROKER
734
-
735
- # Create broker from Django settings
736
- broker = RedisBroker(**broker_config['OPTIONS'])
737
-
738
- # Add middleware (only if not already present)
739
- existing_middleware_types = {type(mw).__name__ for mw in broker.middleware}
740
-
741
- for middleware_path in broker_config['MIDDLEWARE']:
742
- try:
743
- module_path, class_name = middleware_path.rsplit('.', 1)
744
-
745
- # Skip if middleware of this type already exists
746
- if class_name in existing_middleware_types:
747
- continue
748
-
749
- module = __import__(module_path, fromlist=[class_name])
750
- middleware_class = getattr(module, class_name)
751
- broker.add_middleware(middleware_class())
752
- except Exception as e:
753
- logger.warning(f"Failed to add middleware {middleware_path}: {e}")
754
-
755
- return broker
756
-
757
- except Exception as e:
758
- logger.error(f"Failed to create Dramatiq broker: {e}")
759
- raise
760
-
761
-
762
- # Global broker instance (lazy-loaded)
763
- _broker_instance = None
764
-
765
-
766
- def get_dramatiq_broker():
767
- """
768
- Get the global Dramatiq broker instance.
769
-
770
- Returns:
771
- dramatiq.Broker: The singleton broker instance
772
- """
773
- global _broker_instance
774
-
775
- if _broker_instance is None:
776
- _broker_instance = create_dramatiq_broker()
777
-
778
- return _broker_instance
730
+ # === Broker Creation (Simplified) ===
731
+ # Note: We now use django-dramatiq.setup() instead of custom broker creation
779
732
 
780
733
 
781
734
  # === Exports ===
@@ -791,6 +744,4 @@ __all__ = [
791
744
  "extend_constance_config_with_tasks",
792
745
  "initialize_task_system",
793
746
  "clear_dramatiq_queues",
794
- "create_dramatiq_broker",
795
- "get_dramatiq_broker",
796
747
  ]
File without changes
File without changes
File without changes
File without changes