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,314 @@
1
+ """
2
+ Main task configuration models.
3
+
4
+ Contains TaskConfig class (main entry point) and related enums.
5
+ Size: ~250 lines (focused on main configuration)
6
+ """
7
+
8
+ from pydantic import BaseModel, Field, field_validator
9
+ from typing import Optional, List, Dict, Any
10
+ from enum import Enum
11
+ import os
12
+ import logging
13
+
14
+ from django_cfg.models.base import BaseCfgAutoModule
15
+
16
+ logger = logging.getLogger(__name__)
17
+
18
+
19
+ class TaskBackend(str, Enum):
20
+ """Supported task backends."""
21
+ DRAMATIQ = "dramatiq"
22
+ # Future: CELERY = "celery"
23
+
24
+
25
+ class QueuePriority(str, Enum):
26
+ """Standard queue priorities."""
27
+ CRITICAL = "critical"
28
+ HIGH = "high"
29
+ DEFAULT = "default"
30
+ LOW = "low"
31
+ BACKGROUND = "background"
32
+
33
+
34
+ class TaskConfig(BaseModel, BaseCfgAutoModule):
35
+ """
36
+ High-level task system configuration.
37
+
38
+ Main entry point for configuring background task processing in Django-CFG.
39
+ Provides environment-aware defaults and automatic Redis integration.
40
+
41
+ Example:
42
+ ```python
43
+ from django_cfg.models.tasks import TaskConfig
44
+
45
+ tasks = TaskConfig(
46
+ enabled=True,
47
+ backend=TaskBackend.DRAMATIQ,
48
+ )
49
+ ```
50
+ """
51
+
52
+ # === Core Settings ===
53
+ enabled: bool = Field(
54
+ default=True,
55
+ description="Enable background task processing"
56
+ )
57
+ backend: TaskBackend = Field(
58
+ default=TaskBackend.DRAMATIQ,
59
+ description="Task processing backend"
60
+ )
61
+
62
+ def __init__(self, **data):
63
+ """Initialize TaskConfig with BaseCfgAutoModule support."""
64
+ super().__init__(**data)
65
+ # Initialize _config attribute for BaseCfgAutoModule
66
+ self._config = None
67
+
68
+ # === Backend-Specific Configuration ===
69
+ dramatiq: 'DramatiqConfig' = Field(
70
+ default_factory=lambda: None,
71
+ description="Dramatiq-specific configuration"
72
+ )
73
+ worker: 'WorkerConfig' = Field(
74
+ default_factory=lambda: None,
75
+ description="Worker configuration"
76
+ )
77
+
78
+ def model_post_init(self, __context: Any) -> None:
79
+ """Initialize backend configs with defaults after model creation."""
80
+ if self.dramatiq is None:
81
+ from .backends import DramatiqConfig
82
+ self.dramatiq = DramatiqConfig()
83
+ if self.worker is None:
84
+ from .backends import WorkerConfig
85
+ self.worker = WorkerConfig()
86
+
87
+ # === Environment-Specific Overrides ===
88
+ dev_processes: Optional[int] = Field(
89
+ default=2,
90
+ description="Number of processes in development environment"
91
+ )
92
+ prod_processes: Optional[int] = Field(
93
+ default=None,
94
+ description="Number of processes in production environment"
95
+ )
96
+
97
+ # === Auto-Configuration ===
98
+ auto_discover_tasks: bool = Field(
99
+ default=True,
100
+ description="Automatically discover tasks in Django apps"
101
+ )
102
+ task_modules: List[str] = Field(
103
+ default=["tasks"],
104
+ description="Module names to search for tasks"
105
+ )
106
+
107
+ @field_validator("enabled")
108
+ @classmethod
109
+ def validate_enabled_with_environment(cls, v: bool) -> bool:
110
+ """Validate task system can be enabled in current environment."""
111
+ if v:
112
+ # Check if we're in a test environment
113
+ if os.getenv("DJANGO_SETTINGS_MODULE", "").endswith("test"):
114
+ logger.info("Task system disabled in test environment")
115
+ return False
116
+
117
+ # Additional environment checks can be added here
118
+ # For example, checking if Redis is available
119
+
120
+ return v
121
+
122
+ def get_effective_processes(self, debug: bool = False) -> int:
123
+ """
124
+ Get effective number of processes based on environment.
125
+
126
+ Args:
127
+ debug: Whether in debug mode
128
+
129
+ Returns:
130
+ Number of worker processes to use
131
+
132
+ Example:
133
+ >>> config = TaskConfig()
134
+ >>> config.get_effective_processes(debug=True)
135
+ 2
136
+ """
137
+ if debug and self.dev_processes is not None:
138
+ return self.dev_processes
139
+ elif not debug and self.prod_processes is not None:
140
+ return self.prod_processes
141
+ else:
142
+ return self.dramatiq.processes
143
+
144
+ def get_effective_queues(self) -> List[str]:
145
+ """
146
+ Get effective queue configuration.
147
+
148
+ Returns:
149
+ List of queue names
150
+
151
+ Example:
152
+ >>> config = TaskConfig()
153
+ >>> config.get_effective_queues()
154
+ ['default', 'high', 'low']
155
+ """
156
+ return self.dramatiq.queues
157
+
158
+ def get_redis_config(self, redis_url: str) -> Dict[str, Any]:
159
+ """
160
+ Generate Redis configuration for Dramatiq.
161
+
162
+ Args:
163
+ redis_url: Redis connection URL
164
+
165
+ Returns:
166
+ Dictionary with Redis connection parameters
167
+
168
+ Example:
169
+ >>> config = TaskConfig()
170
+ >>> config.get_redis_config("redis://localhost:6379/1")
171
+ {'host': 'localhost', 'port': 6379, 'db': 1, 'password': None}
172
+ """
173
+ from urllib.parse import urlparse
174
+
175
+ # Parse Redis URL
176
+ parsed = urlparse(redis_url)
177
+
178
+ # Build Redis config
179
+ config = {
180
+ "host": parsed.hostname or "localhost",
181
+ "port": parsed.port or 6379,
182
+ "db": self.dramatiq.redis_db,
183
+ "password": parsed.password,
184
+ }
185
+
186
+ # Add SSL if specified
187
+ if parsed.scheme == "rediss":
188
+ config["ssl"] = True
189
+
190
+ return config
191
+
192
+ def get_dramatiq_settings(self, redis_url: str) -> Dict[str, Any]:
193
+ """
194
+ Generate complete Dramatiq settings for Django.
195
+
196
+ Args:
197
+ redis_url: Redis connection URL
198
+
199
+ Returns:
200
+ Dictionary with complete Dramatiq configuration
201
+
202
+ Example:
203
+ >>> config = TaskConfig()
204
+ >>> settings = config.get_dramatiq_settings("redis://localhost:6379/1")
205
+ >>> "DRAMATIQ_BROKER" in settings
206
+ True
207
+ """
208
+ from urllib.parse import urlparse
209
+
210
+ redis_config = self.get_redis_config(redis_url)
211
+ parsed = urlparse(redis_url)
212
+
213
+ # Build Redis URL with correct database
214
+ redis_url_with_db = redis_url
215
+ if parsed.path and parsed.path != "/":
216
+ # Replace existing database in URL
217
+ redis_url_with_db = redis_url.replace(parsed.path, f"/{self.dramatiq.redis_db}")
218
+ else:
219
+ # Add database to URL
220
+ redis_url_with_db = f"{redis_url.rstrip('/')}/{self.dramatiq.redis_db}"
221
+
222
+ return {
223
+ "DRAMATIQ_BROKER": {
224
+ "BROKER": "dramatiq.brokers.redis.RedisBroker",
225
+ "OPTIONS": {
226
+ "url": redis_url_with_db,
227
+ **redis_config
228
+ },
229
+ },
230
+ "DRAMATIQ_RESULT_BACKEND": {
231
+ "BACKEND": "dramatiq.results.backends.redis.RedisBackend",
232
+ "BACKEND_OPTIONS": {
233
+ "url": redis_url_with_db,
234
+ **redis_config
235
+ },
236
+ },
237
+ "DRAMATIQ_MIDDLEWARE": self.dramatiq.middleware,
238
+ "DRAMATIQ_QUEUES": self.dramatiq.queues,
239
+ }
240
+
241
+ def get_smart_defaults(self):
242
+ """
243
+ Get smart default configuration for this module.
244
+
245
+ Returns:
246
+ TaskConfig with smart defaults based on environment
247
+ """
248
+ from .utils import get_default_task_config
249
+
250
+ config = self.get_config()
251
+ debug = getattr(config, 'debug', False) if config else False
252
+ return get_default_task_config(debug=debug)
253
+
254
+ def get_module_config(self):
255
+ """
256
+ Get the final configuration for this module.
257
+
258
+ Returns:
259
+ Self (TaskConfig instance)
260
+ """
261
+ return self
262
+
263
+ @classmethod
264
+ def auto_initialize_if_needed(cls) -> Optional['TaskConfig']:
265
+ """
266
+ Auto-initialize TaskConfig if needed based on config flags.
267
+
268
+ Returns:
269
+ TaskConfig instance if should be initialized, None otherwise
270
+
271
+ Example:
272
+ >>> task_config = TaskConfig.auto_initialize_if_needed()
273
+ >>> if task_config:
274
+ ... print("Tasks enabled")
275
+ """
276
+ # Get config through BaseCfgModule
277
+ from django_cfg.modules import BaseCfgModule
278
+ base_module = BaseCfgModule()
279
+ config = base_module.get_config()
280
+
281
+ if not config:
282
+ return None
283
+
284
+ # Check if TaskConfig already exists
285
+ if hasattr(config, 'tasks') and config.tasks is not None:
286
+ # Set config reference and return existing
287
+ config.tasks.set_config(config)
288
+ return config.tasks
289
+
290
+ # Check if tasks should be enabled
291
+ if config.should_enable_tasks():
292
+ # Auto-initialize with smart defaults
293
+ task_config = cls().get_smart_defaults()
294
+ task_config.set_config(config)
295
+ config.tasks = task_config
296
+
297
+ logger.info("🚀 Auto-initialized TaskConfig (enabled by knowbase/agents/tasks flags)")
298
+
299
+ return task_config
300
+
301
+ return None
302
+
303
+
304
+ # Resolve forward references for Pydantic v2
305
+ from .backends import DramatiqConfig, WorkerConfig
306
+ TaskConfig.model_rebuild()
307
+
308
+ __all__ = [
309
+ "TaskConfig",
310
+ "TaskBackend",
311
+ "QueuePriority",
312
+ "DramatiqConfig",
313
+ "WorkerConfig",
314
+ ]
@@ -0,0 +1,174 @@
1
+ """
2
+ Task configuration utilities.
3
+
4
+ Contains utility functions for task configuration:
5
+ - Smart queue detection
6
+ - Environment-aware defaults
7
+ - Configuration validation
8
+
9
+ Size: ~120 lines (focused on utilities)
10
+ """
11
+
12
+ from typing import List, Optional, TYPE_CHECKING
13
+ import logging
14
+
15
+ if TYPE_CHECKING:
16
+ from .config import TaskConfig
17
+
18
+ logger = logging.getLogger(__name__)
19
+
20
+
21
+ def get_smart_queues(debug: bool = False) -> List[str]:
22
+ """
23
+ Get smart default queues based on enabled modules.
24
+
25
+ Automatically detects which django-cfg modules are enabled and adds
26
+ their corresponding queues to the default queue list.
27
+
28
+ Args:
29
+ debug: Whether running in debug mode (affects base queues)
30
+
31
+ Returns:
32
+ List of queue names appropriate for enabled modules
33
+
34
+ Example:
35
+ >>> queues = get_smart_queues(debug=True)
36
+ >>> "default" in queues
37
+ True
38
+ """
39
+ # Base queues
40
+ if debug:
41
+ base_queues = ["default"]
42
+ else:
43
+ base_queues = ["critical", "high", "default", "low", "background"]
44
+
45
+ # Try to detect enabled modules and add their queues
46
+ try:
47
+ from django_cfg.modules.base import BaseCfgModule
48
+ base_module = BaseCfgModule()
49
+
50
+ # Check for knowbase module (requires "knowbase" queue)
51
+ if base_module.is_knowbase_enabled():
52
+ if "knowbase" not in base_queues:
53
+ base_queues.append("knowbase")
54
+
55
+ # Check for payments module (requires "payments" queue)
56
+ if base_module.is_payments_enabled():
57
+ if "payments" not in base_queues:
58
+ base_queues.append("payments")
59
+
60
+ # Check for agents module (may require "agents" queue in future)
61
+ if base_module.is_agents_enabled():
62
+ if "agents" not in base_queues:
63
+ base_queues.append("agents")
64
+
65
+ logger.info(f"🎯 Smart queue detection: {base_queues}")
66
+
67
+ except Exception as e:
68
+ logger.warning(f"Failed to auto-detect queues, using defaults: {e}")
69
+
70
+ return base_queues
71
+
72
+
73
+ def get_default_task_config(debug: bool = False) -> 'TaskConfig':
74
+ """
75
+ Get default task configuration based on environment.
76
+
77
+ Creates a TaskConfig with sensible defaults for development or production.
78
+
79
+ Args:
80
+ debug: Whether in debug/development mode
81
+
82
+ Returns:
83
+ TaskConfig with environment-appropriate defaults
84
+
85
+ Example:
86
+ >>> config = get_default_task_config(debug=True)
87
+ >>> config.dramatiq.processes
88
+ 2
89
+ """
90
+ from .config import TaskConfig
91
+ from .backends import DramatiqConfig, WorkerConfig
92
+
93
+ smart_queues = get_smart_queues(debug)
94
+
95
+ if debug:
96
+ # Development defaults
97
+ return TaskConfig(
98
+ dramatiq=DramatiqConfig(
99
+ processes=2,
100
+ threads=4,
101
+ prometheus_enabled=False,
102
+ queues=smart_queues,
103
+ ),
104
+ worker=WorkerConfig(
105
+ log_level="DEBUG",
106
+ health_check_enabled=False,
107
+ )
108
+ )
109
+ else:
110
+ # Production defaults
111
+ return TaskConfig(
112
+ dramatiq=DramatiqConfig(
113
+ processes=8,
114
+ threads=16,
115
+ prometheus_enabled=True,
116
+ queues=smart_queues,
117
+ ),
118
+ worker=WorkerConfig(
119
+ log_level="INFO",
120
+ health_check_enabled=True,
121
+ restart_on_memory_limit=True,
122
+ )
123
+ )
124
+
125
+
126
+ def validate_task_config(config: 'TaskConfig', redis_url: Optional[str] = None) -> bool:
127
+ """
128
+ Validate task configuration and dependencies.
129
+
130
+ Checks if the task configuration is valid and all required dependencies are available.
131
+
132
+ Args:
133
+ config: TaskConfig to validate
134
+ redis_url: Optional Redis URL to validate
135
+
136
+ Returns:
137
+ True if configuration is valid, False otherwise
138
+
139
+ Example:
140
+ >>> config = get_default_task_config()
141
+ >>> validate_task_config(config, "redis://localhost:6379/1")
142
+ True
143
+ """
144
+ if not config.enabled:
145
+ return True
146
+
147
+ # Check Redis URL if provided
148
+ if redis_url:
149
+ try:
150
+ from urllib.parse import urlparse
151
+ parsed = urlparse(redis_url)
152
+ if not parsed.scheme.startswith("redis"):
153
+ logger.error(f"Invalid Redis URL scheme: {parsed.scheme}")
154
+ return False
155
+ except Exception as e:
156
+ logger.error(f"Invalid Redis URL: {e}")
157
+ return False
158
+
159
+ # Check if Dramatiq is available
160
+ try:
161
+ import dramatiq
162
+ import django_dramatiq
163
+ except ImportError as e:
164
+ logger.error(f"Dramatiq dependencies not available: {e}")
165
+ return False
166
+
167
+ return True
168
+
169
+
170
+ __all__ = [
171
+ "get_smart_queues",
172
+ "get_default_task_config",
173
+ "validate_task_config",
174
+ ]
@@ -178,16 +178,31 @@ class BaseCfgModule(ABC):
178
178
  def is_payments_enabled(self) -> bool:
179
179
  """
180
180
  Check if django-cfg Payments is enabled.
181
-
181
+
182
182
  Returns:
183
183
  True if Payments is enabled, False otherwise
184
184
  """
185
185
  payments_config = self._get_config_key('payments', None)
186
-
186
+
187
187
  # Only handle PaymentsConfig model
188
188
  if payments_config and hasattr(payments_config, 'enabled'):
189
189
  return payments_config.enabled
190
-
190
+
191
+ return False
192
+
193
+ def is_rpc_enabled(self) -> bool:
194
+ """
195
+ Check if django-cfg RPC Client is enabled.
196
+
197
+ Returns:
198
+ True if RPC Client is enabled, False otherwise
199
+ """
200
+ rpc_config = self._get_config_key('django_cfg_rpc', None)
201
+
202
+ # Only handle DjangoCfgRPCConfig model
203
+ if rpc_config and hasattr(rpc_config, 'enabled'):
204
+ return rpc_config.enabled
205
+
191
206
  return False
192
207
 
193
208
 
@@ -9,7 +9,7 @@ from functools import wraps
9
9
  from unfold.decorators import action as unfold_action
10
10
  from unfold.enums import ActionVariant as UnfoldActionVariant
11
11
 
12
- from django_cfg.modules.django_logger import get_logger
12
+ from django_cfg.modules.django_logging import get_logger
13
13
  from ..models.action_models import ActionVariant
14
14
 
15
15
 
@@ -8,7 +8,7 @@ from typing import Optional, Callable, Any, Union
8
8
  from functools import wraps
9
9
  from django.utils.safestring import SafeString, mark_safe
10
10
  from unfold.decorators import display as unfold_display
11
- from django_cfg.modules.django_logger import get_logger
11
+ from django_cfg.modules.django_logging import get_logger
12
12
 
13
13
  logger = get_logger('django_admin.decorators.display')
14
14
 
@@ -14,7 +14,7 @@ import threading
14
14
 
15
15
  from unfold.decorators import action as unfold_action
16
16
  from unfold.enums import ActionVariant as UnfoldActionVariant
17
- from django_cfg.modules.django_logger import get_logger
17
+ from django_cfg.modules.django_logging import get_logger
18
18
  from ..models.action_models import ActionVariant
19
19
 
20
20