django-cfg 1.3.13__py3-none-any.whl → 1.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (438) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/accounts/admin/user_admin.py +39 -16
  3. django_cfg/apps/accounts/serializers/profile.py +1 -1
  4. django_cfg/apps/accounts/services/otp_service.py +18 -11
  5. django_cfg/apps/accounts/signals.py +15 -24
  6. django_cfg/apps/accounts/utils/notifications.py +217 -358
  7. django_cfg/apps/accounts/views/otp.py +2 -2
  8. django_cfg/apps/accounts/views/webhook.py +1 -1
  9. django_cfg/apps/agents/core/django_agent.py +1 -1
  10. django_cfg/apps/api/commands/views.py +66 -83
  11. django_cfg/apps/api/health/drf_views.py +269 -0
  12. django_cfg/apps/api/health/serializers.py +45 -0
  13. django_cfg/apps/api/health/urls.py +6 -1
  14. django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
  15. django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
  16. django_cfg/apps/knowbase/admin/document_admin.py +136 -270
  17. django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
  18. django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
  19. django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
  20. django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
  21. django_cfg/apps/knowbase/config/constance_fields.py +1 -1
  22. django_cfg/apps/knowbase/config/settings.py +2 -2
  23. django_cfg/apps/knowbase/mixins/__init__.py +19 -2
  24. django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
  25. django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
  26. django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
  27. django_cfg/apps/knowbase/mixins/creator.py +10 -10
  28. django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
  29. django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
  30. django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
  31. django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
  32. django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
  33. django_cfg/apps/knowbase/mixins/service.py +2 -2
  34. django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
  35. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
  36. django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
  37. django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
  38. django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
  39. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
  40. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
  41. django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
  42. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
  43. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
  44. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
  45. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
  46. django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
  47. django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
  48. django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
  49. django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
  50. django_cfg/apps/knowbase/services/embedding/models.py +18 -14
  51. django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
  52. django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
  53. django_cfg/apps/leads/tests.py +1 -1
  54. django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
  55. django_cfg/apps/payments/admin/balance_admin.py +1 -1
  56. django_cfg/apps/payments/admin/currencies_admin.py +1 -1
  57. django_cfg/apps/payments/admin/payments_admin.py +1 -1
  58. django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
  59. django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
  60. django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
  61. django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
  62. django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
  63. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
  64. django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
  65. django_cfg/apps/payments/admin_interface/views/base.py +29 -2
  66. django_cfg/apps/payments/apps.py +1 -1
  67. django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
  68. django_cfg/apps/payments/config/helpers.py +3 -2
  69. django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
  70. django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
  71. django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
  72. django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
  73. django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
  74. django_cfg/apps/payments/management/commands/test_providers.py +1 -1
  75. django_cfg/apps/payments/middleware/api_access.py +1 -1
  76. django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
  77. django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
  78. django_cfg/apps/payments/models/balance.py +2 -2
  79. django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
  80. django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
  81. django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
  82. django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
  83. django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
  84. django_cfg/apps/payments/models/payments.py +2 -2
  85. django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
  86. django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
  87. django_cfg/apps/payments/services/core/base.py +1 -1
  88. django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
  89. django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
  90. django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
  91. django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
  92. django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
  93. django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
  94. django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
  95. django_cfg/apps/payments/services/core/payment_service.py +124 -612
  96. django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
  97. django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
  98. django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
  99. django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
  100. django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
  101. django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
  102. django_cfg/apps/payments/services/providers/base.py +1 -1
  103. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
  104. django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
  105. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
  106. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
  107. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
  108. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
  109. django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
  110. django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
  111. django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
  112. django_cfg/apps/payments/services/providers/registry.py +1 -1
  113. django_cfg/apps/payments/services/providers/sync_service.py +1 -1
  114. django_cfg/apps/payments/signals/__init__.py +1 -1
  115. django_cfg/apps/payments/signals/api_key_signals.py +1 -1
  116. django_cfg/apps/payments/signals/balance_signals.py +1 -1
  117. django_cfg/apps/payments/signals/payment_signals.py +1 -1
  118. django_cfg/apps/payments/signals/subscription_signals.py +1 -1
  119. django_cfg/apps/payments/views/api/api_keys.py +1 -1
  120. django_cfg/apps/payments/views/api/balances.py +1 -1
  121. django_cfg/apps/payments/views/api/base.py +1 -1
  122. django_cfg/apps/payments/views/api/currencies.py +1 -1
  123. django_cfg/apps/payments/views/api/payments.py +1 -1
  124. django_cfg/apps/payments/views/api/subscriptions.py +1 -1
  125. django_cfg/apps/payments/views/api/webhooks.py +1 -1
  126. django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
  127. django_cfg/apps/payments/views/serializers/balances.py +1 -1
  128. django_cfg/apps/payments/views/serializers/currencies.py +1 -1
  129. django_cfg/apps/payments/views/serializers/payments.py +1 -1
  130. django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
  131. django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
  132. django_cfg/apps/support/admin/support_admin.py +21 -13
  133. django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
  134. django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
  135. django_cfg/apps/support/utils/support_email_service.py +1 -1
  136. django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
  137. django_cfg/apps/tasks/utils/simulator.py +1 -1
  138. django_cfg/apps/tasks/views/dashboard.py +33 -3
  139. django_cfg/apps/urls.py +5 -1
  140. django_cfg/cli/README.md +57 -471
  141. django_cfg/cli/commands/create_project.py +140 -529
  142. django_cfg/cli/main.py +13 -10
  143. django_cfg/core/__init__.py +63 -6
  144. django_cfg/core/base/__init__.py +5 -0
  145. django_cfg/core/base/config_model.py +652 -0
  146. django_cfg/core/builders/__init__.py +11 -0
  147. django_cfg/core/builders/apps_builder.py +258 -0
  148. django_cfg/core/builders/middleware_builder.py +115 -0
  149. django_cfg/core/builders/security_builder.py +96 -0
  150. django_cfg/core/config.py +20 -892
  151. django_cfg/core/constants.py +69 -0
  152. django_cfg/core/environment/__init__.py +9 -0
  153. django_cfg/core/exceptions.py +45 -298
  154. django_cfg/core/generation/__init__.py +51 -0
  155. django_cfg/core/generation/core_generators/__init__.py +0 -0
  156. django_cfg/core/generation/core_generators/settings.py +90 -0
  157. django_cfg/core/generation/core_generators/static.py +82 -0
  158. django_cfg/core/generation/core_generators/templates.py +141 -0
  159. django_cfg/core/generation/data_generators/__init__.py +15 -0
  160. django_cfg/core/generation/data_generators/cache.py +132 -0
  161. django_cfg/core/generation/data_generators/database.py +117 -0
  162. django_cfg/core/generation/generation.py +92 -0
  163. django_cfg/core/generation/integration_generators/__init__.py +21 -0
  164. django_cfg/core/generation/integration_generators/api.py +237 -0
  165. django_cfg/core/generation/integration_generators/sessions.py +65 -0
  166. django_cfg/core/generation/integration_generators/tailwind.py +54 -0
  167. django_cfg/core/generation/integration_generators/tasks.py +92 -0
  168. django_cfg/core/generation/integration_generators/third_party.py +144 -0
  169. django_cfg/core/generation/orchestrator.py +285 -0
  170. django_cfg/core/generation/protocols.py +30 -0
  171. django_cfg/core/generation/security_generators/__init__.py +0 -0
  172. django_cfg/core/generation/utility_generators/__init__.py +24 -0
  173. django_cfg/core/generation/utility_generators/email.py +58 -0
  174. django_cfg/core/generation/utility_generators/i18n.py +66 -0
  175. django_cfg/core/generation/utility_generators/limits.py +58 -0
  176. django_cfg/core/generation/utility_generators/logging.py +66 -0
  177. django_cfg/core/generation/utility_generators/security.py +101 -0
  178. django_cfg/core/generation/utils/__init__.py +0 -0
  179. django_cfg/core/generation/utils/helpers.py +32 -0
  180. django_cfg/core/integration/__init__.py +18 -25
  181. django_cfg/core/integration/display/startup.py +146 -133
  182. django_cfg/core/integration/url_integration.py +13 -2
  183. django_cfg/core/services/__init__.py +5 -0
  184. django_cfg/core/services/config_service.py +121 -0
  185. django_cfg/core/state/__init__.py +9 -0
  186. django_cfg/core/state/registry.py +84 -0
  187. django_cfg/core/types/__init__.py +15 -0
  188. django_cfg/core/types/aliases.py +15 -0
  189. django_cfg/core/types/enums.py +49 -0
  190. django_cfg/dashboard/DEBUG_README.md +105 -0
  191. django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
  192. django_cfg/dashboard/__init__.py +24 -0
  193. django_cfg/dashboard/components.py +308 -0
  194. django_cfg/dashboard/debug.py +176 -0
  195. django_cfg/dashboard/management/__init__.py +0 -0
  196. django_cfg/dashboard/management/commands/__init__.py +0 -0
  197. django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
  198. django_cfg/dashboard/sections/__init__.py +1 -0
  199. django_cfg/dashboard/sections/base.py +128 -0
  200. django_cfg/dashboard/sections/commands.py +32 -0
  201. django_cfg/dashboard/sections/overview.py +394 -0
  202. django_cfg/dashboard/sections/stats.py +48 -0
  203. django_cfg/dashboard/sections/system.py +73 -0
  204. django_cfg/management/commands/check_settings.py +6 -2
  205. django_cfg/management/commands/clear_constance.py +6 -1
  206. django_cfg/management/commands/create_token.py +5 -4
  207. django_cfg/management/commands/generate.py +5 -0
  208. django_cfg/management/commands/list_urls.py +7 -2
  209. django_cfg/management/commands/migrate_all.py +6 -2
  210. django_cfg/management/commands/migrator.py +6 -1
  211. django_cfg/management/commands/rundramatiq.py +6 -1
  212. django_cfg/management/commands/rundramatiq_simulator.py +11 -4
  213. django_cfg/management/commands/runserver_ngrok.py +9 -7
  214. django_cfg/management/commands/script.py +25 -21
  215. django_cfg/management/commands/show_config.py +6 -1
  216. django_cfg/management/commands/show_urls.py +8 -3
  217. django_cfg/management/commands/superuser.py +5 -4
  218. django_cfg/management/commands/task_clear.py +8 -3
  219. django_cfg/management/commands/task_status.py +8 -3
  220. django_cfg/management/commands/test_email.py +6 -1
  221. django_cfg/management/commands/test_telegram.py +6 -1
  222. django_cfg/management/commands/test_twilio.py +6 -1
  223. django_cfg/management/commands/tree.py +7 -4
  224. django_cfg/models/__init__.py +88 -3
  225. django_cfg/models/api/__init__.py +27 -0
  226. django_cfg/models/{api.py → api/config.py} +1 -1
  227. django_cfg/models/api/drf/__init__.py +21 -0
  228. django_cfg/models/api/drf/config.py +101 -0
  229. django_cfg/models/api/drf/redoc.py +31 -0
  230. django_cfg/models/api/drf/spectacular.py +129 -0
  231. django_cfg/models/api/drf/swagger.py +59 -0
  232. django_cfg/models/{api_keys.py → api/keys.py} +16 -6
  233. django_cfg/models/{limits.py → api/limits.py} +0 -1
  234. django_cfg/models/base/__init__.py +14 -0
  235. django_cfg/models/django/__init__.py +16 -0
  236. django_cfg/models/{constance.py → django/constance.py} +1 -1
  237. django_cfg/models/{environment.py → django/environment.py} +1 -1
  238. django_cfg/models/infrastructure/__init__.py +17 -0
  239. django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
  240. django_cfg/models/infrastructure/database/__init__.py +22 -0
  241. django_cfg/models/infrastructure/database/config.py +265 -0
  242. django_cfg/models/infrastructure/database/converters.py +91 -0
  243. django_cfg/models/infrastructure/database/parsers.py +96 -0
  244. django_cfg/models/infrastructure/database/routing.py +85 -0
  245. django_cfg/models/infrastructure/database/validators.py +170 -0
  246. django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
  247. django_cfg/models/{security.py → infrastructure/security.py} +2 -2
  248. django_cfg/models/ngrok/__init__.py +11 -0
  249. django_cfg/models/ngrok/auth.py +37 -0
  250. django_cfg/models/ngrok/config.py +77 -0
  251. django_cfg/models/ngrok/tunnel.py +35 -0
  252. django_cfg/models/payments/__init__.py +20 -0
  253. django_cfg/models/payments/api_keys.py +57 -0
  254. django_cfg/models/{payments.py → payments/config.py} +56 -154
  255. django_cfg/models/payments/providers/__init__.py +15 -0
  256. django_cfg/models/payments/providers/base.py +25 -0
  257. django_cfg/models/payments/providers/nowpayments.py +48 -0
  258. django_cfg/models/services/__init__.py +18 -0
  259. django_cfg/models/services/base.py +65 -0
  260. django_cfg/models/{email.py → services/email.py} +1 -1
  261. django_cfg/models/services/telegram.py +172 -0
  262. django_cfg/models/tasks/__init__.py +51 -0
  263. django_cfg/models/tasks/backends.py +250 -0
  264. django_cfg/models/tasks/config.py +314 -0
  265. django_cfg/models/tasks/utils.py +174 -0
  266. django_cfg/modules/base.py +18 -3
  267. django_cfg/modules/django_admin/decorators/actions.py +1 -1
  268. django_cfg/modules/django_admin/decorators/display.py +1 -1
  269. django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
  270. django_cfg/modules/django_cfg_rpc_client/README.md +346 -0
  271. django_cfg/modules/django_cfg_rpc_client/__init__.py +51 -0
  272. django_cfg/modules/django_cfg_rpc_client/client.py +540 -0
  273. django_cfg/modules/django_cfg_rpc_client/config.py +207 -0
  274. django_cfg/modules/django_cfg_rpc_client/dashboard/README.md +517 -0
  275. django_cfg/modules/django_cfg_rpc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
  276. django_cfg/modules/django_cfg_rpc_client/dashboard/__init__.py +11 -0
  277. django_cfg/modules/django_cfg_rpc_client/dashboard/apps.py +22 -0
  278. django_cfg/modules/django_cfg_rpc_client/dashboard/monitor.py +435 -0
  279. django_cfg/modules/django_cfg_rpc_client/dashboard/static/django_cfg_rpc_dashboard/js/dashboard.js +373 -0
  280. django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/base.html +76 -0
  281. django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/dashboard.html +200 -0
  282. django_cfg/modules/django_cfg_rpc_client/dashboard/urls.py +22 -0
  283. django_cfg/modules/django_cfg_rpc_client/dashboard/urls_admin.py +9 -0
  284. django_cfg/modules/django_cfg_rpc_client/dashboard/views.py +251 -0
  285. django_cfg/modules/django_cfg_rpc_client/exceptions.py +201 -0
  286. django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
  287. django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
  288. django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
  289. django_cfg/modules/django_drf_theme/README.md +207 -0
  290. django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
  291. django_cfg/modules/django_drf_theme/__init__.py +23 -0
  292. django_cfg/modules/django_drf_theme/apps.py +15 -0
  293. django_cfg/modules/django_drf_theme/renderers.py +58 -0
  294. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
  295. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
  296. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
  297. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
  298. django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
  299. django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
  300. django_cfg/modules/django_email/__init__.py +14 -0
  301. django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
  302. django_cfg/modules/django_email/utils.py +40 -0
  303. django_cfg/modules/django_health/__init__.py +9 -0
  304. django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
  305. django_cfg/modules/django_llm/llm/client.py +155 -550
  306. django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
  307. django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
  308. django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
  309. django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
  310. django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
  311. django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
  312. django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
  313. django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
  314. django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
  315. django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
  316. django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
  317. django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
  318. django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
  319. django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
  320. django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
  321. django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
  322. django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
  323. django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
  324. django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
  325. django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
  326. django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
  327. django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
  328. django_cfg/modules/django_llm/translator/translator.py +150 -603
  329. django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
  330. django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
  331. django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
  332. django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
  333. django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
  334. django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
  335. django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
  336. django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
  337. django_cfg/modules/django_logging/__init__.py +14 -0
  338. django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
  339. django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
  340. django_cfg/modules/django_ngrok/__init__.py +39 -0
  341. django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
  342. django_cfg/modules/django_rpc_old/POETRY.md +344 -0
  343. django_cfg/modules/django_rpc_old/README.md +397 -0
  344. django_cfg/modules/django_rpc_old/TESTING.md +358 -0
  345. django_cfg/modules/django_rpc_old/__init__.py +39 -0
  346. django_cfg/modules/django_rpc_old/client.py +531 -0
  347. django_cfg/modules/django_rpc_old/config.py +279 -0
  348. django_cfg/modules/django_rpc_old/exceptions.py +172 -0
  349. django_cfg/modules/django_tailwind/README.md +478 -0
  350. django_cfg/modules/django_tailwind/__init__.py +7 -0
  351. django_cfg/modules/django_tailwind/apps.py +10 -0
  352. django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
  353. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
  354. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
  355. django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
  356. django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
  357. django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
  358. django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
  359. django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
  360. django_cfg/modules/django_tasks/__init__.py +29 -0
  361. django_cfg/modules/django_tasks/factory.py +127 -0
  362. django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
  363. django_cfg/modules/django_tasks/settings.py +107 -0
  364. django_cfg/modules/django_telegram/__init__.py +29 -0
  365. django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
  366. django_cfg/modules/django_telegram/utils.py +62 -0
  367. django_cfg/modules/django_twilio/__init__.py +54 -107
  368. django_cfg/modules/django_twilio/_imports.py +30 -0
  369. django_cfg/modules/django_twilio/base.py +192 -0
  370. django_cfg/modules/django_twilio/email_otp.py +227 -0
  371. django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
  372. django_cfg/modules/django_twilio/simple_service.py +1 -2
  373. django_cfg/modules/django_twilio/sms.py +94 -0
  374. django_cfg/modules/django_twilio/twilio_service.py +2 -3
  375. django_cfg/modules/django_twilio/unified.py +310 -0
  376. django_cfg/modules/django_twilio/utils.py +190 -0
  377. django_cfg/modules/django_twilio/whatsapp.py +137 -0
  378. django_cfg/modules/django_unfold/callbacks/base.py +198 -7
  379. django_cfg/modules/django_unfold/callbacks/main.py +102 -10
  380. django_cfg/modules/django_unfold/dashboard.py +65 -43
  381. django_cfg/modules/django_unfold/models/config.py +13 -12
  382. django_cfg/modules/django_unfold/models/navigation.py +8 -3
  383. django_cfg/modules/django_unfold/models/tabs.py +2 -2
  384. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
  385. django_cfg/registry/core.py +24 -26
  386. django_cfg/registry/modules.py +5 -2
  387. django_cfg/registry/services.py +20 -3
  388. django_cfg/registry/third_party.py +8 -8
  389. django_cfg/static/admin/css/dashboard.css +260 -0
  390. django_cfg/static/admin/js/commands.js +171 -0
  391. django_cfg/static/admin/js/dashboard.js +126 -0
  392. django_cfg/templates/admin/components/management_commands.js +375 -0
  393. django_cfg/templates/admin/components/progress_bar.html +18 -23
  394. django_cfg/templates/admin/index.html +48 -20
  395. django_cfg/templates/admin/index_new.html +106 -0
  396. django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
  397. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
  398. django_cfg/templates/admin/sections/commands_section.html +626 -0
  399. django_cfg/templates/admin/sections/overview_section.html +112 -0
  400. django_cfg/templates/admin/sections/stats_section.html +35 -0
  401. django_cfg/templates/admin/sections/system_section.html +99 -0
  402. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
  403. django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
  404. django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
  405. django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
  406. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
  407. django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
  408. django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
  409. django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
  410. django_cfg/templatetags/django_cfg.py +7 -1
  411. django_cfg/utils/smart_defaults.py +4 -4
  412. django_cfg-1.4.0.dist-info/METADATA +920 -0
  413. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/RECORD +424 -195
  414. django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
  415. django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
  416. django_cfg/core/generation.py +0 -621
  417. django_cfg/management/commands/validate_config.py +0 -189
  418. django_cfg/models/database.py +0 -480
  419. django_cfg/models/drf.py +0 -272
  420. django_cfg/models/ngrok.py +0 -122
  421. django_cfg/models/services.py +0 -440
  422. django_cfg/models/tasks.py +0 -550
  423. django_cfg/modules/django_twilio/service.py +0 -942
  424. django_cfg/template_archive/django_sample.zip +0 -0
  425. django_cfg/templates/rest_framework/api.html +0 -12
  426. django_cfg/utils/toolkit.py +0 -703
  427. django_cfg-1.3.13.dist-info/METADATA +0 -1029
  428. /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
  429. /django_cfg/core/{environment.py → environment/detector.py} +0 -0
  430. /django_cfg/models/{cors.py → api/cors.py} +0 -0
  431. /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
  432. /django_cfg/models/{base.py → base/config.py} +0 -0
  433. /django_cfg/models/{cfg.py → base/module.py} +0 -0
  434. /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
  435. /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
  436. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/WHEEL +0 -0
  437. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/entry_points.txt +0 -0
  438. {django_cfg-1.3.13.dist-info → django_cfg-1.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,285 @@
1
+ """
2
+ Settings generation orchestrator.
3
+
4
+ Coordinates all specialized generators to produce complete Django settings.
5
+ Size: ~200 lines (orchestration logic)
6
+ """
7
+
8
+ from typing import Dict, Any, List, TYPE_CHECKING
9
+ import logging
10
+
11
+ from django_cfg.core.exceptions import ConfigurationError
12
+
13
+ if TYPE_CHECKING:
14
+ from ..base.config_model import DjangoConfig
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ class SettingsOrchestrator:
20
+ """
21
+ Orchestrates Django settings generation from DjangoConfig.
22
+
23
+ Responsibilities:
24
+ - Coordinate all specialized generators
25
+ - Merge settings in correct order
26
+ - Apply additional settings
27
+ - Validate generated settings
28
+ - Handle errors gracefully
29
+
30
+ Example:
31
+ ```python
32
+ orchestrator = SettingsOrchestrator(config)
33
+ settings = orchestrator.generate()
34
+ ```
35
+ """
36
+
37
+ def __init__(self, config: "DjangoConfig"):
38
+ """
39
+ Initialize orchestrator with configuration.
40
+
41
+ Args:
42
+ config: DjangoConfig instance
43
+ """
44
+ self.config = config
45
+
46
+ def generate(self) -> Dict[str, Any]:
47
+ """
48
+ Generate complete Django settings dictionary.
49
+
50
+ Returns:
51
+ Complete Django settings dictionary
52
+
53
+ Raises:
54
+ ConfigurationError: If settings generation fails
55
+
56
+ Example:
57
+ >>> orchestrator = SettingsOrchestrator(config)
58
+ >>> settings = orchestrator.generate()
59
+ >>> "SECRET_KEY" in settings
60
+ True
61
+ """
62
+ try:
63
+ settings = {}
64
+
65
+ # Generate settings in dependency order
66
+ settings.update(self._generate_core_settings())
67
+ settings.update(self._generate_template_settings())
68
+ settings.update(self._generate_static_settings())
69
+ settings.update(self._generate_database_settings())
70
+ settings.update(self._generate_cache_settings())
71
+ settings.update(self._generate_security_settings())
72
+ settings.update(self._generate_email_settings())
73
+ settings.update(self._generate_logging_settings())
74
+ settings.update(self._generate_i18n_settings())
75
+ settings.update(self._generate_limits_settings())
76
+ settings.update(self._generate_session_settings())
77
+ settings.update(self._generate_third_party_settings())
78
+ settings.update(self._generate_api_settings())
79
+ settings.update(self._generate_tasks_settings())
80
+ settings.update(self._generate_tailwind_settings())
81
+
82
+ # Apply additional settings (user overrides)
83
+ settings.update(self._get_additional_settings())
84
+
85
+ return settings
86
+
87
+ except Exception as e:
88
+ raise ConfigurationError(f"Failed to generate settings: {e}") from e
89
+
90
+ def _generate_core_settings(self) -> Dict[str, Any]:
91
+ """Generate core Django settings."""
92
+ try:
93
+ from .core_generators.settings import CoreSettingsGenerator
94
+ generator = CoreSettingsGenerator(self.config)
95
+ return generator.generate()
96
+ except Exception as e:
97
+ raise ConfigurationError(f"Failed to generate core settings: {e}") from e
98
+
99
+ def _generate_template_settings(self) -> Dict[str, Any]:
100
+ """Generate template settings."""
101
+ try:
102
+ from .core_generators.templates import TemplateSettingsGenerator
103
+ generator = TemplateSettingsGenerator(self.config)
104
+ return generator.generate()
105
+ except Exception as e:
106
+ raise ConfigurationError(f"Failed to generate template settings: {e}") from e
107
+
108
+ def _generate_static_settings(self) -> Dict[str, Any]:
109
+ """Generate static files settings."""
110
+ try:
111
+ from .core_generators.static import StaticFilesGenerator
112
+ generator = StaticFilesGenerator(self.config)
113
+ return generator.generate()
114
+ except Exception as e:
115
+ raise ConfigurationError(f"Failed to generate static settings: {e}") from e
116
+
117
+ def _generate_database_settings(self) -> Dict[str, Any]:
118
+ """Generate database settings."""
119
+ try:
120
+ from .data_generators.database import DatabaseSettingsGenerator
121
+ generator = DatabaseSettingsGenerator(self.config)
122
+ return generator.generate()
123
+ except Exception as e:
124
+ raise ConfigurationError(f"Failed to generate database settings: {e}") from e
125
+
126
+ def _generate_cache_settings(self) -> Dict[str, Any]:
127
+ """Generate cache settings."""
128
+ try:
129
+ from .data_generators.cache import CacheSettingsGenerator
130
+ generator = CacheSettingsGenerator(self.config)
131
+ return generator.generate()
132
+ except Exception as e:
133
+ raise ConfigurationError(f"Failed to generate cache settings: {e}") from e
134
+
135
+ def _generate_security_settings(self) -> Dict[str, Any]:
136
+ """Generate security settings."""
137
+ try:
138
+ from .utility_generators.security import SecuritySettingsGenerator
139
+ generator = SecuritySettingsGenerator(self.config)
140
+ return generator.generate()
141
+ except Exception as e:
142
+ raise ConfigurationError(f"Failed to generate security settings: {e}") from e
143
+
144
+ def _generate_email_settings(self) -> Dict[str, Any]:
145
+ """Generate email settings."""
146
+ try:
147
+ from .utility_generators.email import EmailSettingsGenerator
148
+ generator = EmailSettingsGenerator(self.config)
149
+ return generator.generate()
150
+ except Exception as e:
151
+ raise ConfigurationError(f"Failed to generate email settings: {e}") from e
152
+
153
+ def _generate_logging_settings(self) -> Dict[str, Any]:
154
+ """Generate logging settings."""
155
+ try:
156
+ from .utility_generators.logging import LoggingSettingsGenerator
157
+ generator = LoggingSettingsGenerator(self.config)
158
+ return generator.generate()
159
+ except Exception as e:
160
+ raise ConfigurationError(f"Failed to generate logging settings: {e}") from e
161
+
162
+ def _generate_i18n_settings(self) -> Dict[str, Any]:
163
+ """Generate i18n settings."""
164
+ try:
165
+ from .utility_generators.i18n import I18nSettingsGenerator
166
+ generator = I18nSettingsGenerator(self.config)
167
+ return generator.generate()
168
+ except Exception as e:
169
+ raise ConfigurationError(f"Failed to generate i18n settings: {e}") from e
170
+
171
+ def _generate_limits_settings(self) -> Dict[str, Any]:
172
+ """Generate limits settings."""
173
+ try:
174
+ from .utility_generators.limits import LimitsSettingsGenerator
175
+ generator = LimitsSettingsGenerator(self.config)
176
+ return generator.generate()
177
+ except Exception as e:
178
+ raise ConfigurationError(f"Failed to generate limits settings: {e}") from e
179
+
180
+ def _generate_session_settings(self) -> Dict[str, Any]:
181
+ """Generate session settings."""
182
+ try:
183
+ from .integration_generators.sessions import SessionSettingsGenerator
184
+ generator = SessionSettingsGenerator(self.config)
185
+ return generator.generate()
186
+ except Exception as e:
187
+ raise ConfigurationError(f"Failed to generate session settings: {e}") from e
188
+
189
+ def _generate_third_party_settings(self) -> Dict[str, Any]:
190
+ """Generate third-party integration settings."""
191
+ try:
192
+ from .integration_generators.third_party import ThirdPartyIntegrationsGenerator
193
+ generator = ThirdPartyIntegrationsGenerator(self.config)
194
+ return generator.generate()
195
+ except Exception as e:
196
+ raise ConfigurationError(f"Failed to generate third-party settings: {e}") from e
197
+
198
+ def _generate_api_settings(self) -> Dict[str, Any]:
199
+ """Generate API framework settings."""
200
+ try:
201
+ from .integration_generators.api import APIFrameworksGenerator
202
+ generator = APIFrameworksGenerator(self.config)
203
+ return generator.generate()
204
+ except Exception as e:
205
+ raise ConfigurationError(f"Failed to generate API settings: {e}") from e
206
+
207
+ def _generate_tasks_settings(self) -> Dict[str, Any]:
208
+ """Generate background tasks settings."""
209
+ try:
210
+ from .integration_generators.tasks import TasksSettingsGenerator
211
+ generator = TasksSettingsGenerator(self.config)
212
+ return generator.generate()
213
+ except Exception as e:
214
+ raise ConfigurationError(f"Failed to generate tasks settings: {e}") from e
215
+
216
+ def _generate_tailwind_settings(self) -> Dict[str, Any]:
217
+ """Generate Tailwind CSS settings."""
218
+ try:
219
+ from .integration_generators.tailwind import TailwindSettingsGenerator
220
+ generator = TailwindSettingsGenerator(self.config)
221
+ return generator.generate()
222
+ except Exception as e:
223
+ raise ConfigurationError(f"Failed to generate Tailwind settings: {e}") from e
224
+
225
+ def _get_additional_settings(self) -> Dict[str, Any]:
226
+ """
227
+ Get additional settings from config (user overrides).
228
+
229
+ Returns:
230
+ Dictionary with additional settings
231
+ """
232
+ if hasattr(self.config, "get_additional_settings"):
233
+ return self.config.get_additional_settings()
234
+ return {}
235
+
236
+ @staticmethod
237
+ def validate_settings(settings: Dict[str, Any]) -> List[str]:
238
+ """
239
+ Validate generated Django settings.
240
+
241
+ Args:
242
+ settings: Generated Django settings
243
+
244
+ Returns:
245
+ List of validation errors (empty if valid)
246
+
247
+ Example:
248
+ >>> errors = SettingsOrchestrator.validate_settings(settings)
249
+ >>> if errors:
250
+ ... print("Validation errors:", errors)
251
+ """
252
+ errors = []
253
+
254
+ # Required settings validation
255
+ required_settings = [
256
+ "SECRET_KEY",
257
+ "DEBUG",
258
+ "ALLOWED_HOSTS",
259
+ "INSTALLED_APPS",
260
+ "MIDDLEWARE",
261
+ "DATABASES"
262
+ ]
263
+
264
+ for setting in required_settings:
265
+ if setting not in settings:
266
+ errors.append(f"Missing required setting: {setting}")
267
+
268
+ # SECRET_KEY validation
269
+ if "SECRET_KEY" in settings:
270
+ secret_key = settings["SECRET_KEY"]
271
+ if not secret_key or len(secret_key) < 50:
272
+ errors.append("SECRET_KEY must be at least 50 characters long")
273
+
274
+ # DATABASES validation
275
+ if "DATABASES" in settings:
276
+ databases = settings["DATABASES"]
277
+ if not databases:
278
+ errors.append("DATABASES cannot be empty")
279
+ elif "default" not in databases:
280
+ errors.append("DATABASES must contain a 'default' database")
281
+
282
+ return errors
283
+
284
+
285
+ __all__ = ["SettingsOrchestrator"]
@@ -0,0 +1,30 @@
1
+ """
2
+ Generator protocols for type safety.
3
+
4
+ Defines interfaces that all settings generators must implement.
5
+ """
6
+
7
+ from typing import Protocol, Dict, Any, TYPE_CHECKING
8
+
9
+ if TYPE_CHECKING:
10
+ from ..base.config_model import DjangoConfig
11
+
12
+
13
+ class SettingsGeneratorProtocol(Protocol):
14
+ """Protocol for all settings generators."""
15
+
16
+ def __init__(self, config: "DjangoConfig") -> None:
17
+ """Initialize generator with configuration."""
18
+ ...
19
+
20
+ def generate(self) -> Dict[str, Any]:
21
+ """
22
+ Generate Django settings dictionary.
23
+
24
+ Returns:
25
+ Dictionary of Django settings
26
+ """
27
+ ...
28
+
29
+
30
+ __all__ = ["SettingsGeneratorProtocol"]
@@ -0,0 +1,24 @@
1
+ """
2
+ Utility generators module.
3
+
4
+ Contains generators for utility Django settings:
5
+ - Email configuration
6
+ - Logging settings
7
+ - Internationalization (i18n/l10n)
8
+ - Application limits
9
+ - Security settings
10
+ """
11
+
12
+ from .email import EmailSettingsGenerator
13
+ from .logging import LoggingSettingsGenerator
14
+ from .i18n import I18nSettingsGenerator
15
+ from .limits import LimitsSettingsGenerator
16
+ from .security import SecuritySettingsGenerator
17
+
18
+ __all__ = [
19
+ "EmailSettingsGenerator",
20
+ "LoggingSettingsGenerator",
21
+ "I18nSettingsGenerator",
22
+ "LimitsSettingsGenerator",
23
+ "SecuritySettingsGenerator",
24
+ ]
@@ -0,0 +1,58 @@
1
+ """
2
+ Email settings generator.
3
+
4
+ Handles Django email configuration.
5
+ Size: ~50 lines (focused on email settings)
6
+ """
7
+
8
+ from typing import Dict, Any, TYPE_CHECKING
9
+
10
+ if TYPE_CHECKING:
11
+ from ...base.config_model import DjangoConfig
12
+
13
+
14
+ class EmailSettingsGenerator:
15
+ """
16
+ Generates email settings.
17
+
18
+ Responsibilities:
19
+ - EMAIL_BACKEND configuration
20
+ - SMTP settings
21
+ - Email authentication
22
+
23
+ Example:
24
+ ```python
25
+ generator = EmailSettingsGenerator(config)
26
+ settings = generator.generate()
27
+ ```
28
+ """
29
+
30
+ def __init__(self, config: "DjangoConfig"):
31
+ """
32
+ Initialize generator with configuration.
33
+
34
+ Args:
35
+ config: DjangoConfig instance
36
+ """
37
+ self.config = config
38
+
39
+ def generate(self) -> Dict[str, Any]:
40
+ """
41
+ Generate email settings.
42
+
43
+ Returns:
44
+ Dictionary with email configuration
45
+
46
+ Example:
47
+ >>> generator = EmailSettingsGenerator(config)
48
+ >>> settings = generator.generate()
49
+ """
50
+ if not self.config.email:
51
+ return {}
52
+
53
+ email_settings = self.config.email.to_django_settings()
54
+
55
+ return email_settings
56
+
57
+
58
+ __all__ = ["EmailSettingsGenerator"]
@@ -0,0 +1,66 @@
1
+ """
2
+ Internationalization settings generator.
3
+
4
+ Handles Django i18n/l10n configuration.
5
+ Size: ~60 lines (focused on i18n settings)
6
+ """
7
+
8
+ from typing import Dict, Any, TYPE_CHECKING
9
+
10
+ if TYPE_CHECKING:
11
+ from ...base.config_model import DjangoConfig
12
+
13
+
14
+ class I18nSettingsGenerator:
15
+ """
16
+ Generates internationalization settings.
17
+
18
+ Responsibilities:
19
+ - LANGUAGE_CODE, TIME_ZONE
20
+ - USE_I18N, USE_TZ flags
21
+ - Localization settings
22
+
23
+ Example:
24
+ ```python
25
+ generator = I18nSettingsGenerator(config)
26
+ settings = generator.generate()
27
+ ```
28
+ """
29
+
30
+ def __init__(self, config: "DjangoConfig"):
31
+ """
32
+ Initialize generator with configuration.
33
+
34
+ Args:
35
+ config: DjangoConfig instance
36
+ """
37
+ self.config = config
38
+
39
+ def generate(self) -> Dict[str, Any]:
40
+ """
41
+ Generate i18n settings.
42
+
43
+ Returns:
44
+ Dictionary with i18n configuration
45
+
46
+ Example:
47
+ >>> generator = I18nSettingsGenerator(config)
48
+ >>> settings = generator.generate()
49
+ >>> "LANGUAGE_CODE" in settings
50
+ True
51
+ """
52
+ settings = {
53
+ "LANGUAGE_CODE": "en-us",
54
+ "TIME_ZONE": "UTC",
55
+ "USE_I18N": True,
56
+ "USE_TZ": True,
57
+ }
58
+
59
+ # Adjust for different environments
60
+ if self.config.env_mode == "development":
61
+ settings["USE_L10N"] = True # Deprecated but sometimes needed
62
+
63
+ return settings
64
+
65
+
66
+ __all__ = ["I18nSettingsGenerator"]
@@ -0,0 +1,58 @@
1
+ """
2
+ Application limits settings generator.
3
+
4
+ Handles request limits and rate limiting configuration.
5
+ Size: ~50 lines (focused on limits settings)
6
+ """
7
+
8
+ from typing import Dict, Any, TYPE_CHECKING
9
+
10
+ if TYPE_CHECKING:
11
+ from ...base.config_model import DjangoConfig
12
+
13
+
14
+ class LimitsSettingsGenerator:
15
+ """
16
+ Generates application limits settings.
17
+
18
+ Responsibilities:
19
+ - DATA_UPLOAD_MAX_MEMORY_SIZE
20
+ - FILE_UPLOAD_MAX_MEMORY_SIZE
21
+ - Rate limiting configuration
22
+
23
+ Example:
24
+ ```python
25
+ generator = LimitsSettingsGenerator(config)
26
+ settings = generator.generate()
27
+ ```
28
+ """
29
+
30
+ def __init__(self, config: "DjangoConfig"):
31
+ """
32
+ Initialize generator with configuration.
33
+
34
+ Args:
35
+ config: DjangoConfig instance
36
+ """
37
+ self.config = config
38
+
39
+ def generate(self) -> Dict[str, Any]:
40
+ """
41
+ Generate limits settings.
42
+
43
+ Returns:
44
+ Dictionary with limits configuration
45
+
46
+ Example:
47
+ >>> generator = LimitsSettingsGenerator(config)
48
+ >>> settings = generator.generate()
49
+ """
50
+ if not self.config.limits:
51
+ return {}
52
+
53
+ limits_settings = self.config.limits.to_django_settings()
54
+
55
+ return limits_settings
56
+
57
+
58
+ __all__ = ["LimitsSettingsGenerator"]
@@ -0,0 +1,66 @@
1
+ """
2
+ Logging settings generator.
3
+
4
+ Handles Django logging configuration.
5
+ Size: ~60 lines (focused on logging settings)
6
+ """
7
+
8
+ from typing import Dict, Any, TYPE_CHECKING
9
+
10
+ if TYPE_CHECKING:
11
+ from ...base.config_model import DjangoConfig
12
+
13
+
14
+ class LoggingSettingsGenerator:
15
+ """
16
+ Generates logging settings.
17
+
18
+ Responsibilities:
19
+ - LOGGING configuration
20
+ - Environment-specific log levels
21
+ - Log handlers and formatters
22
+
23
+ Example:
24
+ ```python
25
+ generator = LoggingSettingsGenerator(config)
26
+ settings = generator.generate()
27
+ ```
28
+ """
29
+
30
+ def __init__(self, config: "DjangoConfig"):
31
+ """
32
+ Initialize generator with configuration.
33
+
34
+ Args:
35
+ config: DjangoConfig instance
36
+ """
37
+ self.config = config
38
+
39
+ def generate(self) -> Dict[str, Any]:
40
+ """
41
+ Generate logging settings.
42
+
43
+ Returns:
44
+ Dictionary with logging configuration
45
+
46
+ Example:
47
+ >>> generator = LoggingSettingsGenerator(config)
48
+ >>> settings = generator.generate()
49
+ >>> "LOGGING" in settings
50
+ True
51
+ """
52
+ from ....utils.smart_defaults import SmartDefaults
53
+
54
+ # Generate logging defaults based on environment
55
+ logging_defaults = SmartDefaults.get_logging_defaults(
56
+ self.config.env_mode,
57
+ self.config.debug
58
+ )
59
+
60
+ if not logging_defaults:
61
+ return {}
62
+
63
+ return {"LOGGING": logging_defaults}
64
+
65
+
66
+ __all__ = ["LoggingSettingsGenerator"]
@@ -0,0 +1,101 @@
1
+ """
2
+ Security settings generator.
3
+
4
+ Handles Django security configuration.
5
+ Size: ~100 lines (focused on security settings)
6
+ """
7
+
8
+ from typing import Dict, Any, TYPE_CHECKING
9
+
10
+ if TYPE_CHECKING:
11
+ from ...base.config_model import DjangoConfig
12
+
13
+
14
+ class SecuritySettingsGenerator:
15
+ """
16
+ Generates security settings.
17
+
18
+ Responsibilities:
19
+ - CORS configuration
20
+ - SSL/HTTPS settings
21
+ - Security headers
22
+ - Production security hardening
23
+
24
+ Example:
25
+ ```python
26
+ generator = SecuritySettingsGenerator(config)
27
+ settings = generator.generate()
28
+ ```
29
+ """
30
+
31
+ def __init__(self, config: "DjangoConfig"):
32
+ """
33
+ Initialize generator with configuration.
34
+
35
+ Args:
36
+ config: DjangoConfig instance
37
+ """
38
+ self.config = config
39
+
40
+ def generate(self) -> Dict[str, Any]:
41
+ """
42
+ Generate security settings.
43
+
44
+ Returns:
45
+ Dictionary with security configuration
46
+
47
+ Example:
48
+ >>> generator = SecuritySettingsGenerator(config)
49
+ >>> settings = generator.generate()
50
+ """
51
+ settings = {}
52
+
53
+ # Generate security defaults if domains or SSL redirect are configured
54
+ if self.config.security_domains or self.config.ssl_redirect is not None:
55
+ security_defaults = self._get_security_defaults()
56
+ settings.update(security_defaults)
57
+
58
+ # Additional security settings for production
59
+ if self.config.env_mode == "production":
60
+ production_security = self._get_production_security()
61
+ settings.update(production_security)
62
+
63
+ return settings
64
+
65
+ def _get_security_defaults(self) -> Dict[str, Any]:
66
+ """
67
+ Get security defaults based on configuration.
68
+
69
+ Returns:
70
+ Dictionary with security defaults
71
+ """
72
+ from ....utils.smart_defaults import SmartDefaults
73
+
74
+ security_defaults = SmartDefaults.get_security_defaults(
75
+ self.config.security_domains,
76
+ self.config.env_mode,
77
+ self.config.debug,
78
+ self.config.ssl_redirect,
79
+ self.config.cors_allow_headers
80
+ )
81
+
82
+ return security_defaults
83
+
84
+ def _get_production_security(self) -> Dict[str, Any]:
85
+ """
86
+ Get production-specific security settings.
87
+
88
+ Returns:
89
+ Dictionary with production security settings
90
+ """
91
+ return {
92
+ "SECURE_SSL_REDIRECT": True,
93
+ "SECURE_HSTS_SECONDS": 31536000, # 1 year
94
+ "SECURE_HSTS_INCLUDE_SUBDOMAINS": True,
95
+ "SECURE_HSTS_PRELOAD": True,
96
+ "SESSION_COOKIE_SECURE": True,
97
+ "CSRF_COOKIE_SECURE": True,
98
+ }
99
+
100
+
101
+ __all__ = ["SecuritySettingsGenerator"]
File without changes