django-cfg 1.2.15__tar.gz → 1.2.16__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 (523) hide show
  1. {django_cfg-1.2.15 → django_cfg-1.2.16}/PKG-INFO +2 -1
  2. {django_cfg-1.2.15 → django_cfg-1.2.16}/pyproject.toml +14 -1
  3. {django_cfg-1.2.15 → django_cfg-1.2.16}/requirements-dev.txt +1 -0
  4. {django_cfg-1.2.15 → django_cfg-1.2.16}/requirements-test.txt +1 -0
  5. {django_cfg-1.2.15 → django_cfg-1.2.16}/requirements.txt +1 -0
  6. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/__init__.py +1 -1
  7. django_cfg-1.2.16/src/django_cfg/apps/maintenance/README.md +305 -0
  8. django_cfg-1.2.16/src/django_cfg/apps/maintenance/__init__.py +27 -0
  9. django_cfg-1.2.16/src/django_cfg/apps/maintenance/admin/__init__.py +28 -0
  10. django_cfg-1.2.16/src/django_cfg/apps/maintenance/admin/deployments_admin.py +251 -0
  11. django_cfg-1.2.16/src/django_cfg/apps/maintenance/admin/events_admin.py +374 -0
  12. django_cfg-1.2.16/src/django_cfg/apps/maintenance/admin/monitoring_admin.py +215 -0
  13. django_cfg-1.2.16/src/django_cfg/apps/maintenance/admin/sites_admin.py +464 -0
  14. django_cfg-1.2.16/src/django_cfg/apps/maintenance/apps.py +105 -0
  15. django_cfg-1.2.16/src/django_cfg/apps/maintenance/management/commands/maintenance.py +375 -0
  16. django_cfg-1.2.16/src/django_cfg/apps/maintenance/management/commands/sync_cloudflare.py +168 -0
  17. django_cfg-1.2.16/src/django_cfg/apps/maintenance/managers/__init__.py +20 -0
  18. django_cfg-1.2.16/src/django_cfg/apps/maintenance/managers/deployments.py +287 -0
  19. django_cfg-1.2.16/src/django_cfg/apps/maintenance/managers/events.py +374 -0
  20. django_cfg-1.2.16/src/django_cfg/apps/maintenance/managers/monitoring.py +301 -0
  21. django_cfg-1.2.16/src/django_cfg/apps/maintenance/managers/sites.py +335 -0
  22. django_cfg-1.2.16/src/django_cfg/apps/maintenance/migrations/0001_initial.py +939 -0
  23. django_cfg-1.2.16/src/django_cfg/apps/maintenance/models/__init__.py +27 -0
  24. django_cfg-1.2.16/src/django_cfg/apps/maintenance/models/cloudflare.py +316 -0
  25. django_cfg-1.2.16/src/django_cfg/apps/maintenance/models/maintenance.py +334 -0
  26. django_cfg-1.2.16/src/django_cfg/apps/maintenance/models/monitoring.py +393 -0
  27. django_cfg-1.2.16/src/django_cfg/apps/maintenance/models/sites.py +419 -0
  28. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/__init__.py +60 -0
  29. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/actions.py +310 -0
  30. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/base.py +44 -0
  31. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/deployments.py +209 -0
  32. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/events.py +210 -0
  33. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/monitoring.py +278 -0
  34. django_cfg-1.2.16/src/django_cfg/apps/maintenance/serializers/sites.py +213 -0
  35. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/README.md +168 -0
  36. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/__init__.py +21 -0
  37. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/cloudflare_client.py +441 -0
  38. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/dns_manager.py +497 -0
  39. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/maintenance_manager.py +504 -0
  40. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/site_sync.py +448 -0
  41. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/sync_command_service.py +330 -0
  42. django_cfg-1.2.16/src/django_cfg/apps/maintenance/services/worker_manager.py +264 -0
  43. django_cfg-1.2.16/src/django_cfg/apps/maintenance/signals.py +38 -0
  44. django_cfg-1.2.16/src/django_cfg/apps/maintenance/urls.py +36 -0
  45. django_cfg-1.2.16/src/django_cfg/apps/maintenance/views/__init__.py +18 -0
  46. django_cfg-1.2.16/src/django_cfg/apps/maintenance/views/base.py +61 -0
  47. django_cfg-1.2.16/src/django_cfg/apps/maintenance/views/deployments.py +175 -0
  48. django_cfg-1.2.16/src/django_cfg/apps/maintenance/views/events.py +204 -0
  49. django_cfg-1.2.16/src/django_cfg/apps/maintenance/views/monitoring.py +213 -0
  50. django_cfg-1.2.16/src/django_cfg/apps/maintenance/views/sites.py +338 -0
  51. django_cfg-1.2.16/src/django_cfg/apps/support/migrations/__init__.py +0 -0
  52. django_cfg-1.2.16/src/django_cfg/apps/support/utils/__init__.py +0 -0
  53. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/urls.py +5 -1
  54. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/config.py +34 -3
  55. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/generation.py +15 -10
  56. django_cfg-1.2.16/src/django_cfg/models/cloudflare.py +316 -0
  57. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/revolution.py +1 -1
  58. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/tasks.py +1 -1
  59. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/base.py +12 -5
  60. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/dashboard.py +16 -1
  61. django_cfg-1.2.16/src/django_cfg/templatetags/__init__.py +0 -0
  62. {django_cfg-1.2.15 → django_cfg-1.2.16}/.gitignore +0 -0
  63. {django_cfg-1.2.15 → django_cfg-1.2.16}/LICENSE +0 -0
  64. {django_cfg-1.2.15 → django_cfg-1.2.16}/MANIFEST.in +0 -0
  65. {django_cfg-1.2.15 → django_cfg-1.2.16}/README.md +0 -0
  66. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/README.md +0 -0
  67. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/__init__.py +0 -0
  68. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/README.md +0 -0
  69. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/__init__.py +0 -0
  70. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/__init__.py +0 -0
  71. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/activity.py +0 -0
  72. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/filters.py +0 -0
  73. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/group.py +0 -0
  74. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/inlines.py +0 -0
  75. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/otp.py +0 -0
  76. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/registration_source.py +0 -0
  77. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/resources.py +0 -0
  78. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/twilio_response.py +0 -0
  79. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/admin/user.py +0 -0
  80. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/apps.py +0 -0
  81. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/management/commands/test_otp.py +0 -0
  82. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/managers/__init__.py +0 -0
  83. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/managers/user_manager.py +0 -0
  84. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0001_initial.py +0 -0
  85. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0002_add_phone_otp_clean.py +0 -0
  86. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0003_twilioresponse.py +0 -0
  87. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0004_delete_twilioresponse.py +0 -0
  88. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0005_twilioresponse.py +0 -0
  89. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
  90. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/0007_twilioresponse.py +0 -0
  91. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/migrations/__init__.py +0 -0
  92. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/models.py +0 -0
  93. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/serializers/__init__.py +0 -0
  94. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/serializers/otp.py +0 -0
  95. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/serializers/profile.py +0 -0
  96. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/serializers/webhook.py +0 -0
  97. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/services/__init__.py +0 -0
  98. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/services/activity_service.py +0 -0
  99. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/services/otp_service.py +0 -0
  100. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/signals.py +0 -0
  101. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/templates/emails/base_email.html +0 -0
  102. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/templates/emails/base_email.txt +0 -0
  103. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/templates/emails/otp_email.html +0 -0
  104. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt +0 -0
  105. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/templates/emails/welcome_email.html +0 -0
  106. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/templates/emails/welcome_email.txt +0 -0
  107. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/urls.py +0 -0
  108. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/utils/auth_email_service.py +0 -0
  109. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/utils/notifications.py +0 -0
  110. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/views/__init__.py +0 -0
  111. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/views/otp.py +0 -0
  112. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/views/profile.py +0 -0
  113. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/accounts/views/webhook.py +0 -0
  114. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/README.md +0 -0
  115. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/__init__.py +0 -0
  116. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/admin/__init__.py +0 -0
  117. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/admin/execution_admin.py +0 -0
  118. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/admin/registry_admin.py +0 -0
  119. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/admin/toolsets_admin.py +0 -0
  120. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/apps.py +0 -0
  121. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/core/__init__.py +0 -0
  122. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/core/agent.py +0 -0
  123. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/core/dependencies.py +0 -0
  124. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/core/exceptions.py +0 -0
  125. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/core/models.py +0 -0
  126. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/core/orchestrator.py +0 -0
  127. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/examples/__init__.py +0 -0
  128. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/examples/simple_example.py +0 -0
  129. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/integration/__init__.py +0 -0
  130. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/integration/middleware.py +0 -0
  131. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/integration/registry.py +0 -0
  132. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/integration/signals.py +0 -0
  133. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/management/__init__.py +0 -0
  134. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/management/commands/__init__.py +0 -0
  135. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/management/commands/create_agent.py +0 -0
  136. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/management/commands/orchestrator_status.py +0 -0
  137. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/managers/__init__.py +0 -0
  138. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/managers/execution.py +0 -0
  139. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/managers/registry.py +0 -0
  140. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/managers/toolsets.py +0 -0
  141. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/migrations/0001_initial.py +0 -0
  142. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/migrations/__init__.py +0 -0
  143. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/models/__init__.py +0 -0
  144. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/models/execution.py +0 -0
  145. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/models/registry.py +0 -0
  146. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/models/toolsets.py +0 -0
  147. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/patterns/__init__.py +0 -0
  148. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/patterns/content_agents.py +0 -0
  149. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/toolsets/__init__.py +0 -0
  150. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/toolsets/cache_toolset.py +0 -0
  151. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/toolsets/django_toolset.py +0 -0
  152. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/toolsets/file_toolset.py +0 -0
  153. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/toolsets/orm_toolset.py +0 -0
  154. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/agents/urls.py +0 -0
  155. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/__init__.py +0 -0
  156. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/commands/__init__.py +0 -0
  157. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/commands/urls.py +0 -0
  158. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/commands/views.py +0 -0
  159. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/health/__init__.py +0 -0
  160. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/health/urls.py +0 -0
  161. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/api/health/views.py +0 -0
  162. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/README.md +0 -0
  163. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/__init__.py +0 -0
  164. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/admin/__init__.py +0 -0
  165. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/admin/archive_admin.py +0 -0
  166. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/admin/chat_admin.py +0 -0
  167. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/admin/document_admin.py +0 -0
  168. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/admin/external_data_admin.py +0 -0
  169. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/apps.py +0 -0
  170. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/config/README.md +0 -0
  171. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/config/__init__.py +0 -0
  172. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/config/constance_fields.py +0 -0
  173. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/config/constance_settings.py +0 -0
  174. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/config/settings.py +0 -0
  175. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/examples/__init__.py +0 -0
  176. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/examples/external_data_usage.py +0 -0
  177. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/management/__init__.py +0 -0
  178. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/management/commands/__init__.py +0 -0
  179. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/management/commands/knowbase_stats.py +0 -0
  180. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/management/commands/setup_knowbase.py +0 -0
  181. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/managers/__init__.py +0 -0
  182. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/managers/archive.py +0 -0
  183. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/managers/base.py +0 -0
  184. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/managers/chat.py +0 -0
  185. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/managers/document.py +0 -0
  186. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/managers/external_data.py +0 -0
  187. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/migrations/0001_initial.py +0 -0
  188. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -0
  189. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/migrations/__init__.py +0 -0
  190. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/mixins/__init__.py +0 -0
  191. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/mixins/config.py +0 -0
  192. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/mixins/creator.py +0 -0
  193. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -0
  194. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/mixins/external_data_mixin.py +0 -0
  195. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/mixins/service.py +0 -0
  196. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/models/__init__.py +0 -0
  197. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/models/archive.py +0 -0
  198. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/models/base.py +0 -0
  199. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/models/chat.py +0 -0
  200. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/models/document.py +0 -0
  201. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/models/external_data.py +0 -0
  202. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/serializers/__init__.py +0 -0
  203. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/serializers/archive_serializers.py +0 -0
  204. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/serializers/chat_serializers.py +0 -0
  205. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/serializers/document_serializers.py +0 -0
  206. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/serializers/external_data_serializers.py +0 -0
  207. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/serializers/public_serializers.py +0 -0
  208. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/__init__.py +0 -0
  209. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/archive/__init__.py +0 -0
  210. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/archive/archive_service.py +0 -0
  211. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/archive/chunking_service.py +0 -0
  212. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/archive/exceptions.py +0 -0
  213. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/archive/extraction_service.py +0 -0
  214. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/archive/vectorization_service.py +0 -0
  215. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/base.py +0 -0
  216. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/chat_service.py +0 -0
  217. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/document_service.py +0 -0
  218. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/__init__.py +0 -0
  219. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/async_processor.py +0 -0
  220. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/batch_processor.py +0 -0
  221. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/batch_result.py +0 -0
  222. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/models.py +0 -0
  223. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/processors.py +0 -0
  224. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/embedding/utils.py +0 -0
  225. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/prompt_builder.py +0 -0
  226. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/services/search_service.py +0 -0
  227. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/signals/__init__.py +0 -0
  228. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/signals/archive_signals.py +0 -0
  229. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/signals/chat_signals.py +0 -0
  230. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/signals/document_signals.py +0 -0
  231. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/signals/external_data_signals.py +0 -0
  232. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/tasks/__init__.py +0 -0
  233. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/tasks/archive_tasks.py +0 -0
  234. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/tasks/document_processing.py +0 -0
  235. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/tasks/external_data_tasks.py +0 -0
  236. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/tasks/maintenance.py +0 -0
  237. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/urls.py +0 -0
  238. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/utils/__init__.py +0 -0
  239. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/utils/chunk_settings.py +0 -0
  240. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/utils/text_processing.py +0 -0
  241. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/utils/validation.py +0 -0
  242. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/views/__init__.py +0 -0
  243. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/views/archive_views.py +0 -0
  244. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/views/base.py +0 -0
  245. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/views/chat_views.py +0 -0
  246. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/views/document_views.py +0 -0
  247. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/knowbase/views/public_views.py +0 -0
  248. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/README.md +0 -0
  249. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/__init__.py +0 -0
  250. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/admin/__init__.py +0 -0
  251. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/admin/leads_admin.py +0 -0
  252. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/admin/resources.py +0 -0
  253. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/admin.py +0 -0
  254. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/apps.py +0 -0
  255. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/migrations/0001_initial.py +0 -0
  256. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/migrations/__init__.py +0 -0
  257. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/models.py +0 -0
  258. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/serializers.py +0 -0
  259. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/signals.py +0 -0
  260. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/tests.py +0 -0
  261. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/urls.py +0 -0
  262. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/leads/views.py +0 -0
  263. {django_cfg-1.2.15/src/django_cfg/apps/newsletter → django_cfg-1.2.16/src/django_cfg/apps/maintenance/management}/__init__.py +0 -0
  264. {django_cfg-1.2.15/src/django_cfg/apps/newsletter/management → django_cfg-1.2.16/src/django_cfg/apps/maintenance/management/commands}/__init__.py +0 -0
  265. {django_cfg-1.2.15/src/django_cfg/apps/newsletter/management/commands → django_cfg-1.2.16/src/django_cfg/apps/maintenance/migrations}/__init__.py +0 -0
  266. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/README.md +0 -0
  267. {django_cfg-1.2.15/src/django_cfg/apps/newsletter/migrations → django_cfg-1.2.16/src/django_cfg/apps/newsletter}/__init__.py +0 -0
  268. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/admin/__init__.py +0 -0
  269. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/admin/filters.py +0 -0
  270. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -0
  271. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/admin/resources.py +0 -0
  272. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/admin.py +0 -0
  273. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/admin_filters.py +0 -0
  274. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/apps.py +0 -0
  275. {django_cfg-1.2.15/src/django_cfg/apps/support → django_cfg-1.2.16/src/django_cfg/apps/newsletter/management}/__init__.py +0 -0
  276. {django_cfg-1.2.15/src/django_cfg/apps/support/migrations → django_cfg-1.2.16/src/django_cfg/apps/newsletter/management/commands}/__init__.py +0 -0
  277. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -0
  278. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/managers/README.md +0 -0
  279. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/managers/__init__.py +0 -0
  280. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/migrations/0001_initial.py +0 -0
  281. {django_cfg-1.2.15/src/django_cfg/apps/support/utils → django_cfg-1.2.16/src/django_cfg/apps/newsletter/migrations}/__init__.py +0 -0
  282. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/models.py +0 -0
  283. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/serializers.py +0 -0
  284. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/services/email_service.py +0 -0
  285. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/signals.py +0 -0
  286. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/urls.py +0 -0
  287. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/utils/__init__.py +0 -0
  288. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/views/__init__.py +0 -0
  289. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/views/campaigns.py +0 -0
  290. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/views/emails.py +0 -0
  291. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/views/newsletters.py +0 -0
  292. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/views/subscriptions.py +0 -0
  293. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/newsletter/views/tracking.py +0 -0
  294. {django_cfg-1.2.15/src/django_cfg/templatetags → django_cfg-1.2.16/src/django_cfg/apps/support}/__init__.py +0 -0
  295. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/admin/__init__.py +0 -0
  296. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/admin/filters.py +0 -0
  297. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/admin/resources.py +0 -0
  298. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/admin/support_admin.py +0 -0
  299. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/admin.py +0 -0
  300. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/admin_filters.py +0 -0
  301. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/apps.py +0 -0
  302. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/managers/message_manager.py +0 -0
  303. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/managers/ticket_manager.py +0 -0
  304. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/migrations/0001_initial.py +0 -0
  305. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -0
  306. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/models.py +0 -0
  307. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/serializers.py +0 -0
  308. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/signals.py +0 -0
  309. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/templates/support/chat/access_denied.html +0 -0
  310. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -0
  311. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/urls.py +0 -0
  312. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/utils/support_email_service.py +0 -0
  313. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/views/__init__.py +0 -0
  314. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/views/admin.py +0 -0
  315. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/views/api.py +0 -0
  316. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/support/views/chat.py +0 -0
  317. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/__init__.py +0 -0
  318. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/admin.py +0 -0
  319. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/apps.py +0 -0
  320. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/serializers.py +0 -0
  321. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -0
  322. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/js/api.js +0 -0
  323. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -0
  324. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/js/modals.js +0 -0
  325. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -0
  326. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -0
  327. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/static/tasks/js/theme.js +0 -0
  328. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/base.html +0 -0
  329. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -0
  330. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -0
  331. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -0
  332. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -0
  333. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/status_cards.html +0 -0
  334. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -0
  335. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -0
  336. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -0
  337. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -0
  338. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -0
  339. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/urls.py +0 -0
  340. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps/tasks/views.py +0 -0
  341. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/apps.py +0 -0
  342. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/README.md +0 -0
  343. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/__init__.py +0 -0
  344. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/commands/__init__.py +0 -0
  345. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/commands/create_project.py +0 -0
  346. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/commands/info.py +0 -0
  347. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/main.py +0 -0
  348. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/cli/utils.py +0 -0
  349. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/config.py +0 -0
  350. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/__init__.py +0 -0
  351. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/environment.py +0 -0
  352. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/exceptions.py +0 -0
  353. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/integration.py +0 -0
  354. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/core/validation.py +0 -0
  355. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/__init__.py +0 -0
  356. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/__init__.py +0 -0
  357. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/auto_generate.py +0 -0
  358. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/check_settings.py +0 -0
  359. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/clear_constance.py +0 -0
  360. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/create_token.py +0 -0
  361. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/generate.py +0 -0
  362. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/list_urls.py +0 -0
  363. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/migrate_all.py +0 -0
  364. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/migrator.py +0 -0
  365. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/rundramatiq.py +0 -0
  366. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/runserver_ngrok.py +0 -0
  367. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/script.py +0 -0
  368. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/show_config.py +0 -0
  369. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/show_urls.py +0 -0
  370. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/superuser.py +0 -0
  371. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/task_clear.py +0 -0
  372. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/task_status.py +0 -0
  373. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/test_email.py +0 -0
  374. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/test_telegram.py +0 -0
  375. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/test_twilio.py +0 -0
  376. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/tree.py +0 -0
  377. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/management/commands/validate_config.py +0 -0
  378. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/middleware/README.md +0 -0
  379. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/middleware/__init__.py +0 -0
  380. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/middleware/pagination.py +0 -0
  381. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/middleware/public_endpoints.py +0 -0
  382. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/middleware/user_activity.py +0 -0
  383. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/__init__.py +0 -0
  384. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/api.py +0 -0
  385. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/base.py +0 -0
  386. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/cache.py +0 -0
  387. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/cfg.py +0 -0
  388. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/constance.py +0 -0
  389. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/cors.py +0 -0
  390. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/database.py +0 -0
  391. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/drf.py +0 -0
  392. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/email.py +0 -0
  393. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/environment.py +0 -0
  394. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/jwt.py +0 -0
  395. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/limits.py +0 -0
  396. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/logging.py +0 -0
  397. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/ngrok.py +0 -0
  398. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/security.py +0 -0
  399. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/models/services.py +0 -0
  400. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/__init__.py +0 -0
  401. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_currency/README.md +0 -0
  402. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_currency/__init__.py +0 -0
  403. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_currency/cache.py +0 -0
  404. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_currency/converter.py +0 -0
  405. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_currency/service.py +0 -0
  406. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_email.py +0 -0
  407. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_health.py +0 -0
  408. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_import_export/README.md +0 -0
  409. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_import_export/__init__.py +0 -0
  410. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/README.md +0 -0
  411. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/__init__.py +0 -0
  412. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/example.py +0 -0
  413. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/__init__.py +0 -0
  414. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/cache.py +0 -0
  415. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/client.py +0 -0
  416. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/costs.py +0 -0
  417. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/extractor.py +0 -0
  418. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/models.py +0 -0
  419. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/models_cache.py +0 -0
  420. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/llm/tokenizer.py +0 -0
  421. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/translator/__init__.py +0 -0
  422. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/translator/cache.py +0 -0
  423. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_llm/translator/translator.py +0 -0
  424. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_logger.py +0 -0
  425. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_ngrok.py +0 -0
  426. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_tasks.py +0 -0
  427. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_telegram.py +0 -0
  428. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/README.md +0 -0
  429. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/__init__.py +0 -0
  430. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/exceptions.py +0 -0
  431. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/models.py +0 -0
  432. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/sendgrid_service.py +0 -0
  433. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/service.py +0 -0
  434. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/simple_service.py +0 -0
  435. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/templates/guide.md +0 -0
  436. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -0
  437. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -0
  438. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_twilio/twilio_service.py +0 -0
  439. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/__init__.py +0 -0
  440. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/__init__.py +0 -0
  441. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/actions.py +0 -0
  442. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/base.py +0 -0
  443. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/charts.py +0 -0
  444. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/commands.py +0 -0
  445. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/main.py +0 -0
  446. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/revolution.py +0 -0
  447. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/statistics.py +0 -0
  448. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/system.py +0 -0
  449. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/callbacks/users.py +0 -0
  450. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/icons/README.md +0 -0
  451. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/icons/__init__.py +0 -0
  452. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/icons/constants.py +0 -0
  453. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/icons/generate_icons.py +0 -0
  454. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models/__init__.py +0 -0
  455. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models/config.py +0 -0
  456. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models/dashboard.py +0 -0
  457. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models/dropdown.py +0 -0
  458. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models/navigation.py +0 -0
  459. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models/tabs.py +0 -0
  460. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/models.py +0 -0
  461. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/system_monitor.py +0 -0
  462. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/tailwind.py +0 -0
  463. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/django_unfold/utils.py +0 -0
  464. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/dramatiq_setup.py +0 -0
  465. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/modules/logger.py +0 -0
  466. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/registry/__init__.py +0 -0
  467. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/registry/core.py +0 -0
  468. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/registry/exceptions.py +0 -0
  469. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/registry/modules.py +0 -0
  470. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/registry/services.py +0 -0
  471. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/registry/third_party.py +0 -0
  472. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/routing/__init__.py +0 -0
  473. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/routing/callbacks.py +0 -0
  474. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/routing/routers.py +0 -0
  475. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/__init__.py +0 -0
  476. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/action_grid.html +0 -0
  477. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/card.html +0 -0
  478. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/data_table.html +0 -0
  479. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/metric_card.html +0 -0
  480. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/modal.html +0 -0
  481. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/progress_bar.html +0 -0
  482. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/section_header.html +0 -0
  483. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/stat_item.html +0 -0
  484. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/stats_grid.html +0 -0
  485. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/status_badge.html +0 -0
  486. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/components/user_avatar.html +0 -0
  487. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/constance/change_list.html +0 -0
  488. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/constance/includes/default_value.html +0 -0
  489. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -0
  490. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/constance/includes/results_list.html +0 -0
  491. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/constance/includes/setting_row.html +0 -0
  492. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/constance/includes/table_headers.html +0 -0
  493. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/import_export/change_list_export.html +0 -0
  494. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/import_export/change_list_import.html +0 -0
  495. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/import_export/change_list_import_export.html +0 -0
  496. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/index.html +0 -0
  497. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -0
  498. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -0
  499. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/charts_section.html +0 -0
  500. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/django_commands.html +0 -0
  501. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/quick_actions.html +0 -0
  502. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/recent_activity.html +0 -0
  503. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -0
  504. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/stats_cards.html +0 -0
  505. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -0
  506. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/system_health.html +0 -0
  507. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/system_metrics.html +0 -0
  508. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/components/user_permissions.html +0 -0
  509. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -0
  510. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -0
  511. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -0
  512. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -0
  513. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -0
  514. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/admin/snippets/zones/zones_table.html +0 -0
  515. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/emails/base_email.html +0 -0
  516. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templates/rest_framework/api.html +0 -0
  517. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/templatetags/django_cfg.py +0 -0
  518. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/urls.py +0 -0
  519. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/utils/__init__.py +0 -0
  520. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/utils/path_resolution.py +0 -0
  521. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/utils/smart_defaults.py +0 -0
  522. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/utils/toolkit.py +0 -0
  523. {django_cfg-1.2.15 → django_cfg-1.2.16}/src/django_cfg/utils/version_check.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.2.15
3
+ Version: 1.2.16
4
4
  Summary: 🚀 Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one.
5
5
  Project-URL: Homepage, https://djangocfg.com
6
6
  Project-URL: Documentation, https://docs.djangocfg.com
@@ -33,6 +33,7 @@ Requires-Python: <4.0,>=3.12
33
33
  Requires-Dist: beautifulsoup4<5.0,>=4.13.0
34
34
  Requires-Dist: cachetools<7.0,>=5.3.0
35
35
  Requires-Dist: click<9.0,>=8.2.0
36
+ Requires-Dist: cloudflare<5.0,>=4.3.0
36
37
  Requires-Dist: colorlog<7.0,>=6.9.0
37
38
  Requires-Dist: coolname<3.0,>=2.2.0
38
39
  Requires-Dist: currencyconverter<1.0,>=0.18.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "django-cfg"
7
- version = "1.2.15"
7
+ version = "1.2.16"
8
8
  description = "🚀 Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one."
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -63,6 +63,9 @@ dependencies = [
63
63
  "click>=8.2.0,<9.0",
64
64
  "questionary>=2.1.0,<3.0",
65
65
  "rich>=14.0.0,<15.0",
66
+
67
+ # Cloudflare API (latest version with Pydantic fixes)
68
+ "cloudflare>=4.3.0,<5.0",
66
69
  "loguru>=0.7.0,<1.0",
67
70
  "colorlog>=6.9.0,<7.0",
68
71
  "cachetools>=5.3.0,<7.0",
@@ -406,4 +409,14 @@ psutil = "^7.0.0"
406
409
  aiohttp = "^3.12.15"
407
410
  pytest-asyncio = "^1.2.0"
408
411
  pillow = "^11.3.0"
412
+ pytest = "^8.4.2"
413
+ pytest-django = "^4.11.1"
414
+
415
+ [tool.poetry.group.local]
416
+ optional = true
417
+
418
+ [tool.poetry.group.local.dependencies]
419
+ # Local development dependencies - empty by default
420
+ # Uncomment to use local django-revolution development version
421
+ # django-revolution = {path = "../django-revolution", develop = true}
409
422
 
@@ -8,6 +8,7 @@ black>=25.9,<26.0
8
8
  build>=1.3,<2.0
9
9
  cachetools>=5.3.0,<7.0
10
10
  click>=8.2.0,<9.0
11
+ cloudflare>=4.3.0,<5.0
11
12
  colorlog>=6.9.0,<7.0
12
13
  coolname>=2.2.0,<3.0
13
14
  currencyconverter>=0.18.0,<1.0
@@ -6,6 +6,7 @@ PyYAML>=6.0,<7.0
6
6
  beautifulsoup4>=4.13.0,<5.0
7
7
  cachetools>=5.3.0,<7.0
8
8
  click>=8.2.0,<9.0
9
+ cloudflare>=4.3.0,<5.0
9
10
  colorlog>=6.9.0,<7.0
10
11
  coolname>=2.2.0,<3.0
11
12
  currencyconverter>=0.18.0,<1.0
@@ -6,6 +6,7 @@ PyYAML>=6.0,<7.0
6
6
  beautifulsoup4>=4.13.0,<5.0
7
7
  cachetools>=5.3.0,<7.0
8
8
  click>=8.2.0,<9.0
9
+ cloudflare>=4.3.0,<5.0
9
10
  colorlog>=6.9.0,<7.0
10
11
  coolname>=2.2.0,<3.0
11
12
  currencyconverter>=0.18.0,<1.0
@@ -32,7 +32,7 @@ Example:
32
32
  default_app_config = "django_cfg.apps.DjangoCfgConfig"
33
33
 
34
34
  # Version information
35
- __version__ = "1.2.15"
35
+ __version__ = "1.2.16"
36
36
  __license__ = "MIT"
37
37
 
38
38
  # Import registry for organized lazy loading
@@ -0,0 +1,305 @@
1
+ # 🔧 Django-CFG Maintenance Application
2
+
3
+ **Multi-site maintenance mode management with Cloudflare integration**
4
+
5
+ ## 🎯 Overview
6
+
7
+ The Django-CFG Maintenance application provides a comprehensive solution for managing maintenance mode across multiple Cloudflare sites with an ORM-like interface and zero-configuration setup.
8
+
9
+ ### Key Features
10
+
11
+ - ✅ **Zero-Configuration Setup** - Just provide API token and domain
12
+ - ✅ **Multi-Site Management** - Manage hundreds of sites with ORM-like queries
13
+ - ✅ **Bulk Operations** - Enable/disable maintenance for multiple sites at once
14
+ - ✅ **External Monitoring** - Automatic maintenance triggers on health check failures
15
+ - ✅ **Rich Admin Interface** - Full Django admin integration with bulk actions
16
+ - ✅ **CLI Management** - Powerful management commands for automation
17
+ - ✅ **Audit Trail** - Complete logging and event tracking
18
+
19
+ ## 🚀 Quick Start
20
+
21
+ ### 1. Enable in Configuration
22
+
23
+ ```python
24
+ # settings.py or your DjangoConfig
25
+ class MyProjectConfig(DjangoConfig):
26
+ project_name = "My Project"
27
+ enable_maintenance = True # Enable maintenance app
28
+
29
+ # Optional: Zero-config Cloudflare setup
30
+ # Set these environment variables:
31
+ # CLOUDFLARE_API_TOKEN=your_token
32
+ # CLOUDFLARE_DOMAIN=example.com
33
+ ```
34
+
35
+ ### 2. Run Migrations
36
+
37
+ ```bash
38
+ python manage.py migrate
39
+ ```
40
+
41
+ ### 3. Basic Usage
42
+
43
+ #### ORM-like Interface
44
+
45
+ ```python
46
+ from django_cfg.apps.maintenance.services import multi_site_manager
47
+
48
+ # Get sites for user
49
+ sites = multi_site_manager.sites(user)
50
+
51
+ # Enable maintenance for all production sites
52
+ await sites.production().enable_maintenance(
53
+ reason="Database migration",
54
+ message="We're upgrading our database. Back in 30 minutes!"
55
+ )
56
+
57
+ # Disable maintenance for specific project
58
+ await sites.filter(project='ecommerce').disable_maintenance()
59
+
60
+ # Complex filtering
61
+ critical_sites = sites.filter(
62
+ environment='production',
63
+ tags__contains='critical'
64
+ ).exclude(project='legacy')
65
+
66
+ await critical_sites.enable_maintenance(reason="Security patch")
67
+ ```
68
+
69
+ #### CLI Management
70
+
71
+ ```bash
72
+ # Enable maintenance for all production sites
73
+ python manage.py maintenance enable --environment production --reason "Database upgrade"
74
+
75
+ # Disable maintenance for specific project
76
+ python manage.py maintenance disable --project myproject
77
+
78
+ # Check status of all sites
79
+ python manage.py maintenance status
80
+
81
+ # Discover new sites from Cloudflare
82
+ python manage.py maintenance discover --api-token your_token
83
+ ```
84
+
85
+ #### Django Admin
86
+
87
+ - Navigate to `/admin/maintenance/`
88
+ - Use bulk actions to manage multiple sites
89
+ - View comprehensive dashboard with statistics
90
+ - Monitor maintenance events and logs
91
+
92
+ ## 📊 Models
93
+
94
+ ### CloudflareSite
95
+ Individual Cloudflare site configuration with maintenance capabilities.
96
+
97
+ ### SiteGroup
98
+ Logical grouping of sites for bulk operations.
99
+
100
+ ### MaintenanceEvent
101
+ Tracks maintenance events with full audit trail.
102
+
103
+ ### MaintenanceLog
104
+ Detailed logging for maintenance operations.
105
+
106
+ ### MonitoringTarget
107
+ External monitoring configuration for automatic triggers.
108
+
109
+ ### CloudflareDeployment
110
+ Tracks Cloudflare Worker deployments with rollback support.
111
+
112
+ ## 🔧 Services
113
+
114
+ ### CloudflareService
115
+ Core Cloudflare API v4 integration with proper error handling and retries.
116
+
117
+ ### CloudflareAutoSetup
118
+ Zero-configuration setup service that automatically discovers and configures Cloudflare resources.
119
+
120
+ ### MultiSiteManager
121
+ ORM-like interface for multi-site management with bulk operations.
122
+
123
+ ### MonitoringService
124
+ External health check monitoring with automatic maintenance triggers.
125
+
126
+ ## 🎛️ Admin Interface
127
+
128
+ Rich Django admin interface with:
129
+
130
+ - **Site Dashboard** - Overview of all sites with statistics
131
+ - **Bulk Operations** - Enable/disable maintenance for multiple sites
132
+ - **Status Monitoring** - Real-time site status checks
133
+ - **Event Tracking** - Complete audit trail of maintenance events
134
+ - **Log Viewing** - Detailed operation logs with filtering
135
+
136
+ ## 📱 Management Commands
137
+
138
+ ### `maintenance`
139
+
140
+ Comprehensive CLI for maintenance management:
141
+
142
+ ```bash
143
+ # Actions
144
+ python manage.py maintenance enable|disable|status|list|discover
145
+
146
+ # Filters
147
+ --domain example.com
148
+ --environment production|staging|development|testing
149
+ --project myproject
150
+ --tag critical
151
+ --owner username
152
+
153
+ # Options
154
+ --reason "Custom reason"
155
+ --message "Custom maintenance message"
156
+ --dry-run # Preview without executing
157
+ --force # Skip confirmation
158
+ --verbose # Detailed output
159
+ ```
160
+
161
+ ## 🔍 Monitoring
162
+
163
+ ### External Health Checks
164
+
165
+ The monitoring system performs external health checks and automatically triggers maintenance mode when sites become unavailable:
166
+
167
+ ```python
168
+ # Configure monitoring target
169
+ target = MonitoringTarget.objects.create(
170
+ site=site,
171
+ check_url=f"https://{site.domain}/health/",
172
+ check_interval=60, # seconds
173
+ failure_threshold=3,
174
+ recovery_threshold=2,
175
+ auto_enable_maintenance=True,
176
+ auto_disable_maintenance=True
177
+ )
178
+ ```
179
+
180
+ ### Health Check Results
181
+
182
+ All health check results are stored with detailed information:
183
+ - Response time
184
+ - Status code
185
+ - Error messages
186
+ - Success/failure tracking
187
+
188
+ ## 🌐 Zero-Configuration Setup
189
+
190
+ The auto-setup service automatically configures:
191
+
192
+ 1. **Zone Discovery** - Finds Zone ID from domain name
193
+ 2. **Account Discovery** - Extracts Account ID from zone data
194
+ 3. **SSL Configuration** - Sets appropriate SSL/TLS mode
195
+ 4. **DNS Records** - Creates missing DNS records if needed
196
+ 5. **Worker Deployment** - Deploys maintenance mode Worker
197
+ 6. **Monitoring Setup** - Configures health checks
198
+
199
+ ```python
200
+ from django_cfg.models.cloudflare import CloudflareConfig
201
+ from django_cfg.apps.maintenance.services import CloudflareAutoSetup
202
+
203
+ config = CloudflareConfig(
204
+ api_token="your_token",
205
+ domain="example.com"
206
+ )
207
+
208
+ setup = CloudflareAutoSetup(config)
209
+ result = await setup.setup_complete_infrastructure()
210
+
211
+ if result.success:
212
+ print(f"✅ Setup completed in {result.get_duration_seconds():.2f}s")
213
+ else:
214
+ print(f"❌ Setup failed: {result.error_message}")
215
+ ```
216
+
217
+ ## 🔐 Security
218
+
219
+ - **API Token Security** - Tokens stored securely with proper field types
220
+ - **User Permissions** - Site-level access control with owner/shared model
221
+ - **Audit Trail** - Complete logging of all maintenance operations
222
+ - **Input Validation** - Comprehensive validation using Pydantic v2
223
+
224
+ ## 📈 Scalability
225
+
226
+ - **Bulk Operations** - Handle hundreds of sites simultaneously
227
+ - **Async Processing** - Non-blocking operations with proper error handling
228
+ - **Rate Limiting** - Respects Cloudflare API rate limits
229
+ - **Retry Logic** - Exponential backoff for failed operations
230
+ - **Connection Pooling** - Efficient HTTP connection management
231
+
232
+ ## 🧪 Testing
233
+
234
+ ```bash
235
+ # Run maintenance app tests
236
+ python manage.py test django_cfg.apps.maintenance
237
+
238
+ # Test with coverage
239
+ coverage run --source='.' manage.py test django_cfg.apps.maintenance
240
+ coverage report
241
+ ```
242
+
243
+ ## 📚 API Reference
244
+
245
+ ### Multi-Site Manager
246
+
247
+ ```python
248
+ from django_cfg.apps.maintenance.services import multi_site_manager
249
+
250
+ # Get sites queryset
251
+ sites = multi_site_manager.sites(user)
252
+
253
+ # Filtering methods
254
+ sites.production() # Production sites
255
+ sites.staging() # Staging sites
256
+ sites.active() # Active sites
257
+ sites.in_maintenance() # Sites in maintenance
258
+ sites.by_project('name') # Filter by project
259
+ sites.with_tag('tag') # Filter by tag
260
+
261
+ # Bulk operations
262
+ await sites.enable_maintenance(reason, message, user, dry_run)
263
+ await sites.disable_maintenance(user, dry_run)
264
+ await sites.check_status()
265
+
266
+ # Analysis
267
+ sites.get_environment_summary() # Count by environment
268
+ sites.get_status_summary() # Count by status
269
+ sites.get_project_summary() # Count by project
270
+ ```
271
+
272
+ ### Cloudflare Service
273
+
274
+ ```python
275
+ from django_cfg.apps.maintenance.services import CloudflareService
276
+
277
+ async with CloudflareService(api_token) as cf:
278
+ # Zone management
279
+ zones = await cf.get_zones()
280
+ zone = await cf.get_zone_by_name('example.com')
281
+
282
+ # Worker management
283
+ result = await cf.deploy_worker(zone_id, worker_name, script_content)
284
+ success = await cf.delete_worker(zone_id, worker_name)
285
+
286
+ # DNS management
287
+ record_id = await cf.create_dns_record(zone_id, 'A', 'www', '192.0.2.1')
288
+ records = await cf.list_dns_records(zone_id)
289
+
290
+ # SSL management
291
+ settings = await cf.get_ssl_settings(zone_id)
292
+ success = await cf.update_ssl_setting(zone_id, 'flexible')
293
+ ```
294
+
295
+ ## 🤝 Contributing
296
+
297
+ 1. Follow CRITICAL_REQUIREMENTS.md for code standards
298
+ 2. Use proper type hints and Pydantic models
299
+ 3. Add comprehensive tests for new features
300
+ 4. Update documentation for API changes
301
+ 5. Follow django-cfg patterns and conventions
302
+
303
+ ## 📄 License
304
+
305
+ Part of django-cfg package. See main package license.
@@ -0,0 +1,27 @@
1
+ """
2
+ Django-CFG Maintenance Application
3
+
4
+ Multi-site maintenance mode management with Cloudflare integration.
5
+ Provides zero-configuration setup and ORM-like interface for managing
6
+ maintenance mode across multiple sites.
7
+
8
+ Key Features:
9
+ - Zero-configuration Cloudflare setup
10
+ - Multi-site management with ORM-like queries
11
+ - External monitoring for automatic maintenance mode
12
+ - Rich Django admin interface
13
+ - Scheduled maintenance support
14
+ - Full audit trail and logging
15
+
16
+ Example Usage:
17
+ # Zero-config setup
18
+ CLOUDFLARE_API_TOKEN = "your_token"
19
+ CLOUDFLARE_DOMAIN = "example.com"
20
+
21
+ # Multi-site management
22
+ sites = multi_site_manager.sites(user)
23
+ await sites.production().enable_maintenance()
24
+ await sites.filter(project='client-a').disable_maintenance()
25
+ """
26
+
27
+ default_app_config = 'django_cfg.apps.maintenance.apps.MaintenanceConfig'
@@ -0,0 +1,28 @@
1
+ """
2
+ Maintenance admin interfaces.
3
+
4
+ Rich Django admin interfaces for multi-site maintenance management.
5
+ Following django-cfg patterns with Unfold optimization.
6
+ """
7
+
8
+ # Import all admin classes to register them
9
+ from .sites_admin import CloudflareSiteAdmin, SiteGroupAdmin
10
+ from .events_admin import MaintenanceEventAdmin, MaintenanceLogAdmin
11
+ from .monitoring_admin import MonitoringTargetAdmin
12
+ from .deployments_admin import CloudflareDeploymentAdmin
13
+
14
+ __all__ = [
15
+ # Site management
16
+ 'CloudflareSiteAdmin',
17
+ 'SiteGroupAdmin',
18
+
19
+ # Maintenance tracking
20
+ 'MaintenanceEventAdmin',
21
+ 'MaintenanceLogAdmin',
22
+
23
+ # Monitoring
24
+ 'MonitoringTargetAdmin',
25
+
26
+ # Cloudflare integration
27
+ 'CloudflareDeploymentAdmin',
28
+ ]
@@ -0,0 +1,251 @@
1
+ """
2
+ Deployments admin interfaces with Unfold optimization.
3
+ """
4
+
5
+ from django.contrib import admin
6
+ from django.utils.html import format_html
7
+ from django.urls import reverse
8
+ from django.utils.safestring import mark_safe
9
+ from django.db import models
10
+ from django.db.models import Count, Q
11
+ from django.contrib import messages
12
+ from django.shortcuts import redirect
13
+ from unfold.admin import ModelAdmin, TabularInline
14
+ from unfold.decorators import display, action
15
+ from unfold.enums import ActionVariant
16
+ from unfold.contrib.filters.admin import AutocompleteSelectFilter
17
+ from django_cfg import ImportExportModelAdmin, ExportMixin
18
+
19
+ from ..models import CloudflareDeployment
20
+
21
+
22
+ @admin.register(CloudflareDeployment)
23
+ class CloudflareDeploymentAdmin(ModelAdmin, ImportExportModelAdmin):
24
+ """Admin for CloudflareDeployment with Unfold styling."""
25
+
26
+ list_display = [
27
+ "deployment_with_icon",
28
+ "site_link",
29
+ "deployment_type_badge",
30
+ "status_badge",
31
+ "worker_name_display",
32
+ "created_at_display",
33
+ "deployed_at_display"
34
+ ]
35
+ list_display_links = ["deployment_with_icon"]
36
+ search_fields = ["site__name", "site__domain", "worker_name", "script_name"]
37
+ list_filter = [
38
+ "deployment_type",
39
+ "status",
40
+ "created_at",
41
+ "deployed_at",
42
+ ("site", AutocompleteSelectFilter),
43
+ ("maintenance_event", AutocompleteSelectFilter),
44
+ ]
45
+ ordering = ["-created_at"]
46
+ readonly_fields = [
47
+ "deployed_at", "created_at"
48
+ ]
49
+
50
+ fieldsets = (
51
+ ("Deployment Information", {
52
+ "fields": ("site", "deployment_type", "maintenance_event")
53
+ }),
54
+ ("Worker Configuration", {
55
+ "fields": ("worker_name", "script_name", "script_content"),
56
+ "classes": ("collapse",)
57
+ }),
58
+ ("Cloudflare Details", {
59
+ "fields": ("worker_id", "script_id", "deployment_config"),
60
+ "classes": ("collapse",)
61
+ }),
62
+ ("Status & Logs", {
63
+ "fields": ("status", "deployed_at", "deployment_logs"),
64
+ "classes": ("collapse",)
65
+ }),
66
+ ("Timestamps", {
67
+ "fields": ("created_at", "updated_at"),
68
+ "classes": ("collapse",)
69
+ })
70
+ )
71
+
72
+ # Unfold actions
73
+ actions_detail = ["deploy_worker", "undeploy_worker", "view_logs"]
74
+
75
+ @display(description="Deployment", ordering="worker_name")
76
+ def deployment_with_icon(self, obj):
77
+ """Display deployment with status icon."""
78
+ icons = {
79
+ 'pending': '⏳',
80
+ 'deploying': '🚀',
81
+ 'deployed': '✅',
82
+ 'failed': '❌',
83
+ 'undeployed': '🗑️'
84
+ }
85
+ icon = icons.get(obj.status, '📦')
86
+ name = obj.worker_name or obj.script_name or f"Deployment #{obj.id}"
87
+ return format_html('{} {}', icon, name)
88
+
89
+ @display(description="Site")
90
+ def site_link(self, obj):
91
+ """Display site with link."""
92
+ return format_html(
93
+ '<a href="{}" class="text-decoration-none">🌐 {}</a>',
94
+ reverse('admin:django_cfg_maintenance_cloudflaresite_change',
95
+ args=[obj.site.id]),
96
+ obj.site.name
97
+ )
98
+
99
+ @display(description="Type", ordering="deployment_type")
100
+ def deployment_type_badge(self, obj):
101
+ """Display deployment type with colored badge."""
102
+ colors = {
103
+ 'maintenance_page': 'warning',
104
+ 'redirect': 'info',
105
+ 'custom_worker': 'primary',
106
+ 'error_page': 'danger'
107
+ }
108
+ color = colors.get(obj.deployment_type, 'secondary')
109
+ return format_html(
110
+ '<span class="badge badge-{}">{}</span>',
111
+ color, obj.get_deployment_type_display()
112
+ )
113
+
114
+ @display(description="Status", ordering="status")
115
+ def status_badge(self, obj):
116
+ """Display status with colored badge."""
117
+ colors = {
118
+ 'pending': 'secondary',
119
+ 'deploying': 'info',
120
+ 'deployed': 'success',
121
+ 'failed': 'danger',
122
+ 'undeployed': 'warning'
123
+ }
124
+ color = colors.get(obj.status, 'secondary')
125
+ return format_html(
126
+ '<span class="badge badge-{}">{}</span>',
127
+ color, obj.get_status_display()
128
+ )
129
+
130
+ @display(description="Worker")
131
+ def worker_name_display(self, obj):
132
+ """Display worker name or script name."""
133
+ if obj.worker_name:
134
+ return obj.worker_name
135
+ elif obj.script_name:
136
+ return format_html('<em>{}</em>', obj.script_name)
137
+ else:
138
+ return format_html('<span class="text-muted">Auto-generated</span>')
139
+
140
+ @display(description="Created", ordering="created_at")
141
+ def created_at_display(self, obj):
142
+ """Display creation time."""
143
+ return obj.created_at.strftime("%Y-%m-%d %H:%M")
144
+
145
+ @display(description="Deployed", ordering="deployed_at")
146
+ def deployed_at_display(self, obj):
147
+ """Display deployment time."""
148
+ if not obj.deployed_at:
149
+ return format_html('<span class="text-muted">Not deployed</span>')
150
+
151
+ from django.utils import timezone
152
+ from datetime import timedelta
153
+
154
+ now = timezone.now()
155
+ diff = now - obj.deployed_at
156
+
157
+ if diff < timedelta(hours=1):
158
+ color = "success"
159
+ elif diff < timedelta(days=1):
160
+ color = "info"
161
+ else:
162
+ color = "secondary"
163
+
164
+ return format_html(
165
+ '<span class="text-{}">{}</span>',
166
+ color, obj.deployed_at.strftime("%Y-%m-%d %H:%M")
167
+ )
168
+
169
+ def get_queryset(self, request):
170
+ """Optimize queryset."""
171
+ return super().get_queryset(request).select_related(
172
+ 'site', 'maintenance_event'
173
+ )
174
+
175
+ @action(
176
+ description="🚀 Deploy Worker",
177
+ icon="rocket_launch",
178
+ variant=ActionVariant.SUCCESS
179
+ )
180
+ def deploy_worker(self, request, object_id):
181
+ """Deploy Cloudflare Worker."""
182
+ try:
183
+ deployment = CloudflareDeployment.objects.get(id=object_id)
184
+
185
+ if deployment.status == 'deployed':
186
+ messages.warning(request, "Worker is already deployed")
187
+ return redirect(request.META.get('HTTP_REFERER', '/admin/'))
188
+
189
+ # Deploy worker logic here (placeholder)
190
+ deployment.status = 'deploying'
191
+ deployment.save()
192
+
193
+ messages.success(
194
+ request,
195
+ f"Deployment started for {deployment.site.name}"
196
+ )
197
+
198
+ except Exception as e:
199
+ messages.error(request, f"Deployment failed: {str(e)}")
200
+
201
+ return redirect(request.META.get('HTTP_REFERER', '/admin/'))
202
+
203
+ @action(
204
+ description="🗑️ Undeploy Worker",
205
+ icon="delete",
206
+ variant=ActionVariant.DANGER
207
+ )
208
+ def undeploy_worker(self, request, object_id):
209
+ """Undeploy Cloudflare Worker."""
210
+ try:
211
+ deployment = CloudflareDeployment.objects.get(id=object_id)
212
+
213
+ if deployment.status != 'deployed':
214
+ messages.warning(request, "Worker is not currently deployed")
215
+ return redirect(request.META.get('HTTP_REFERER', '/admin/'))
216
+
217
+ # Undeploy worker logic here (placeholder)
218
+ deployment.status = 'undeployed'
219
+ deployment.save()
220
+
221
+ messages.success(
222
+ request,
223
+ f"Worker undeployed for {deployment.site.name}"
224
+ )
225
+
226
+ except Exception as e:
227
+ messages.error(request, f"Undeployment failed: {str(e)}")
228
+
229
+ return redirect(request.META.get('HTTP_REFERER', '/admin/'))
230
+
231
+ @action(
232
+ description="📋 View Logs",
233
+ icon="description",
234
+ variant=ActionVariant.INFO
235
+ )
236
+ def view_logs(self, request, object_id):
237
+ """View deployment logs."""
238
+ try:
239
+ deployment = CloudflareDeployment.objects.get(id=object_id)
240
+
241
+ # This would typically redirect to a logs view
242
+ # For now, just show a message
243
+ messages.info(
244
+ request,
245
+ f"Logs for deployment {deployment.id} would be displayed here"
246
+ )
247
+
248
+ except Exception as e:
249
+ messages.error(request, f"Failed to retrieve logs: {str(e)}")
250
+
251
+ return redirect(request.META.get('HTTP_REFERER', '/admin/'))