django-cfg 1.2.2__tar.gz → 1.2.5__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.2 → django_cfg-1.2.5}/PKG-INFO +8 -8
  2. {django_cfg-1.2.2 → django_cfg-1.2.5}/pyproject.toml +12 -8
  3. {django_cfg-1.2.2 → django_cfg-1.2.5}/requirements-dev.txt +1 -1
  4. {django_cfg-1.2.2 → django_cfg-1.2.5}/requirements-test.txt +1 -1
  5. {django_cfg-1.2.2 → django_cfg-1.2.5}/requirements.txt +1 -1
  6. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/__init__.py +1 -1
  7. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/config.py +4 -2
  8. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/generation.py +46 -24
  9. django_cfg-1.2.5/src/django_cfg/models/cfg.py +99 -0
  10. django_cfg-1.2.5/src/django_cfg/models/cors.py +118 -0
  11. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/drf.py +22 -15
  12. {django_cfg-1.2.2 → django_cfg-1.2.5}/.gitignore +0 -0
  13. {django_cfg-1.2.2 → django_cfg-1.2.5}/LICENSE +0 -0
  14. {django_cfg-1.2.2 → django_cfg-1.2.5}/MANIFEST.in +0 -0
  15. {django_cfg-1.2.2 → django_cfg-1.2.5}/README.md +0 -0
  16. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/README.md +0 -0
  17. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/__init__.py +0 -0
  18. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/README.md +0 -0
  19. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/__init__.py +0 -0
  20. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/__init__.py +0 -0
  21. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/activity.py +0 -0
  22. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/filters.py +0 -0
  23. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/group.py +0 -0
  24. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/inlines.py +0 -0
  25. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/otp.py +0 -0
  26. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/registration_source.py +0 -0
  27. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/resources.py +0 -0
  28. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/twilio_response.py +0 -0
  29. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/admin/user.py +0 -0
  30. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/apps.py +0 -0
  31. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/management/commands/test_otp.py +0 -0
  32. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/managers/__init__.py +0 -0
  33. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/managers/user_manager.py +0 -0
  34. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/0001_initial.py +0 -0
  35. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/0002_add_phone_otp_clean.py +0 -0
  36. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/0003_twilioresponse.py +0 -0
  37. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/0004_delete_twilioresponse.py +0 -0
  38. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/0005_twilioresponse.py +0 -0
  39. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
  40. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/migrations/__init__.py +0 -0
  41. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/models.py +0 -0
  42. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/serializers/__init__.py +0 -0
  43. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/serializers/otp.py +0 -0
  44. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/serializers/profile.py +0 -0
  45. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/serializers/webhook.py +0 -0
  46. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/services/__init__.py +0 -0
  47. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/services/activity_service.py +0 -0
  48. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/services/otp_service.py +0 -0
  49. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/signals.py +0 -0
  50. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/templates/emails/base_email.html +0 -0
  51. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/templates/emails/base_email.txt +0 -0
  52. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/templates/emails/otp_email.html +0 -0
  53. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/templates/emails/otp_email.txt +0 -0
  54. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/templates/emails/welcome_email.html +0 -0
  55. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/templates/emails/welcome_email.txt +0 -0
  56. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/urls.py +0 -0
  57. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/utils/auth_email_service.py +0 -0
  58. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/utils/notifications.py +0 -0
  59. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/views/__init__.py +0 -0
  60. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/views/otp.py +0 -0
  61. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/views/profile.py +0 -0
  62. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/accounts/views/webhook.py +0 -0
  63. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/README.md +0 -0
  64. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/__init__.py +0 -0
  65. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/admin/__init__.py +0 -0
  66. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/admin/execution_admin.py +0 -0
  67. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/admin/registry_admin.py +0 -0
  68. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/admin/toolsets_admin.py +0 -0
  69. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/apps.py +0 -0
  70. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/core/__init__.py +0 -0
  71. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/core/agent.py +0 -0
  72. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/core/dependencies.py +0 -0
  73. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/core/exceptions.py +0 -0
  74. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/core/models.py +0 -0
  75. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/core/orchestrator.py +0 -0
  76. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/examples/__init__.py +0 -0
  77. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/examples/simple_example.py +0 -0
  78. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/integration/__init__.py +0 -0
  79. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/integration/middleware.py +0 -0
  80. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/integration/registry.py +0 -0
  81. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/integration/signals.py +0 -0
  82. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/management/__init__.py +0 -0
  83. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/management/commands/__init__.py +0 -0
  84. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/management/commands/create_agent.py +0 -0
  85. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/management/commands/orchestrator_status.py +0 -0
  86. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/managers/__init__.py +0 -0
  87. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/managers/execution.py +0 -0
  88. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/managers/registry.py +0 -0
  89. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/managers/toolsets.py +0 -0
  90. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/migrations/0001_initial.py +0 -0
  91. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/migrations/__init__.py +0 -0
  92. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/models/__init__.py +0 -0
  93. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/models/execution.py +0 -0
  94. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/models/registry.py +0 -0
  95. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/models/toolsets.py +0 -0
  96. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/patterns/__init__.py +0 -0
  97. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/patterns/content_agents.py +0 -0
  98. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/toolsets/__init__.py +0 -0
  99. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/toolsets/cache_toolset.py +0 -0
  100. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/toolsets/django_toolset.py +0 -0
  101. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/toolsets/file_toolset.py +0 -0
  102. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/toolsets/orm_toolset.py +0 -0
  103. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/agents/urls.py +0 -0
  104. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/__init__.py +0 -0
  105. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/commands/__init__.py +0 -0
  106. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/commands/urls.py +0 -0
  107. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/commands/views.py +0 -0
  108. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/health/__init__.py +0 -0
  109. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/health/urls.py +0 -0
  110. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/api/health/views.py +0 -0
  111. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/README.md +0 -0
  112. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/__init__.py +0 -0
  113. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/admin/__init__.py +0 -0
  114. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/admin/archive_admin.py +0 -0
  115. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/admin/chat_admin.py +0 -0
  116. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/admin/document_admin.py +0 -0
  117. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/admin/external_data_admin.py +0 -0
  118. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/apps.py +0 -0
  119. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/config/README.md +0 -0
  120. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/config/__init__.py +0 -0
  121. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/config/constance_fields.py +0 -0
  122. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/config/constance_settings.py +0 -0
  123. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/config/settings.py +0 -0
  124. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/examples/__init__.py +0 -0
  125. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/examples/external_data_usage.py +0 -0
  126. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/management/__init__.py +0 -0
  127. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/management/commands/__init__.py +0 -0
  128. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/management/commands/knowbase_stats.py +0 -0
  129. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/management/commands/setup_knowbase.py +0 -0
  130. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/managers/__init__.py +0 -0
  131. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/managers/archive.py +0 -0
  132. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/managers/base.py +0 -0
  133. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/managers/chat.py +0 -0
  134. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/managers/document.py +0 -0
  135. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/managers/external_data.py +0 -0
  136. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/migrations/0001_initial.py +0 -0
  137. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -0
  138. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/migrations/__init__.py +0 -0
  139. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/mixins/__init__.py +0 -0
  140. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/mixins/config.py +0 -0
  141. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/mixins/creator.py +0 -0
  142. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -0
  143. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/mixins/external_data_mixin.py +0 -0
  144. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/mixins/service.py +0 -0
  145. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/models/__init__.py +0 -0
  146. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/models/archive.py +0 -0
  147. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/models/base.py +0 -0
  148. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/models/chat.py +0 -0
  149. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/models/document.py +0 -0
  150. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/models/external_data.py +0 -0
  151. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/serializers/__init__.py +0 -0
  152. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/serializers/archive_serializers.py +0 -0
  153. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/serializers/chat_serializers.py +0 -0
  154. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/serializers/document_serializers.py +0 -0
  155. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/serializers/external_data_serializers.py +0 -0
  156. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/serializers/public_serializers.py +0 -0
  157. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/__init__.py +0 -0
  158. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/archive/__init__.py +0 -0
  159. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/archive/archive_service.py +0 -0
  160. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/archive/chunking_service.py +0 -0
  161. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/archive/exceptions.py +0 -0
  162. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/archive/extraction_service.py +0 -0
  163. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/archive/vectorization_service.py +0 -0
  164. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/base.py +0 -0
  165. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/chat_service.py +0 -0
  166. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/document_service.py +0 -0
  167. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/__init__.py +0 -0
  168. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/async_processor.py +0 -0
  169. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/batch_processor.py +0 -0
  170. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/batch_result.py +0 -0
  171. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/models.py +0 -0
  172. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/processors.py +0 -0
  173. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/embedding/utils.py +0 -0
  174. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/prompt_builder.py +0 -0
  175. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/services/search_service.py +0 -0
  176. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/signals/__init__.py +0 -0
  177. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/signals/archive_signals.py +0 -0
  178. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/signals/chat_signals.py +0 -0
  179. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/signals/document_signals.py +0 -0
  180. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/signals/external_data_signals.py +0 -0
  181. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/tasks/__init__.py +0 -0
  182. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/tasks/archive_tasks.py +0 -0
  183. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/tasks/document_processing.py +0 -0
  184. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/tasks/external_data_tasks.py +0 -0
  185. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/tasks/maintenance.py +0 -0
  186. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/urls.py +0 -0
  187. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/utils/__init__.py +0 -0
  188. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/utils/chunk_settings.py +0 -0
  189. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/utils/text_processing.py +0 -0
  190. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/utils/validation.py +0 -0
  191. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/views/__init__.py +0 -0
  192. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/views/archive_views.py +0 -0
  193. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/views/base.py +0 -0
  194. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/views/chat_views.py +0 -0
  195. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/views/document_views.py +0 -0
  196. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/knowbase/views/public_views.py +0 -0
  197. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/README.md +0 -0
  198. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/__init__.py +0 -0
  199. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/admin/__init__.py +0 -0
  200. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/admin/leads_admin.py +0 -0
  201. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/admin/resources.py +0 -0
  202. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/admin.py +0 -0
  203. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/apps.py +0 -0
  204. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/migrations/0001_initial.py +0 -0
  205. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/migrations/__init__.py +0 -0
  206. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/models.py +0 -0
  207. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/serializers.py +0 -0
  208. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/signals.py +0 -0
  209. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/tests.py +0 -0
  210. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/urls.py +0 -0
  211. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/leads/views.py +0 -0
  212. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/README.md +0 -0
  213. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/__init__.py +0 -0
  214. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/admin/__init__.py +0 -0
  215. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/admin/filters.py +0 -0
  216. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/admin/newsletter_admin.py +0 -0
  217. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/admin/resources.py +0 -0
  218. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/admin.py +0 -0
  219. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/admin_filters.py +0 -0
  220. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/apps.py +0 -0
  221. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/management/__init__.py +0 -0
  222. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/management/commands/__init__.py +0 -0
  223. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/management/commands/test_newsletter.py +0 -0
  224. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/managers/README.md +0 -0
  225. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/managers/__init__.py +0 -0
  226. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/migrations/0001_initial.py +0 -0
  227. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/migrations/__init__.py +0 -0
  228. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/models.py +0 -0
  229. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/serializers.py +0 -0
  230. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/services/email_service.py +0 -0
  231. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/signals.py +0 -0
  232. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/urls.py +0 -0
  233. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/utils/__init__.py +0 -0
  234. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/views/__init__.py +0 -0
  235. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/views/campaigns.py +0 -0
  236. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/views/emails.py +0 -0
  237. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/views/newsletters.py +0 -0
  238. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/views/subscriptions.py +0 -0
  239. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/newsletter/views/tracking.py +0 -0
  240. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/__init__.py +0 -0
  241. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/admin/__init__.py +0 -0
  242. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/admin/filters.py +0 -0
  243. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/admin/resources.py +0 -0
  244. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/admin/support_admin.py +0 -0
  245. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/admin.py +0 -0
  246. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/admin_filters.py +0 -0
  247. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/apps.py +0 -0
  248. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/managers/message_manager.py +0 -0
  249. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/managers/ticket_manager.py +0 -0
  250. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/migrations/0001_initial.py +0 -0
  251. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/migrations/0002_alter_message_ticket.py +0 -0
  252. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/migrations/__init__.py +0 -0
  253. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/models.py +0 -0
  254. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/serializers.py +0 -0
  255. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/signals.py +0 -0
  256. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/templates/support/chat/access_denied.html +0 -0
  257. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/templates/support/chat/ticket_chat.html +0 -0
  258. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/urls.py +0 -0
  259. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/utils/__init__.py +0 -0
  260. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/utils/support_email_service.py +0 -0
  261. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/views/__init__.py +0 -0
  262. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/views/admin.py +0 -0
  263. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/views/api.py +0 -0
  264. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/support/views/chat.py +0 -0
  265. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/__init__.py +0 -0
  266. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/admin.py +0 -0
  267. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/apps.py +0 -0
  268. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/serializers.py +0 -0
  269. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/css/dashboard.css +0 -0
  270. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/js/api.js +0 -0
  271. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/js/dashboard.js +0 -0
  272. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/js/modals.js +0 -0
  273. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/js/notifications.js +0 -0
  274. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/js/task-monitor.js +0 -0
  275. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/static/tasks/js/theme.js +0 -0
  276. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/base.html +0 -0
  277. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/info_cards.html +0 -0
  278. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/management_actions.html +0 -0
  279. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/overview_tab.html +0 -0
  280. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/queues_tab.html +0 -0
  281. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/status_cards.html +0 -0
  282. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html +0 -0
  283. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html +0 -0
  284. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html +0 -0
  285. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/components/workers_tab.html +0 -0
  286. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/templates/tasks/dashboard.html +0 -0
  287. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/urls.py +0 -0
  288. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/tasks/views.py +0 -0
  289. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps/urls.py +0 -0
  290. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/apps.py +0 -0
  291. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/README.md +0 -0
  292. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/__init__.py +0 -0
  293. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/commands/__init__.py +0 -0
  294. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/commands/create_project.py +0 -0
  295. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/commands/info.py +0 -0
  296. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/main.py +0 -0
  297. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/cli/utils.py +0 -0
  298. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/config.py +0 -0
  299. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/__init__.py +0 -0
  300. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/environment.py +0 -0
  301. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/exceptions.py +0 -0
  302. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/integration.py +0 -0
  303. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/core/validation.py +0 -0
  304. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/__init__.py +0 -0
  305. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/__init__.py +0 -0
  306. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/auto_generate.py +0 -0
  307. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/check_settings.py +0 -0
  308. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/clear_constance.py +0 -0
  309. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/create_token.py +0 -0
  310. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/generate.py +0 -0
  311. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/list_urls.py +0 -0
  312. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/migrate_all.py +0 -0
  313. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/migrator.py +0 -0
  314. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/rundramatiq.py +0 -0
  315. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/runserver_ngrok.py +0 -0
  316. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/script.py +0 -0
  317. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/show_config.py +0 -0
  318. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/show_urls.py +0 -0
  319. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/superuser.py +0 -0
  320. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/task_clear.py +0 -0
  321. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/task_status.py +0 -0
  322. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/test_email.py +0 -0
  323. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/test_telegram.py +0 -0
  324. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/test_twilio.py +0 -0
  325. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/tree.py +0 -0
  326. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/management/commands/validate_config.py +0 -0
  327. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/middleware/README.md +0 -0
  328. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/middleware/__init__.py +0 -0
  329. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/middleware/public_endpoints.py +0 -0
  330. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/middleware/user_activity.py +0 -0
  331. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/__init__.py +0 -0
  332. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/api.py +0 -0
  333. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/base.py +0 -0
  334. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/cache.py +0 -0
  335. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/constance.py +0 -0
  336. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/database.py +0 -0
  337. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/email.py +0 -0
  338. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/environment.py +0 -0
  339. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/jwt.py +0 -0
  340. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/limits.py +0 -0
  341. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/logging.py +0 -0
  342. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/ngrok.py +0 -0
  343. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/revolution.py +0 -0
  344. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/security.py +0 -0
  345. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/services.py +0 -0
  346. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/models/tasks.py +0 -0
  347. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/__init__.py +0 -0
  348. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/base.py +0 -0
  349. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_currency/README.md +0 -0
  350. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_currency/__init__.py +0 -0
  351. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_currency/cache.py +0 -0
  352. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_currency/converter.py +0 -0
  353. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_currency/service.py +0 -0
  354. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_email.py +0 -0
  355. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_health.py +0 -0
  356. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/README.md +0 -0
  357. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/__init__.py +0 -0
  358. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/example.py +0 -0
  359. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/__init__.py +0 -0
  360. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/cache.py +0 -0
  361. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/client.py +0 -0
  362. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/costs.py +0 -0
  363. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/extractor.py +0 -0
  364. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/models.py +0 -0
  365. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/models_cache.py +0 -0
  366. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/llm/tokenizer.py +0 -0
  367. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/translator/__init__.py +0 -0
  368. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/translator/cache.py +0 -0
  369. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_llm/translator/translator.py +0 -0
  370. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_logger.py +0 -0
  371. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_ngrok.py +0 -0
  372. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_tasks.py +0 -0
  373. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_telegram.py +0 -0
  374. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/README.md +0 -0
  375. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/__init__.py +0 -0
  376. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/exceptions.py +0 -0
  377. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/models.py +0 -0
  378. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/sendgrid_service.py +0 -0
  379. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/service.py +0 -0
  380. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/simple_service.py +0 -0
  381. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/templates/guide.md +0 -0
  382. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html +0 -0
  383. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/templates/sendgrid_test_data.json +0 -0
  384. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_twilio/twilio_service.py +0 -0
  385. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/__init__.py +0 -0
  386. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/callbacks.py +0 -0
  387. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/dashboard.py +0 -0
  388. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/icons/README.md +0 -0
  389. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/icons/__init__.py +0 -0
  390. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/icons/constants.py +0 -0
  391. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/icons/generate_icons.py +0 -0
  392. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models/__init__.py +0 -0
  393. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models/config.py +0 -0
  394. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models/dashboard.py +0 -0
  395. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models/dropdown.py +0 -0
  396. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models/navigation.py +0 -0
  397. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models/tabs.py +0 -0
  398. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/models.py +0 -0
  399. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/system_monitor.py +0 -0
  400. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/tailwind.py +0 -0
  401. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/django_unfold/utils.py +0 -0
  402. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/dramatiq_setup.py +0 -0
  403. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/modules/logger.py +0 -0
  404. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/registry/__init__.py +0 -0
  405. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/registry/core.py +0 -0
  406. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/registry/exceptions.py +0 -0
  407. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/registry/modules.py +0 -0
  408. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/registry/services.py +0 -0
  409. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/registry/third_party.py +0 -0
  410. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/routing/__init__.py +0 -0
  411. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/routing/callbacks.py +0 -0
  412. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/routing/routers.py +0 -0
  413. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/__init__.py +0 -0
  414. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/constance/change_list.html +0 -0
  415. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/constance/includes/default_value.html +0 -0
  416. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/constance/includes/fieldset_header.html +0 -0
  417. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/constance/includes/results_list.html +0 -0
  418. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/constance/includes/setting_row.html +0 -0
  419. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/constance/includes/table_headers.html +0 -0
  420. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/index.html +0 -0
  421. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/layouts/dashboard_with_tabs.html +0 -0
  422. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/activity_tracker.html +0 -0
  423. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/charts_section.html +0 -0
  424. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/django_commands.html +0 -0
  425. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/quick_actions.html +0 -0
  426. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/recent_activity.html +0 -0
  427. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/recent_users_table.html +0 -0
  428. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/stats_cards.html +0 -0
  429. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/stats_tiles.html +0 -0
  430. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/system_health.html +0 -0
  431. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/system_metrics.html +0 -0
  432. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/components/user_permissions.html +0 -0
  433. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/tabs/app_stats_tab.html +0 -0
  434. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/tabs/commands_tab.html +0 -0
  435. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/tabs/overview_tab.html +0 -0
  436. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/tabs/stats_tab.html +0 -0
  437. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/tabs/users_tab.html +0 -0
  438. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/admin/snippets/zones/zones_table.html +0 -0
  439. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templates/emails/base_email.html +0 -0
  440. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templatetags/__init__.py +0 -0
  441. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/templatetags/django_cfg.py +0 -0
  442. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/urls.py +0 -0
  443. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/utils/__init__.py +0 -0
  444. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/utils/path_resolution.py +0 -0
  445. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/utils/smart_defaults.py +0 -0
  446. {django_cfg-1.2.2 → django_cfg-1.2.5}/src/django_cfg/utils/toolkit.py +0 -0
  447. {django_cfg-1.2.2 → django_cfg-1.2.5}/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.2
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.5
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,7 @@ 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
50
+ Requires-Dist: django-revolution<2.0,>=1.0.43
51
51
  Requires-Dist: django-unfold<1.0,>=0.64.0
52
52
  Requires-Dist: djangorestframework-simplejwt<6.0,>=5.5.0
53
53
  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.2"
8
- description = "🚀 Production-ready Django configuration framework with type-safe settings, smart automation, and modern developer experience"
7
+ version = "1.2.5"
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",
@@ -117,8 +116,13 @@ dependencies = [
117
116
  "lxml>=6.0.0,<7.0",
118
117
  "pgvector>=0.4.0,<1.0",
119
118
  "pydantic-ai>=1.0.10,<2.0",
119
+
120
+ "django-revolution>=1.0.43,<2.0",
120
121
  ]
121
122
 
123
+ # Local development dependencies
124
+ # django-revolution = {path = "../django-revolution", develop = true}
125
+
122
126
  [project.optional-dependencies]
123
127
 
124
128
  # Django compatibility - users should install one of these (minimum 5.2)
@@ -187,11 +191,11 @@ full = [
187
191
  ]
188
192
 
189
193
  [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"
194
+ Homepage = "https://django-cfg.com"
195
+ Documentation = "https://django-cfg.com"
196
+ Repository = "https://django-cfg.com"
197
+ Issues = "https://django-cfg.com"
198
+ Changelog = "https://django-cfg.com"
195
199
 
196
200
  [project.scripts]
197
201
  django-cfg = "django_cfg.cli.main:main"
@@ -22,7 +22,7 @@ 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
25
+ django-revolution>=1.0.43,<2.0
26
26
  django-unfold>=0.64.0,<1.0
27
27
  django>=5.2,<6.0
28
28
  djangorestframework-simplejwt>=5.5.0,<6.0
@@ -20,7 +20,7 @@ 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
23
+ django-revolution>=1.0.43,<2.0
24
24
  django-unfold>=0.64.0,<1.0
25
25
  django>=5.2,<6.0
26
26
  djangorestframework-simplejwt>=5.5.0,<6.0
@@ -20,7 +20,7 @@ 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
23
+ django-revolution>=1.0.43,<2.0
24
24
  django-unfold>=0.64.0,<1.0
25
25
  djangorestframework-simplejwt>=5.5.0,<6.0
26
26
  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.2"
35
+ __version__ = "1.2.5"
36
36
  __license__ = "MIT"
37
37
 
38
38
  # Import registry for organized lazy loading
@@ -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