django-cfg 1.2.1__tar.gz → 1.2.3__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 (447) hide show
  1. {django_cfg-1.2.1 → django_cfg-1.2.3}/PKG-INFO +7 -8
  2. {django_cfg-1.2.1 → django_cfg-1.2.3}/pyproject.toml +11 -8
  3. {django_cfg-1.2.1 → django_cfg-1.2.3}/requirements-dev.txt +0 -1
  4. {django_cfg-1.2.1 → django_cfg-1.2.3}/requirements-test.txt +0 -1
  5. {django_cfg-1.2.1 → django_cfg-1.2.3}/requirements.txt +0 -1
  6. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/__init__.py +1 -1
  7. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/views/otp.py +9 -0
  8. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/views.py +13 -0
  9. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/config.py +4 -2
  10. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/generation.py +46 -24
  11. django_cfg-1.2.3/src/django_cfg/models/cfg.py +99 -0
  12. django_cfg-1.2.3/src/django_cfg/models/cors.py +118 -0
  13. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/drf.py +22 -15
  14. {django_cfg-1.2.1 → django_cfg-1.2.3}/.gitignore +0 -0
  15. {django_cfg-1.2.1 → django_cfg-1.2.3}/LICENSE +0 -0
  16. {django_cfg-1.2.1 → django_cfg-1.2.3}/MANIFEST.in +0 -0
  17. {django_cfg-1.2.1 → django_cfg-1.2.3}/README.md +0 -0
  18. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/README.md +0 -0
  19. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/__init__.py +0 -0
  20. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/README.md +0 -0
  21. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/__init__.py +0 -0
  22. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/__init__.py +0 -0
  23. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/activity.py +0 -0
  24. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/filters.py +0 -0
  25. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/group.py +0 -0
  26. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/inlines.py +0 -0
  27. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/otp.py +0 -0
  28. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/registration_source.py +0 -0
  29. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/resources.py +0 -0
  30. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/twilio_response.py +0 -0
  31. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/admin/user.py +0 -0
  32. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/apps.py +0 -0
  33. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/management/commands/test_otp.py +0 -0
  34. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/managers/__init__.py +0 -0
  35. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/managers/user_manager.py +0 -0
  36. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/0001_initial.py +0 -0
  37. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/0002_add_phone_otp_clean.py +0 -0
  38. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/0003_twilioresponse.py +0 -0
  39. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/0004_delete_twilioresponse.py +0 -0
  40. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/0005_twilioresponse.py +0 -0
  41. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
  42. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/migrations/__init__.py +0 -0
  43. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/models.py +0 -0
  44. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/serializers/__init__.py +0 -0
  45. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/serializers/otp.py +0 -0
  46. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/serializers/profile.py +0 -0
  47. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/serializers/webhook.py +0 -0
  48. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/services/__init__.py +0 -0
  49. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/services/activity_service.py +0 -0
  50. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/services/otp_service.py +0 -0
  51. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/signals.py +0 -0
  52. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/templates/emails/base_email.html +0 -0
  53. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/templates/emails/base_email.txt +0 -0
  54. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/templates/emails/otp_email.html +0 -0
  55. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt +0 -0
  56. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/templates/emails/welcome_email.html +0 -0
  57. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/templates/emails/welcome_email.txt +0 -0
  58. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/urls.py +0 -0
  59. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/utils/auth_email_service.py +0 -0
  60. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/utils/notifications.py +0 -0
  61. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/views/__init__.py +0 -0
  62. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/views/profile.py +0 -0
  63. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/accounts/views/webhook.py +0 -0
  64. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/README.md +0 -0
  65. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/__init__.py +0 -0
  66. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/admin/__init__.py +0 -0
  67. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/admin/execution_admin.py +0 -0
  68. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/admin/registry_admin.py +0 -0
  69. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/admin/toolsets_admin.py +0 -0
  70. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/apps.py +0 -0
  71. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/core/__init__.py +0 -0
  72. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/core/agent.py +0 -0
  73. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/core/dependencies.py +0 -0
  74. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/core/exceptions.py +0 -0
  75. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/core/models.py +0 -0
  76. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/core/orchestrator.py +0 -0
  77. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/examples/__init__.py +0 -0
  78. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/examples/simple_example.py +0 -0
  79. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/integration/__init__.py +0 -0
  80. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/integration/middleware.py +0 -0
  81. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/integration/registry.py +0 -0
  82. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/integration/signals.py +0 -0
  83. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/management/__init__.py +0 -0
  84. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/management/commands/__init__.py +0 -0
  85. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/management/commands/create_agent.py +0 -0
  86. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/management/commands/orchestrator_status.py +0 -0
  87. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/managers/__init__.py +0 -0
  88. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/managers/execution.py +0 -0
  89. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/managers/registry.py +0 -0
  90. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/managers/toolsets.py +0 -0
  91. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/migrations/0001_initial.py +0 -0
  92. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/migrations/__init__.py +0 -0
  93. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/models/__init__.py +0 -0
  94. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/models/execution.py +0 -0
  95. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/models/registry.py +0 -0
  96. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/models/toolsets.py +0 -0
  97. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/patterns/__init__.py +0 -0
  98. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/patterns/content_agents.py +0 -0
  99. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/toolsets/__init__.py +0 -0
  100. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/toolsets/cache_toolset.py +0 -0
  101. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/toolsets/django_toolset.py +0 -0
  102. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/toolsets/file_toolset.py +0 -0
  103. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/toolsets/orm_toolset.py +0 -0
  104. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/agents/urls.py +0 -0
  105. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/__init__.py +0 -0
  106. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/commands/__init__.py +0 -0
  107. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/commands/urls.py +0 -0
  108. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/commands/views.py +0 -0
  109. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/health/__init__.py +0 -0
  110. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/health/urls.py +0 -0
  111. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/api/health/views.py +0 -0
  112. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/README.md +0 -0
  113. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/__init__.py +0 -0
  114. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/admin/__init__.py +0 -0
  115. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/admin/archive_admin.py +0 -0
  116. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/admin/chat_admin.py +0 -0
  117. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/admin/document_admin.py +0 -0
  118. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/admin/external_data_admin.py +0 -0
  119. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/apps.py +0 -0
  120. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/config/README.md +0 -0
  121. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/config/__init__.py +0 -0
  122. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/config/constance_fields.py +0 -0
  123. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/config/constance_settings.py +0 -0
  124. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/config/settings.py +0 -0
  125. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/examples/__init__.py +0 -0
  126. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/examples/external_data_usage.py +0 -0
  127. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/management/__init__.py +0 -0
  128. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/management/commands/__init__.py +0 -0
  129. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/management/commands/knowbase_stats.py +0 -0
  130. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/management/commands/setup_knowbase.py +0 -0
  131. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/managers/__init__.py +0 -0
  132. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/managers/archive.py +0 -0
  133. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/managers/base.py +0 -0
  134. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/managers/chat.py +0 -0
  135. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/managers/document.py +0 -0
  136. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/managers/external_data.py +0 -0
  137. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/migrations/0001_initial.py +0 -0
  138. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -0
  139. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/migrations/__init__.py +0 -0
  140. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/mixins/__init__.py +0 -0
  141. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/mixins/config.py +0 -0
  142. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/mixins/creator.py +0 -0
  143. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -0
  144. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/mixins/external_data_mixin.py +0 -0
  145. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/mixins/service.py +0 -0
  146. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/models/__init__.py +0 -0
  147. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/models/archive.py +0 -0
  148. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/models/base.py +0 -0
  149. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/models/chat.py +0 -0
  150. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/models/document.py +0 -0
  151. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/models/external_data.py +0 -0
  152. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/serializers/__init__.py +0 -0
  153. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/serializers/archive_serializers.py +0 -0
  154. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/serializers/chat_serializers.py +0 -0
  155. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/serializers/document_serializers.py +0 -0
  156. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/serializers/external_data_serializers.py +0 -0
  157. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/serializers/public_serializers.py +0 -0
  158. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/__init__.py +0 -0
  159. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/archive/__init__.py +0 -0
  160. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/archive/archive_service.py +0 -0
  161. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/archive/chunking_service.py +0 -0
  162. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/archive/exceptions.py +0 -0
  163. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/archive/extraction_service.py +0 -0
  164. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/archive/vectorization_service.py +0 -0
  165. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/base.py +0 -0
  166. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/chat_service.py +0 -0
  167. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/document_service.py +0 -0
  168. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/__init__.py +0 -0
  169. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/async_processor.py +0 -0
  170. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/batch_processor.py +0 -0
  171. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/batch_result.py +0 -0
  172. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/models.py +0 -0
  173. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/processors.py +0 -0
  174. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/embedding/utils.py +0 -0
  175. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/prompt_builder.py +0 -0
  176. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/services/search_service.py +0 -0
  177. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/signals/__init__.py +0 -0
  178. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/signals/archive_signals.py +0 -0
  179. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/signals/chat_signals.py +0 -0
  180. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/signals/document_signals.py +0 -0
  181. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/signals/external_data_signals.py +0 -0
  182. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/tasks/__init__.py +0 -0
  183. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/tasks/archive_tasks.py +0 -0
  184. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/tasks/document_processing.py +0 -0
  185. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/tasks/external_data_tasks.py +0 -0
  186. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/tasks/maintenance.py +0 -0
  187. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/urls.py +0 -0
  188. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/utils/__init__.py +0 -0
  189. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/utils/chunk_settings.py +0 -0
  190. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/utils/text_processing.py +0 -0
  191. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/utils/validation.py +0 -0
  192. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/views/__init__.py +0 -0
  193. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/views/archive_views.py +0 -0
  194. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/views/base.py +0 -0
  195. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/views/chat_views.py +0 -0
  196. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/views/document_views.py +0 -0
  197. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/knowbase/views/public_views.py +0 -0
  198. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/README.md +0 -0
  199. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/__init__.py +0 -0
  200. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/admin/__init__.py +0 -0
  201. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/admin/leads_admin.py +0 -0
  202. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/admin/resources.py +0 -0
  203. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/admin.py +0 -0
  204. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/apps.py +0 -0
  205. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/migrations/0001_initial.py +0 -0
  206. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/migrations/__init__.py +0 -0
  207. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/models.py +0 -0
  208. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/serializers.py +0 -0
  209. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/signals.py +0 -0
  210. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/tests.py +0 -0
  211. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/urls.py +0 -0
  212. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/leads/views.py +0 -0
  213. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/README.md +0 -0
  214. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/__init__.py +0 -0
  215. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/admin/__init__.py +0 -0
  216. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/admin/filters.py +0 -0
  217. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -0
  218. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/admin/resources.py +0 -0
  219. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/admin.py +0 -0
  220. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/admin_filters.py +0 -0
  221. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/apps.py +0 -0
  222. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/management/__init__.py +0 -0
  223. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/management/commands/__init__.py +0 -0
  224. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -0
  225. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/managers/README.md +0 -0
  226. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/managers/__init__.py +0 -0
  227. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/migrations/0001_initial.py +0 -0
  228. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/migrations/__init__.py +0 -0
  229. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/models.py +0 -0
  230. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/serializers.py +0 -0
  231. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/services/email_service.py +0 -0
  232. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/signals.py +0 -0
  233. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/urls.py +0 -0
  234. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/utils/__init__.py +0 -0
  235. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/views/__init__.py +0 -0
  236. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/views/campaigns.py +0 -0
  237. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/views/emails.py +0 -0
  238. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/views/newsletters.py +0 -0
  239. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/views/subscriptions.py +0 -0
  240. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/newsletter/views/tracking.py +0 -0
  241. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/__init__.py +0 -0
  242. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/admin/__init__.py +0 -0
  243. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/admin/filters.py +0 -0
  244. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/admin/resources.py +0 -0
  245. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/admin/support_admin.py +0 -0
  246. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/admin.py +0 -0
  247. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/admin_filters.py +0 -0
  248. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/apps.py +0 -0
  249. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/managers/message_manager.py +0 -0
  250. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/managers/ticket_manager.py +0 -0
  251. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/migrations/0001_initial.py +0 -0
  252. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -0
  253. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/migrations/__init__.py +0 -0
  254. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/models.py +0 -0
  255. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/serializers.py +0 -0
  256. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/signals.py +0 -0
  257. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/templates/support/chat/access_denied.html +0 -0
  258. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -0
  259. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/urls.py +0 -0
  260. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/utils/__init__.py +0 -0
  261. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/utils/support_email_service.py +0 -0
  262. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/views/__init__.py +0 -0
  263. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/views/admin.py +0 -0
  264. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/views/api.py +0 -0
  265. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/support/views/chat.py +0 -0
  266. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/__init__.py +0 -0
  267. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/admin.py +0 -0
  268. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/apps.py +0 -0
  269. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/serializers.py +0 -0
  270. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -0
  271. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/js/api.js +0 -0
  272. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -0
  273. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/js/modals.js +0 -0
  274. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -0
  275. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -0
  276. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/static/tasks/js/theme.js +0 -0
  277. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/base.html +0 -0
  278. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -0
  279. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -0
  280. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -0
  281. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -0
  282. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/status_cards.html +0 -0
  283. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -0
  284. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -0
  285. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -0
  286. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -0
  287. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -0
  288. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/tasks/urls.py +0 -0
  289. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps/urls.py +0 -0
  290. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/apps.py +0 -0
  291. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/README.md +0 -0
  292. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/__init__.py +0 -0
  293. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/commands/__init__.py +0 -0
  294. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/commands/create_project.py +0 -0
  295. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/commands/info.py +0 -0
  296. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/main.py +0 -0
  297. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/cli/utils.py +0 -0
  298. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/config.py +0 -0
  299. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/__init__.py +0 -0
  300. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/environment.py +0 -0
  301. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/exceptions.py +0 -0
  302. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/integration.py +0 -0
  303. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/core/validation.py +0 -0
  304. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/__init__.py +0 -0
  305. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/__init__.py +0 -0
  306. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/auto_generate.py +0 -0
  307. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/check_settings.py +0 -0
  308. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/clear_constance.py +0 -0
  309. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/create_token.py +0 -0
  310. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/generate.py +0 -0
  311. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/list_urls.py +0 -0
  312. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/migrate_all.py +0 -0
  313. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/migrator.py +0 -0
  314. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/rundramatiq.py +0 -0
  315. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/runserver_ngrok.py +0 -0
  316. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/script.py +0 -0
  317. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/show_config.py +0 -0
  318. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/show_urls.py +0 -0
  319. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/superuser.py +0 -0
  320. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/task_clear.py +0 -0
  321. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/task_status.py +0 -0
  322. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/test_email.py +0 -0
  323. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/test_telegram.py +0 -0
  324. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/test_twilio.py +0 -0
  325. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/tree.py +0 -0
  326. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/management/commands/validate_config.py +0 -0
  327. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/middleware/README.md +0 -0
  328. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/middleware/__init__.py +0 -0
  329. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/middleware/public_endpoints.py +0 -0
  330. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/middleware/user_activity.py +0 -0
  331. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/__init__.py +0 -0
  332. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/api.py +0 -0
  333. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/base.py +0 -0
  334. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/cache.py +0 -0
  335. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/constance.py +0 -0
  336. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/database.py +0 -0
  337. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/email.py +0 -0
  338. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/environment.py +0 -0
  339. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/jwt.py +0 -0
  340. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/limits.py +0 -0
  341. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/logging.py +0 -0
  342. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/ngrok.py +0 -0
  343. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/revolution.py +0 -0
  344. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/security.py +0 -0
  345. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/services.py +0 -0
  346. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/models/tasks.py +0 -0
  347. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/__init__.py +0 -0
  348. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/base.py +0 -0
  349. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_currency/README.md +0 -0
  350. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_currency/__init__.py +0 -0
  351. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_currency/cache.py +0 -0
  352. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_currency/converter.py +0 -0
  353. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_currency/service.py +0 -0
  354. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_email.py +0 -0
  355. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_health.py +0 -0
  356. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/README.md +0 -0
  357. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/__init__.py +0 -0
  358. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/example.py +0 -0
  359. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/__init__.py +0 -0
  360. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/cache.py +0 -0
  361. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/client.py +0 -0
  362. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/costs.py +0 -0
  363. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/extractor.py +0 -0
  364. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/models.py +0 -0
  365. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/models_cache.py +0 -0
  366. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/llm/tokenizer.py +0 -0
  367. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/translator/__init__.py +0 -0
  368. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/translator/cache.py +0 -0
  369. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_llm/translator/translator.py +0 -0
  370. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_logger.py +0 -0
  371. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_ngrok.py +0 -0
  372. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_tasks.py +0 -0
  373. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_telegram.py +0 -0
  374. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/README.md +0 -0
  375. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/__init__.py +0 -0
  376. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/exceptions.py +0 -0
  377. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/models.py +0 -0
  378. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/sendgrid_service.py +0 -0
  379. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/service.py +0 -0
  380. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/simple_service.py +0 -0
  381. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/templates/guide.md +0 -0
  382. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -0
  383. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -0
  384. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_twilio/twilio_service.py +0 -0
  385. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/__init__.py +0 -0
  386. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/callbacks.py +0 -0
  387. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/dashboard.py +0 -0
  388. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/icons/README.md +0 -0
  389. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/icons/__init__.py +0 -0
  390. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/icons/constants.py +0 -0
  391. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/icons/generate_icons.py +0 -0
  392. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models/__init__.py +0 -0
  393. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models/config.py +0 -0
  394. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models/dashboard.py +0 -0
  395. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models/dropdown.py +0 -0
  396. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models/navigation.py +0 -0
  397. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models/tabs.py +0 -0
  398. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/models.py +0 -0
  399. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/system_monitor.py +0 -0
  400. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/tailwind.py +0 -0
  401. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/django_unfold/utils.py +0 -0
  402. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/dramatiq_setup.py +0 -0
  403. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/modules/logger.py +0 -0
  404. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/registry/__init__.py +0 -0
  405. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/registry/core.py +0 -0
  406. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/registry/exceptions.py +0 -0
  407. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/registry/modules.py +0 -0
  408. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/registry/services.py +0 -0
  409. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/registry/third_party.py +0 -0
  410. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/routing/__init__.py +0 -0
  411. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/routing/callbacks.py +0 -0
  412. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/routing/routers.py +0 -0
  413. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/__init__.py +0 -0
  414. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/constance/change_list.html +0 -0
  415. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/constance/includes/default_value.html +0 -0
  416. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -0
  417. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/constance/includes/results_list.html +0 -0
  418. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/constance/includes/setting_row.html +0 -0
  419. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/constance/includes/table_headers.html +0 -0
  420. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/index.html +0 -0
  421. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -0
  422. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -0
  423. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/charts_section.html +0 -0
  424. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/django_commands.html +0 -0
  425. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/quick_actions.html +0 -0
  426. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/recent_activity.html +0 -0
  427. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -0
  428. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/stats_cards.html +0 -0
  429. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -0
  430. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/system_health.html +0 -0
  431. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/system_metrics.html +0 -0
  432. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/components/user_permissions.html +0 -0
  433. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -0
  434. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -0
  435. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -0
  436. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -0
  437. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -0
  438. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/admin/snippets/zones/zones_table.html +0 -0
  439. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templates/emails/base_email.html +0 -0
  440. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templatetags/__init__.py +0 -0
  441. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/templatetags/django_cfg.py +0 -0
  442. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/urls.py +0 -0
  443. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/utils/__init__.py +0 -0
  444. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/utils/path_resolution.py +0 -0
  445. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/utils/smart_defaults.py +0 -0
  446. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/utils/toolkit.py +0 -0
  447. {django_cfg-1.2.1 → django_cfg-1.2.3}/src/django_cfg/utils/version_check.py +0 -0
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.2.1
4
- Summary: 🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience
5
- Project-URL: Homepage, https://github.com/markolofsen/django-cfg
6
- Project-URL: Documentation, https://django-cfg.readthedocs.io
7
- Project-URL: Repository, https://github.com/markolofsen/django-cfg.git
8
- Project-URL: Issues, https://github.com/markolofsen/django-cfg/issues
9
- Project-URL: Changelog, https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md
3
+ Version: 1.2.3
4
+ Summary: 🚀 Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one.
5
+ Project-URL: Homepage, https://django-cfg.com
6
+ Project-URL: Documentation, https://django-cfg.com
7
+ Project-URL: Repository, https://django-cfg.com
8
+ Project-URL: Issues, https://django-cfg.com
9
+ Project-URL: Changelog, https://django-cfg.com
10
10
  Author-email: ReformsAI Team <dev@reforms.ai>
11
11
  Maintainer-email: ReformsAI Team <dev@reforms.ai>
12
12
  License: MIT
@@ -47,7 +47,6 @@ Requires-Dist: django-import-export<5.0,>=4.3.0
47
47
  Requires-Dist: django-json-widget<3.0,>=2.0.0
48
48
  Requires-Dist: django-ratelimit<5.0.0,>=4.1.0
49
49
  Requires-Dist: django-redis<7.0,>=6.0.0
50
- Requires-Dist: django-revolution<2.0,>=1.0.35
51
50
  Requires-Dist: django-unfold<1.0,>=0.64.0
52
51
  Requires-Dist: djangorestframework-simplejwt<6.0,>=5.5.0
53
52
  Requires-Dist: djangorestframework-simplejwt[token-blacklist]<6.0,>=5.5.0
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "django-cfg"
7
- version = "1.2.1"
8
- description = "🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience"
7
+ version = "1.2.3"
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"}
11
11
  authors = [
@@ -90,7 +90,6 @@ dependencies = [
90
90
  "django-import-export>=4.3.0,<5.0",
91
91
  "django-extensions>=4.1.0,<5.0",
92
92
  "django-constance>=4.3.0,<5.0",
93
- "django-revolution>=1.0.35,<2.0",
94
93
  "django-unfold>=0.64.0,<1.0",
95
94
  "django-redis>=6.0.0,<7.0",
96
95
  "redis>=6.4.0,<7.0",
@@ -119,6 +118,10 @@ dependencies = [
119
118
  "pydantic-ai>=1.0.10,<2.0",
120
119
  ]
121
120
 
121
+ django-revolution = "1.0.43"
122
+ # Local development dependencies
123
+ # django-revolution = {path = "../django-revolution", develop = true}
124
+
122
125
  [project.optional-dependencies]
123
126
 
124
127
  # Django compatibility - users should install one of these (minimum 5.2)
@@ -187,11 +190,11 @@ full = [
187
190
  ]
188
191
 
189
192
  [project.urls]
190
- Homepage = "https://github.com/markolofsen/django-cfg"
191
- Documentation = "https://django-cfg.readthedocs.io"
192
- Repository = "https://github.com/markolofsen/django-cfg.git"
193
- Issues = "https://github.com/markolofsen/django-cfg/issues"
194
- Changelog = "https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md"
193
+ Homepage = "https://django-cfg.com"
194
+ Documentation = "https://django-cfg.com"
195
+ Repository = "https://django-cfg.com"
196
+ Issues = "https://django-cfg.com"
197
+ Changelog = "https://django-cfg.com"
195
198
 
196
199
  [project.scripts]
197
200
  django-cfg = "django_cfg.cli.main:main"
@@ -22,7 +22,6 @@ django-import-export>=4.3.0,<5.0
22
22
  django-json-widget>=2.0.0,<3.0
23
23
  django-ratelimit (>=4.1.0,<5.0.0)
24
24
  django-redis>=6.0.0,<7.0
25
- django-revolution>=1.0.35,<2.0
26
25
  django-unfold>=0.64.0,<1.0
27
26
  django>=5.2,<6.0
28
27
  djangorestframework-simplejwt>=5.5.0,<6.0
@@ -20,7 +20,6 @@ django-import-export>=4.3.0,<5.0
20
20
  django-json-widget>=2.0.0,<3.0
21
21
  django-ratelimit (>=4.1.0,<5.0.0)
22
22
  django-redis>=6.0.0,<7.0
23
- django-revolution>=1.0.35,<2.0
24
23
  django-unfold>=0.64.0,<1.0
25
24
  django>=5.2,<6.0
26
25
  djangorestframework-simplejwt>=5.5.0,<6.0
@@ -20,7 +20,6 @@ django-import-export>=4.3.0,<5.0
20
20
  django-json-widget>=2.0.0,<3.0
21
21
  django-ratelimit (>=4.1.0,<5.0.0)
22
22
  django-redis>=6.0.0,<7.0
23
- django-revolution>=1.0.35,<2.0
24
23
  django-unfold>=0.64.0,<1.0
25
24
  djangorestframework-simplejwt>=5.5.0,<6.0
26
25
  djangorestframework-simplejwt[token-blacklist]>=5.5.0,<6.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.1"
35
+ __version__ = "1.2.3"
36
36
  __license__ = "MIT"
37
37
 
38
38
  # Import registry for organized lazy loading
@@ -24,6 +24,15 @@ class OTPViewSet(viewsets.GenericViewSet):
24
24
  """OTP authentication ViewSet with nested router support."""
25
25
 
26
26
  permission_classes = [permissions.AllowAny]
27
+ serializer_class = OTPRequestSerializer # Default serializer for the viewset
28
+
29
+ def get_serializer_class(self):
30
+ """Return the appropriate serializer class based on the action."""
31
+ if self.action == 'request_otp':
32
+ return OTPRequestSerializer
33
+ elif self.action == 'verify_otp':
34
+ return OTPVerifySerializer
35
+ return super().get_serializer_class()
27
36
 
28
37
  @extend_schema(
29
38
  request=OTPRequestSerializer,
@@ -36,6 +36,19 @@ class TaskManagementViewSet(viewsets.GenericViewSet):
36
36
 
37
37
  authentication_classes = [SessionAuthentication, BasicAuthentication]
38
38
  permission_classes = [IsAdminUser]
39
+ serializer_class = APIResponseSerializer # Default serializer for the viewset
40
+
41
+ def get_serializer_class(self):
42
+ """Return the appropriate serializer class based on the action."""
43
+ if self.action == 'queue_status':
44
+ return QueueStatusSerializer
45
+ elif self.action == 'queue_manage':
46
+ return QueueActionSerializer
47
+ elif self.action == 'worker_manage':
48
+ return WorkerActionSerializer
49
+ elif self.action == 'task_statistics':
50
+ return TaskStatisticsSerializer
51
+ return super().get_serializer_class()
39
52
 
40
53
  def get_tasks_service(self):
41
54
  """Get DjangoTasks service instance."""
@@ -245,14 +245,16 @@ class DjangoConfig(BaseModel):
245
245
  )
246
246
 
247
247
  # === API Configuration ===
248
+ # Note: DRF base configuration is handled by django-revolution
249
+ # These fields provide additional/extended settings on top of Revolution
248
250
  drf: Optional[DRFConfig] = Field(
249
251
  default=None,
250
- description="Django REST Framework configuration",
252
+ description="Extended Django REST Framework configuration (supplements Revolution)",
251
253
  )
252
254
 
253
255
  spectacular: Optional[SpectacularConfig] = Field(
254
256
  default=None,
255
- description="DRF Spectacular OpenAPI/Swagger configuration",
257
+ description="Extended DRF Spectacular configuration (supplements Revolution)",
256
258
  )
257
259
 
258
260
  # === Limits Configuration ===
@@ -440,30 +440,52 @@ class SettingsGenerator:
440
440
  settings.update(revolution_settings)
441
441
  integrations.append("django_revolution")
442
442
 
443
- # Automatically generate DRF configuration if RevolutionConfig has DRF parameters
444
- if hasattr(config.revolution, "get_drf_config_kwargs"):
445
- try:
446
- from django_revolution.drf_config import create_drf_config
447
-
448
- # Get DRF config parameters from RevolutionConfig
449
- drf_kwargs = config.revolution.get_drf_config_kwargs()
450
-
451
- # Create DRF config with Django Revolution integration
452
- drf_config = create_drf_config(**drf_kwargs)
453
-
454
- # Get Django settings from DRF config
455
- drf_settings = drf_config.get_django_settings()
456
- settings.update(drf_settings)
457
- integrations.append("drf_spectacular")
458
-
459
- except ImportError as e:
460
- logger.warning(f"Could not import django_revolution.drf_config: {e}")
461
- except Exception as e:
462
- logger.warning(f"Could not generate DRF config from Revolution: {e}")
463
-
464
- # Note: DRF and Spectacular configuration is now handled through Revolution
465
- # The old config.drf and config.spectacular fields are deprecated
466
- # in favor of Revolution's integrated DRF configuration
443
+ # Automatically generate DRF configuration using Revolution's core_config
444
+ try:
445
+ from django_revolution import create_drf_spectacular_config
446
+
447
+ # Extract DRF parameters from RevolutionConfig
448
+ drf_kwargs = {
449
+ "title": getattr(config.revolution, "drf_title", "API"),
450
+ "description": getattr(config.revolution, "drf_description", "RESTful API"),
451
+ "version": getattr(config.revolution, "drf_version", "1.0.0"),
452
+ "schema_path_prefix": f"/{config.revolution.api_prefix}/",
453
+ "enable_browsable_api": getattr(config.revolution, "drf_enable_browsable_api", False),
454
+ "enable_throttling": getattr(config.revolution, "drf_enable_throttling", False),
455
+ }
456
+
457
+ # Create DRF + Spectacular config with Revolution's comprehensive settings (includes proper enum config)
458
+ drf_settings = create_drf_spectacular_config(**drf_kwargs)
459
+ settings.update(drf_settings)
460
+ logger.info("🚀 Generated DRF + Spectacular settings using Revolution's create_drf_spectacular_config")
461
+ integrations.append("drf_spectacular")
462
+
463
+ except ImportError as e:
464
+ logger.warning(f"Could not import django_revolution.create_drf_spectacular_config: {e}")
465
+ except Exception as e:
466
+ logger.warning(f"Could not generate DRF config from Revolution: {e}")
467
+
468
+ # Apply django-cfg DRF/Spectacular extensions (only if explicitly configured by user)
469
+ try:
470
+ if config.drf or config.spectacular:
471
+ # Extend REST_FRAMEWORK settings if config.drf is provided
472
+ if config.drf and "REST_FRAMEWORK" in settings:
473
+ drf_extensions = config.drf.get_rest_framework_settings()
474
+ # Merge with existing settings (django-cfg extensions take priority)
475
+ settings["REST_FRAMEWORK"].update(drf_extensions)
476
+ logger.info("🔧 Extended REST_FRAMEWORK settings with django-cfg DRF config")
477
+
478
+ # Extend SPECTACULAR_SETTINGS if config.spectacular is provided
479
+ if config.spectacular and "SPECTACULAR_SETTINGS" in settings:
480
+ spectacular_extensions = config.spectacular.get_spectacular_settings()
481
+ # Merge with existing settings (django-cfg extensions take priority)
482
+ settings["SPECTACULAR_SETTINGS"].update(spectacular_extensions)
483
+ logger.info("🔧 Extended SPECTACULAR_SETTINGS with django-cfg Spectacular config")
484
+
485
+ integrations.append("drf_spectacular_extended")
486
+
487
+ except Exception as e:
488
+ logger.warning(f"Could not apply DRF/Spectacular extensions from django-cfg: {e}")
467
489
 
468
490
  # Add integration info for debugging
469
491
  if integrations:
@@ -0,0 +1,99 @@
1
+ """
2
+ Base Configuration Module for Django CFG
3
+
4
+ Provides a unified base class for all auto-configuration modules.
5
+ """
6
+
7
+ from typing import Optional, TYPE_CHECKING
8
+ from abc import ABC, abstractmethod
9
+
10
+ if TYPE_CHECKING:
11
+ from django_cfg.core.config import DjangoConfig
12
+
13
+
14
+ class BaseCfgAutoModule(ABC):
15
+ """
16
+ Base class for all django-cfg auto-configuration modules.
17
+
18
+ Provides unified configuration access and smart defaults.
19
+ Designed to be used in generation.py without circular imports.
20
+ """
21
+
22
+ def __init__(self, config: Optional["DjangoConfig"] = None):
23
+ """
24
+ Initialize the auto-configuration module.
25
+
26
+ Args:
27
+ config: DjangoConfig instance (passed from generation.py)
28
+ """
29
+ self._config = config
30
+
31
+ def set_config(self, config: "DjangoConfig") -> None:
32
+ """
33
+ Set the configuration instance.
34
+
35
+ Args:
36
+ config: The DjangoConfig instance
37
+ """
38
+ self._config = config
39
+
40
+ def get_config(self) -> Optional["DjangoConfig"]:
41
+ """Get the current configuration instance."""
42
+ return self._config
43
+
44
+ def has_config_field(self, field_name: str) -> bool:
45
+ """
46
+ Check if config has a specific field with a non-None value.
47
+
48
+ Args:
49
+ field_name: Name of the field to check
50
+
51
+ Returns:
52
+ True if field exists and is not None
53
+ """
54
+ if not self._config:
55
+ return False
56
+ return hasattr(self._config, field_name) and getattr(self._config, field_name) is not None
57
+
58
+ def get_config_field(self, field_name: str, default=None):
59
+ """
60
+ Get a field value from config with fallback.
61
+
62
+ Args:
63
+ field_name: Name of the field to get
64
+ default: Default value if field doesn't exist or is None
65
+
66
+ Returns:
67
+ Field value or default
68
+ """
69
+ if not self._config:
70
+ return default
71
+ return getattr(self._config, field_name, default)
72
+
73
+ @abstractmethod
74
+ def get_smart_defaults(self):
75
+ """
76
+ Get smart default configuration for this module.
77
+
78
+ Returns:
79
+ Configuration object with intelligent defaults
80
+ """
81
+ pass
82
+
83
+ @abstractmethod
84
+ def get_module_config(self):
85
+ """
86
+ Get the final configuration for this module.
87
+
88
+ Uses project config if available, otherwise returns smart defaults.
89
+
90
+ Returns:
91
+ Configuration object ready for Django settings generation
92
+ """
93
+ pass
94
+
95
+
96
+ # Export the base class
97
+ __all__ = [
98
+ "BaseCfgAutoModule",
99
+ ]
@@ -0,0 +1,118 @@
1
+ """
2
+ CORS Configuration Models
3
+
4
+ Handles CORS settings with smart defaults and custom header support.
5
+ """
6
+
7
+ from typing import List, Optional
8
+ from pydantic import BaseModel, Field
9
+
10
+
11
+ class CORSConfig(BaseModel):
12
+ """CORS configuration with smart defaults"""
13
+
14
+ # Custom headers (user-defined)
15
+ custom_headers: List[str] = Field(
16
+ default_factory=list,
17
+ description="Custom headers to allow (e.g., ['x-api-key'])"
18
+ )
19
+
20
+ # Origins
21
+ allowed_origins: Optional[List[str]] = Field(
22
+ default=None,
23
+ description="Allowed origins (None = all origins allowed)"
24
+ )
25
+
26
+ # Credentials
27
+ allow_credentials: bool = Field(
28
+ default=True,
29
+ description="Allow credentials in CORS requests"
30
+ )
31
+
32
+ # Methods
33
+ allowed_methods: List[str] = Field(
34
+ default_factory=lambda: ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
35
+ description="Allowed HTTP methods"
36
+ )
37
+
38
+ # Max age
39
+ max_age: int = Field(
40
+ default=86400, # 24 hours
41
+ description="Max age for preflight requests in seconds"
42
+ )
43
+
44
+ def get_all_headers(self) -> List[str]:
45
+ """Get all headers (standard + custom)"""
46
+ # Standard headers that are always needed
47
+ standard_headers = [
48
+ "accept",
49
+ "accept-encoding",
50
+ "authorization",
51
+ "content-type",
52
+ "dnt",
53
+ "origin",
54
+ "user-agent",
55
+ "x-csrftoken",
56
+ "x-requested-with",
57
+ ]
58
+
59
+ # Combine with custom headers
60
+ all_headers = standard_headers + self.custom_headers
61
+
62
+ # Remove duplicates while preserving order
63
+ seen = set()
64
+ unique_headers = []
65
+ for header in all_headers:
66
+ if header.lower() not in seen:
67
+ seen.add(header.lower())
68
+ unique_headers.append(header)
69
+
70
+ return unique_headers
71
+
72
+
73
+ # ===== AUTO-CONFIGURATION MODULE =====
74
+
75
+ try:
76
+ from .cfg import BaseCfgAutoModule
77
+
78
+ class DjangoCORSModule(BaseCfgAutoModule):
79
+ """Django CORS auto-configuration module"""
80
+
81
+ def get_smart_defaults(self) -> CORSConfig:
82
+ """Get smart default CORS configuration"""
83
+ return CORSConfig(
84
+ custom_headers=["x-api-key"],
85
+ allowed_origins=None, # Allow all origins by default
86
+ allow_credentials=True,
87
+ allowed_methods=["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS"],
88
+ max_age=86400, # 24 hours
89
+ )
90
+
91
+ def get_module_config(self) -> CORSConfig:
92
+ """Get CORS configuration with project overrides"""
93
+ if self.has_config_field('cors'):
94
+ return self.get_config_field('cors')
95
+ return self.get_smart_defaults()
96
+
97
+ def get_cors_config(self, custom_headers: Optional[List[str]] = None) -> CORSConfig:
98
+ """Get CORS configuration with custom headers support"""
99
+ # Get base config (project or defaults)
100
+ cors_config = self.get_module_config()
101
+
102
+ # Override custom headers if provided
103
+ if custom_headers:
104
+ cors_config = cors_config.model_copy()
105
+ cors_config.custom_headers = custom_headers
106
+
107
+ return cors_config
108
+
109
+ except ImportError:
110
+ # BaseCfgAutoModule not available - auto-configuration disabled
111
+ DjangoCORSModule = None
112
+
113
+
114
+ # Export all models
115
+ __all__ = [
116
+ "CORSConfig",
117
+ "DjangoCORSModule",
118
+ ]
@@ -122,6 +122,9 @@ class SpectacularConfig(BaseModel):
122
122
  description="Post-processing hooks"
123
123
  )
124
124
 
125
+ # NOTE: Enum generation settings are handled by django-revolution
126
+ # Only override if you need different values than Revolution defaults
127
+
125
128
  # Enum overrides
126
129
  enum_name_overrides: Dict[str, str] = Field(
127
130
  default_factory=lambda: {
@@ -131,22 +134,26 @@ class SpectacularConfig(BaseModel):
131
134
  )
132
135
 
133
136
  def get_spectacular_settings(self) -> Dict[str, Any]:
134
- """Get complete Spectacular settings."""
137
+ """
138
+ Get django-cfg Spectacular extensions.
139
+
140
+ NOTE: This extends Revolution's base settings, not replaces them.
141
+ Only include settings that are unique to django-cfg or critical fixes.
142
+ """
135
143
  settings = {
136
- # Basic information
137
- "TITLE": self.title,
138
- "DESCRIPTION": self.description,
139
- "VERSION": self.version,
140
- "SERVE_INCLUDE_SCHEMA": self.serve_include_schema,
141
- "SCHEMA_PATH_PREFIX": self.schema_path_prefix,
142
- "COMPONENT_SPLIT_REQUEST": self.component_split_request,
143
- "SORT_OPERATIONS": self.sort_operations,
144
- # UI Settings
145
- "SWAGGER_UI_SETTINGS": self.swagger_ui_settings.to_dict(),
146
- "REDOC_UI_SETTINGS": self.redoc_ui_settings.to_dict(),
147
- # Processing
148
- "POSTPROCESSING_HOOKS": self.postprocessing_hooks,
149
- "ENUM_NAME_OVERRIDES": self.enum_name_overrides,
144
+ # django-cfg specific UI enhancements
145
+ "REDOC_UI_SETTINGS": self.redoc_ui_settings.to_dict(), # Revolution doesn't have custom Redoc settings
146
+
147
+ # django-cfg specific processing extensions
148
+ "ENUM_NAME_OVERRIDES": self.enum_name_overrides, # Custom enum overrides
149
+
150
+ # CRITICAL: Ensure enum generation is always enabled (fix Revolution gaps)
151
+ # These settings ensure proper enum generation even if Revolution config changes
152
+ "GENERATE_ENUM_FROM_CHOICES": True,
153
+ "ENUM_GENERATE_CHOICE_FROM_PATH": True,
154
+ "ENUM_NAME_SUFFIX": "Enum",
155
+ "CAMELIZE_NAMES": False,
156
+ "ENUM_ADD_EXPLICIT_BLANK_NULL_CHOICE": False,
150
157
  }
151
158
 
152
159
  # Add optional fields if present
File without changes
File without changes
File without changes
File without changes