django-cfg 1.4.21__py3-none-any.whl → 1.4.23__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 (793) hide show
  1. django_cfg/__init__.py +4 -4
  2. django_cfg/apps/accounts/__init__.py +1 -1
  3. django_cfg/apps/accounts/__models.py +30 -29
  4. django_cfg/apps/accounts/admin/__init__.py +14 -3
  5. django_cfg/apps/accounts/admin/activity_admin.py +19 -19
  6. django_cfg/apps/accounts/admin/filters.py +7 -6
  7. django_cfg/apps/accounts/admin/group_admin.py +10 -16
  8. django_cfg/apps/accounts/admin/inlines.py +21 -19
  9. django_cfg/apps/accounts/admin/otp_admin.py +12 -12
  10. django_cfg/apps/accounts/admin/registration_admin.py +24 -24
  11. django_cfg/apps/accounts/admin/resources.py +49 -48
  12. django_cfg/apps/accounts/admin/twilio_admin.py +37 -37
  13. django_cfg/apps/accounts/admin/user_admin.py +45 -41
  14. django_cfg/apps/accounts/management/commands/otp_test.py +11 -11
  15. django_cfg/apps/accounts/managers/__init__.py +1 -1
  16. django_cfg/apps/accounts/managers/user_manager.py +6 -7
  17. django_cfg/apps/accounts/migrations/0001_initial.py +3 -2
  18. django_cfg/apps/accounts/models/__init__.py +15 -16
  19. django_cfg/apps/accounts/models/activity.py +5 -5
  20. django_cfg/apps/accounts/models/integrations.py +15 -15
  21. django_cfg/apps/accounts/models/registration.py +3 -2
  22. django_cfg/apps/accounts/models/user.py +3 -2
  23. django_cfg/apps/accounts/serializers/__init__.py +10 -3
  24. django_cfg/apps/accounts/serializers/otp.py +5 -4
  25. django_cfg/apps/accounts/serializers/profile.py +4 -5
  26. django_cfg/apps/accounts/serializers/webhook.py +13 -13
  27. django_cfg/apps/accounts/services/activity_service.py +13 -12
  28. django_cfg/apps/accounts/services/otp_service.py +16 -14
  29. django_cfg/apps/accounts/signals.py +18 -16
  30. django_cfg/apps/accounts/urls.py +10 -5
  31. django_cfg/apps/accounts/utils/notifications.py +22 -22
  32. django_cfg/apps/accounts/views/__init__.py +1 -1
  33. django_cfg/apps/accounts/views/otp.py +15 -14
  34. django_cfg/apps/accounts/views/profile.py +14 -10
  35. django_cfg/apps/accounts/views/webhook.py +46 -48
  36. django_cfg/apps/agents/__init__.py +3 -3
  37. django_cfg/apps/agents/admin/__init__.py +1 -1
  38. django_cfg/apps/agents/admin/execution_admin.py +68 -72
  39. django_cfg/apps/agents/admin/registry_admin.py +50 -54
  40. django_cfg/apps/agents/admin/toolsets_admin.py +63 -67
  41. django_cfg/apps/agents/apps.py +3 -3
  42. django_cfg/apps/agents/core/__init__.py +4 -4
  43. django_cfg/apps/agents/core/dependencies.py +24 -23
  44. django_cfg/apps/agents/core/django_agent.py +41 -39
  45. django_cfg/apps/agents/core/exceptions.py +12 -12
  46. django_cfg/apps/agents/core/models.py +16 -15
  47. django_cfg/apps/agents/core/orchestrator.py +58 -58
  48. django_cfg/apps/agents/examples/simple_example.py +24 -19
  49. django_cfg/apps/agents/integration/__init__.py +1 -1
  50. django_cfg/apps/agents/integration/middleware.py +12 -11
  51. django_cfg/apps/agents/integration/registry.py +52 -49
  52. django_cfg/apps/agents/integration/signals.py +5 -5
  53. django_cfg/apps/agents/management/commands/create_agent.py +39 -38
  54. django_cfg/apps/agents/management/commands/orchestrator_status.py +40 -39
  55. django_cfg/apps/agents/managers/__init__.py +8 -3
  56. django_cfg/apps/agents/managers/execution.py +42 -41
  57. django_cfg/apps/agents/managers/registry.py +40 -39
  58. django_cfg/apps/agents/managers/toolsets.py +87 -86
  59. django_cfg/apps/agents/migrations/0001_initial.py +2 -1
  60. django_cfg/apps/agents/models/__init__.py +2 -2
  61. django_cfg/apps/agents/models/execution.py +43 -42
  62. django_cfg/apps/agents/models/registry.py +46 -45
  63. django_cfg/apps/agents/models/toolsets.py +63 -62
  64. django_cfg/apps/agents/patterns/__init__.py +5 -5
  65. django_cfg/apps/agents/patterns/content_agents.py +17 -16
  66. django_cfg/apps/agents/toolsets/__init__.py +3 -3
  67. django_cfg/apps/agents/toolsets/cache_toolset.py +56 -55
  68. django_cfg/apps/agents/toolsets/django_toolset.py +43 -42
  69. django_cfg/apps/agents/toolsets/file_toolset.py +64 -63
  70. django_cfg/apps/agents/toolsets/orm_toolset.py +75 -74
  71. django_cfg/apps/agents/urls.py +3 -2
  72. django_cfg/apps/api/commands/urls.py +1 -0
  73. django_cfg/apps/api/commands/views.py +23 -26
  74. django_cfg/apps/api/endpoints/checker.py +5 -4
  75. django_cfg/apps/api/endpoints/drf_views.py +2 -2
  76. django_cfg/apps/api/endpoints/tests.py +6 -5
  77. django_cfg/apps/api/endpoints/urls.py +2 -1
  78. django_cfg/apps/api/endpoints/views.py +1 -0
  79. django_cfg/apps/api/health/drf_views.py +6 -6
  80. django_cfg/apps/api/health/urls.py +2 -1
  81. django_cfg/apps/api/health/views.py +41 -41
  82. django_cfg/{modules/django_ipc_client → apps/ipc}/__init__.py +6 -6
  83. django_cfg/apps/ipc/apps.py +28 -0
  84. django_cfg/apps/ipc/serializers/__init__.py +19 -0
  85. django_cfg/apps/ipc/serializers/serializers.py +229 -0
  86. django_cfg/apps/ipc/services/__init__.py +7 -0
  87. django_cfg/apps/ipc/services/client/__init__.py +23 -0
  88. django_cfg/{modules/django_ipc_client → apps/ipc/services/client}/client.py +7 -6
  89. django_cfg/{modules/django_ipc_client → apps/ipc/services/client}/exceptions.py +1 -1
  90. django_cfg/{modules/django_ipc_client/dashboard → apps/ipc/services}/monitor.py +23 -5
  91. django_cfg/{modules/django_ipc_client/dashboard/static/django_ipc_dashboard/js/dashboard.js → apps/ipc/static/django_cfg_ipc/js/dashboard.mjs} +131 -63
  92. django_cfg/{modules/django_ipc_client/dashboard/templates/django_ipc_dashboard → apps/ipc/templates/django_cfg_ipc}/base.html +5 -10
  93. django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html +202 -0
  94. django_cfg/apps/ipc/urls.py +21 -0
  95. django_cfg/apps/ipc/urls_admin.py +20 -0
  96. django_cfg/apps/ipc/views/__init__.py +8 -0
  97. django_cfg/apps/ipc/views/dashboard.py +15 -0
  98. django_cfg/apps/ipc/views/viewsets.py +245 -0
  99. django_cfg/apps/knowbase/admin/__init__.py +2 -2
  100. django_cfg/apps/knowbase/admin/actions/__init__.py +1 -1
  101. django_cfg/apps/knowbase/admin/actions/visibility_actions.py +2 -1
  102. django_cfg/apps/knowbase/admin/archive_admin.py +81 -84
  103. django_cfg/apps/knowbase/admin/chat_admin.py +70 -72
  104. django_cfg/apps/knowbase/admin/document_admin.py +10 -11
  105. django_cfg/apps/knowbase/admin/external_data_admin.py +69 -71
  106. django_cfg/apps/knowbase/admin/helpers/__init__.py +1 -1
  107. django_cfg/apps/knowbase/admin/helpers/configs.py +2 -2
  108. django_cfg/apps/knowbase/admin/helpers/statistics.py +1 -1
  109. django_cfg/apps/knowbase/apps.py +13 -13
  110. django_cfg/apps/knowbase/config/__init__.py +7 -6
  111. django_cfg/apps/knowbase/config/constance_fields.py +14 -12
  112. django_cfg/apps/knowbase/config/constance_settings.py +32 -31
  113. django_cfg/apps/knowbase/config/settings.py +28 -28
  114. django_cfg/apps/knowbase/examples/external_data_usage.py +35 -32
  115. django_cfg/apps/knowbase/management/commands/knowbase_stats.py +33 -32
  116. django_cfg/apps/knowbase/management/commands/setup_knowbase.py +11 -13
  117. django_cfg/apps/knowbase/managers/__init__.py +2 -2
  118. django_cfg/apps/knowbase/managers/archive.py +86 -85
  119. django_cfg/apps/knowbase/managers/base.py +5 -5
  120. django_cfg/apps/knowbase/managers/chat.py +29 -28
  121. django_cfg/apps/knowbase/managers/document.py +39 -39
  122. django_cfg/apps/knowbase/managers/external_data.py +74 -73
  123. django_cfg/apps/knowbase/migrations/0001_initial.py +2 -1
  124. django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +2 -1
  125. django_cfg/apps/knowbase/mixins/__init__.py +4 -4
  126. django_cfg/apps/knowbase/mixins/config/__init__.py +1 -1
  127. django_cfg/apps/knowbase/mixins/config/meta_config.py +1 -1
  128. django_cfg/apps/knowbase/mixins/config.py +19 -18
  129. django_cfg/apps/knowbase/mixins/creator.py +7 -7
  130. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +29 -28
  131. django_cfg/apps/knowbase/mixins/external_data_mixin.py +6 -5
  132. django_cfg/apps/knowbase/mixins/generators/__init__.py +1 -1
  133. django_cfg/apps/knowbase/mixins/generators/content_generator.py +2 -2
  134. django_cfg/apps/knowbase/mixins/service.py +47 -45
  135. django_cfg/apps/knowbase/models/__init__.py +7 -7
  136. django_cfg/apps/knowbase/models/archive.py +72 -72
  137. django_cfg/apps/knowbase/models/base.py +12 -13
  138. django_cfg/apps/knowbase/models/chat.py +20 -19
  139. django_cfg/apps/knowbase/models/document.py +37 -35
  140. django_cfg/apps/knowbase/models/external_data.py +41 -42
  141. django_cfg/apps/knowbase/serializers/__init__.py +7 -7
  142. django_cfg/apps/knowbase/serializers/archive_serializers.py +50 -42
  143. django_cfg/apps/knowbase/serializers/chat_serializers.py +16 -15
  144. django_cfg/apps/knowbase/serializers/document_serializers.py +13 -12
  145. django_cfg/apps/knowbase/serializers/external_data_serializers.py +31 -31
  146. django_cfg/apps/knowbase/serializers/public_serializers.py +10 -9
  147. django_cfg/apps/knowbase/services/__init__.py +7 -7
  148. django_cfg/apps/knowbase/services/archive/__init__.py +7 -7
  149. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +1 -1
  150. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +1 -1
  151. django_cfg/apps/knowbase/services/archive/archive_service.py +109 -112
  152. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +3 -3
  153. django_cfg/apps/knowbase/services/archive/chunking/base.py +1 -0
  154. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +4 -3
  155. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +5 -4
  156. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +6 -5
  157. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +4 -3
  158. django_cfg/apps/knowbase/services/archive/chunking_service.py +3 -7
  159. django_cfg/apps/knowbase/services/archive/context/__init__.py +1 -1
  160. django_cfg/apps/knowbase/services/archive/context/builders.py +2 -1
  161. django_cfg/apps/knowbase/services/archive/context/models.py +2 -1
  162. django_cfg/apps/knowbase/services/archive/exceptions.py +5 -5
  163. django_cfg/apps/knowbase/services/archive/extraction_service.py +111 -110
  164. django_cfg/apps/knowbase/services/archive/vectorization_service.py +80 -77
  165. django_cfg/apps/knowbase/services/base.py +11 -9
  166. django_cfg/apps/knowbase/services/chat_service.py +40 -39
  167. django_cfg/apps/knowbase/services/document_service.py +28 -27
  168. django_cfg/apps/knowbase/services/embedding/__init__.py +9 -9
  169. django_cfg/apps/knowbase/services/embedding/async_processor.py +38 -40
  170. django_cfg/apps/knowbase/services/embedding/batch_processor.py +45 -42
  171. django_cfg/apps/knowbase/services/embedding/batch_result.py +7 -6
  172. django_cfg/apps/knowbase/services/embedding/models.py +52 -51
  173. django_cfg/apps/knowbase/services/embedding/processors.py +24 -23
  174. django_cfg/apps/knowbase/services/embedding/utils.py +17 -17
  175. django_cfg/apps/knowbase/services/prompt_builder.py +24 -23
  176. django_cfg/apps/knowbase/services/search_service.py +52 -49
  177. django_cfg/apps/knowbase/signals/__init__.py +2 -5
  178. django_cfg/apps/knowbase/signals/archive_signals.py +35 -34
  179. django_cfg/apps/knowbase/signals/chat_signals.py +6 -5
  180. django_cfg/apps/knowbase/signals/document_signals.py +22 -22
  181. django_cfg/apps/knowbase/signals/external_data_signals.py +22 -22
  182. django_cfg/apps/knowbase/tasks/__init__.py +6 -7
  183. django_cfg/apps/knowbase/tasks/archive_tasks.py +41 -41
  184. django_cfg/apps/knowbase/tasks/document_processing.py +49 -44
  185. django_cfg/apps/knowbase/tasks/external_data_tasks.py +46 -44
  186. django_cfg/apps/knowbase/tasks/maintenance.py +26 -24
  187. django_cfg/apps/knowbase/urls.py +3 -2
  188. django_cfg/apps/knowbase/urls_admin.py +6 -3
  189. django_cfg/apps/knowbase/urls_system.py +4 -5
  190. django_cfg/apps/knowbase/utils/chunk_settings.py +22 -20
  191. django_cfg/apps/knowbase/utils/text_processing.py +76 -75
  192. django_cfg/apps/knowbase/utils/validation.py +9 -9
  193. django_cfg/apps/knowbase/views/__init__.py +5 -5
  194. django_cfg/apps/knowbase/views/archive_views.py +90 -87
  195. django_cfg/apps/knowbase/views/base.py +9 -12
  196. django_cfg/apps/knowbase/views/chat_views.py +32 -32
  197. django_cfg/apps/knowbase/views/document_views.py +27 -28
  198. django_cfg/apps/knowbase/views/public_views.py +19 -19
  199. django_cfg/apps/leads/admin/leads_admin.py +41 -45
  200. django_cfg/apps/leads/admin/resources.py +14 -14
  201. django_cfg/apps/leads/admin.py +7 -9
  202. django_cfg/apps/leads/apps.py +1 -1
  203. django_cfg/apps/leads/models.py +17 -17
  204. django_cfg/apps/leads/serializers.py +5 -4
  205. django_cfg/apps/leads/signals.py +7 -7
  206. django_cfg/apps/leads/tests.py +47 -47
  207. django_cfg/apps/leads/urls.py +2 -2
  208. django_cfg/apps/leads/views.py +11 -11
  209. django_cfg/apps/maintenance/__init__.py +3 -3
  210. django_cfg/apps/maintenance/admin/__init__.py +1 -1
  211. django_cfg/apps/maintenance/admin/api_key_admin.py +36 -36
  212. django_cfg/apps/maintenance/admin/log_admin.py +35 -37
  213. django_cfg/apps/maintenance/admin/scheduled_admin.py +47 -51
  214. django_cfg/apps/maintenance/admin/site_admin.py +49 -52
  215. django_cfg/apps/maintenance/apps.py +2 -2
  216. django_cfg/apps/maintenance/management/commands/maintenance.py +53 -52
  217. django_cfg/apps/maintenance/management/commands/process_scheduled_maintenance.py +44 -44
  218. django_cfg/apps/maintenance/management/commands/sync_cloudflare.py +32 -32
  219. django_cfg/apps/maintenance/managers/__init__.py +1 -1
  220. django_cfg/apps/maintenance/managers/cloudflare_site_manager.py +39 -38
  221. django_cfg/apps/maintenance/managers/maintenance_log_manager.py +32 -31
  222. django_cfg/apps/maintenance/migrations/0001_initial.py +1 -0
  223. django_cfg/apps/maintenance/models/__init__.py +2 -2
  224. django_cfg/apps/maintenance/models/cloudflare_api_key.py +15 -15
  225. django_cfg/apps/maintenance/models/cloudflare_site.py +24 -22
  226. django_cfg/apps/maintenance/models/maintenance_log.py +15 -14
  227. django_cfg/apps/maintenance/models/scheduled_maintenance.py +53 -52
  228. django_cfg/apps/maintenance/services/__init__.py +3 -3
  229. django_cfg/apps/maintenance/services/bulk_operations_service.py +68 -68
  230. django_cfg/apps/maintenance/services/maintenance_service.py +59 -58
  231. django_cfg/apps/maintenance/services/scheduled_maintenance_service.py +52 -52
  232. django_cfg/apps/maintenance/services/site_sync_service.py +64 -65
  233. django_cfg/apps/maintenance/utils/__init__.py +1 -1
  234. django_cfg/apps/maintenance/utils/retry_utils.py +17 -17
  235. django_cfg/apps/newsletter/admin/__init__.py +12 -16
  236. django_cfg/apps/newsletter/admin/newsletter_admin.py +90 -87
  237. django_cfg/apps/newsletter/admin/resources.py +29 -29
  238. django_cfg/apps/newsletter/admin.py +39 -32
  239. django_cfg/apps/newsletter/management/commands/test_newsletter.py +3 -3
  240. django_cfg/apps/newsletter/managers/__init__.py +1 -1
  241. django_cfg/apps/newsletter/migrations/0001_initial.py +2 -1
  242. django_cfg/apps/newsletter/models.py +34 -33
  243. django_cfg/apps/newsletter/serializers.py +13 -13
  244. django_cfg/apps/newsletter/services/email_service.py +42 -40
  245. django_cfg/apps/newsletter/signals.py +4 -3
  246. django_cfg/apps/newsletter/urls.py +7 -7
  247. django_cfg/apps/newsletter/views/__init__.py +14 -19
  248. django_cfg/apps/newsletter/views/campaigns.py +19 -19
  249. django_cfg/apps/newsletter/views/emails.py +20 -20
  250. django_cfg/apps/newsletter/views/newsletters.py +5 -5
  251. django_cfg/apps/newsletter/views/subscriptions.py +24 -24
  252. django_cfg/apps/newsletter/views/tracking.py +6 -5
  253. django_cfg/apps/payments/admin/__init__.py +6 -5
  254. django_cfg/apps/payments/admin/api_keys_admin.py +43 -45
  255. django_cfg/apps/payments/admin/balance_admin.py +41 -47
  256. django_cfg/apps/payments/admin/currencies_admin.py +60 -62
  257. django_cfg/apps/payments/admin/endpoint_groups_admin.py +14 -28
  258. django_cfg/apps/payments/admin/filters.py +59 -59
  259. django_cfg/apps/payments/admin/networks_admin.py +36 -50
  260. django_cfg/apps/payments/admin/payments_admin.py +47 -49
  261. django_cfg/apps/payments/admin/subscriptions_admin.py +30 -32
  262. django_cfg/apps/payments/admin/tariffs_admin.py +37 -42
  263. django_cfg/apps/payments/admin_interface/serializers/__init__.py +12 -13
  264. django_cfg/apps/payments/admin_interface/serializers/payment_serializers.py +28 -27
  265. django_cfg/apps/payments/admin_interface/serializers/webhook_serializers.py +4 -5
  266. django_cfg/apps/payments/admin_interface/templates/payments/base.html +407 -3
  267. django_cfg/apps/payments/admin_interface/templates/payments/components/ngrok_status.html +13 -13
  268. django_cfg/apps/payments/admin_interface/templates/payments/payment_dashboard.html +5 -1
  269. django_cfg/apps/payments/admin_interface/templates/payments/payment_detail.html +105 -49
  270. django_cfg/apps/payments/admin_interface/templates/payments/payment_form.html +4 -1
  271. django_cfg/apps/payments/admin_interface/templates/payments/payment_list.html +16 -8
  272. django_cfg/apps/payments/admin_interface/templates/payments/webhook_dashboard.html +16 -8
  273. django_cfg/apps/payments/admin_interface/views/__init__.py +8 -9
  274. django_cfg/apps/payments/admin_interface/views/api/__init__.py +3 -3
  275. django_cfg/apps/payments/admin_interface/views/api/payments.py +52 -54
  276. django_cfg/apps/payments/admin_interface/views/api/stats.py +33 -30
  277. django_cfg/apps/payments/admin_interface/views/api/users.py +10 -11
  278. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +46 -51
  279. django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +9 -9
  280. django_cfg/apps/payments/admin_interface/views/base.py +17 -19
  281. django_cfg/apps/payments/admin_interface/views/dashboard.py +10 -10
  282. django_cfg/apps/payments/admin_interface/views/forms.py +21 -20
  283. django_cfg/apps/payments/apps.py +7 -6
  284. django_cfg/apps/payments/config/__init__.py +4 -4
  285. django_cfg/apps/payments/config/django_cfg_integration.py +22 -21
  286. django_cfg/apps/payments/config/helpers.py +14 -12
  287. django_cfg/apps/payments/management/commands/cleanup_expired_data.py +85 -86
  288. django_cfg/apps/payments/management/commands/currency_stats.py +84 -87
  289. django_cfg/apps/payments/management/commands/manage_currencies.py +59 -58
  290. django_cfg/apps/payments/management/commands/manage_providers.py +103 -105
  291. django_cfg/apps/payments/management/commands/process_pending_payments.py +67 -70
  292. django_cfg/apps/payments/management/commands/test_providers.py +83 -84
  293. django_cfg/apps/payments/middleware/__init__.py +1 -1
  294. django_cfg/apps/payments/middleware/api_access.py +77 -78
  295. django_cfg/apps/payments/middleware/rate_limiting.py +72 -72
  296. django_cfg/apps/payments/middleware/usage_tracking.py +66 -64
  297. django_cfg/apps/payments/migrations/0001_initial.py +2 -1
  298. django_cfg/apps/payments/models/__init__.py +11 -12
  299. django_cfg/apps/payments/models/api_keys.py +29 -27
  300. django_cfg/apps/payments/models/balance.py +38 -38
  301. django_cfg/apps/payments/models/base.py +12 -11
  302. django_cfg/apps/payments/models/currencies.py +53 -52
  303. django_cfg/apps/payments/models/managers/__init__.py +13 -14
  304. django_cfg/apps/payments/models/managers/api_key_managers.py +55 -53
  305. django_cfg/apps/payments/models/managers/balance_managers.py +98 -97
  306. django_cfg/apps/payments/models/managers/currency_managers.py +70 -69
  307. django_cfg/apps/payments/models/managers/payment_managers.py +113 -111
  308. django_cfg/apps/payments/models/managers/subscription_managers.py +99 -97
  309. django_cfg/apps/payments/models/payments.py +167 -73
  310. django_cfg/apps/payments/models/subscriptions.py +56 -54
  311. django_cfg/apps/payments/models/tariffs.py +35 -34
  312. django_cfg/apps/payments/services/__init__.py +33 -36
  313. django_cfg/apps/payments/services/cache/__init__.py +7 -1
  314. django_cfg/apps/payments/services/cache_service/__init__.py +22 -20
  315. django_cfg/apps/payments/services/cache_service/api_key_cache.py +6 -5
  316. django_cfg/apps/payments/services/cache_service/interfaces.py +5 -5
  317. django_cfg/apps/payments/services/cache_service/keys.py +8 -8
  318. django_cfg/apps/payments/services/cache_service/rate_limit_cache.py +8 -7
  319. django_cfg/apps/payments/services/cache_service/simple_cache.py +17 -14
  320. django_cfg/apps/payments/services/core/__init__.py +3 -3
  321. django_cfg/apps/payments/services/core/balance_service.py +69 -65
  322. django_cfg/apps/payments/services/core/base.py +25 -22
  323. django_cfg/apps/payments/services/core/currency/__init__.py +1 -1
  324. django_cfg/apps/payments/services/core/currency/currency_converter.py +2 -0
  325. django_cfg/apps/payments/services/core/currency_service.py +68 -66
  326. django_cfg/apps/payments/services/core/operations/__init__.py +1 -1
  327. django_cfg/apps/payments/services/core/operations/payment_canceller.py +2 -1
  328. django_cfg/apps/payments/services/core/operations/payment_creator.py +2 -1
  329. django_cfg/apps/payments/services/core/operations/status_checker.py +2 -1
  330. django_cfg/apps/payments/services/core/payment_service.py +10 -7
  331. django_cfg/apps/payments/services/core/providers/provider_client.py +2 -2
  332. django_cfg/apps/payments/services/core/subscription_service.py +77 -74
  333. django_cfg/apps/payments/services/core/utils/data_converter.py +1 -0
  334. django_cfg/apps/payments/services/core/utils/statistics_calculator.py +1 -0
  335. django_cfg/apps/payments/services/core/webhook_service.py +67 -63
  336. django_cfg/apps/payments/services/integrations/__init__.py +3 -3
  337. django_cfg/apps/payments/services/integrations/ngrok_service.py +1 -0
  338. django_cfg/apps/payments/services/integrations/providers_config.py +3 -2
  339. django_cfg/apps/payments/services/providers/base.py +59 -57
  340. django_cfg/apps/payments/services/providers/models/__init__.py +7 -14
  341. django_cfg/apps/payments/services/providers/models/base.py +15 -15
  342. django_cfg/apps/payments/services/providers/models/providers.py +13 -12
  343. django_cfg/apps/payments/services/providers/models/universal.py +6 -5
  344. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +4 -4
  345. django_cfg/apps/payments/services/providers/nowpayments/config.py +9 -8
  346. django_cfg/apps/payments/services/providers/nowpayments/models.py +15 -15
  347. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +2 -2
  348. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +26 -26
  349. django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +3 -2
  350. django_cfg/apps/payments/services/providers/nowpayments/provider.py +95 -99
  351. django_cfg/apps/payments/services/providers/nowpayments/sync.py +41 -40
  352. django_cfg/apps/payments/services/providers/registry.py +65 -63
  353. django_cfg/apps/payments/services/providers/sync_service.py +50 -50
  354. django_cfg/apps/payments/services/types/__init__.py +21 -22
  355. django_cfg/apps/payments/services/types/data.py +14 -13
  356. django_cfg/apps/payments/services/types/requests.py +21 -22
  357. django_cfg/apps/payments/services/types/responses.py +16 -15
  358. django_cfg/apps/payments/services/types/webhooks.py +30 -30
  359. django_cfg/apps/payments/signals/__init__.py +4 -6
  360. django_cfg/apps/payments/signals/api_key_signals.py +33 -32
  361. django_cfg/apps/payments/signals/balance_signals.py +28 -26
  362. django_cfg/apps/payments/signals/payment_signals.py +29 -28
  363. django_cfg/apps/payments/signals/subscription_signals.py +39 -38
  364. django_cfg/apps/payments/static/payments/js/ngrok-status.js +12 -8
  365. django_cfg/apps/payments/static/payments/js/payment-detail.js +1 -1
  366. django_cfg/apps/payments/static/payments/js/payment-form.js +3 -3
  367. django_cfg/apps/payments/static/payments/js/payment-list.js +13 -6
  368. django_cfg/apps/payments/static/payments/js/webhook-dashboard-mjs.js +241 -0
  369. django_cfg/apps/payments/tasks/__init__.py +11 -12
  370. django_cfg/apps/payments/tasks/types.py +10 -9
  371. django_cfg/apps/payments/tasks/usage_tracking.py +44 -46
  372. django_cfg/apps/payments/templatetags/payment_tags.py +27 -27
  373. django_cfg/apps/payments/urls.py +31 -14
  374. django_cfg/apps/payments/urls_admin.py +10 -10
  375. django_cfg/apps/payments/views/api/__init__.py +32 -33
  376. django_cfg/apps/payments/views/api/api_keys.py +62 -62
  377. django_cfg/apps/payments/views/api/balances.py +63 -64
  378. django_cfg/apps/payments/views/api/base.py +52 -52
  379. django_cfg/apps/payments/views/api/currencies.py +75 -63
  380. django_cfg/apps/payments/views/api/payments.py +73 -74
  381. django_cfg/apps/payments/views/api/subscriptions.py +71 -72
  382. django_cfg/apps/payments/views/api/webhooks.py +85 -84
  383. django_cfg/apps/payments/views/overview/__init__.py +7 -7
  384. django_cfg/apps/payments/views/overview/serializers.py +13 -14
  385. django_cfg/apps/payments/views/overview/services.py +66 -67
  386. django_cfg/apps/payments/views/overview/urls.py +2 -1
  387. django_cfg/apps/payments/views/overview/views.py +31 -31
  388. django_cfg/apps/payments/views/serializers/__init__.py +35 -36
  389. django_cfg/apps/payments/views/serializers/api_keys.py +59 -57
  390. django_cfg/apps/payments/views/serializers/balances.py +34 -33
  391. django_cfg/apps/payments/views/serializers/currencies.py +36 -34
  392. django_cfg/apps/payments/views/serializers/payments.py +48 -47
  393. django_cfg/apps/payments/views/serializers/subscriptions.py +50 -45
  394. django_cfg/apps/payments/views/serializers/webhooks.py +17 -16
  395. django_cfg/apps/support/admin/__init__.py +3 -3
  396. django_cfg/apps/support/admin/resources.py +26 -26
  397. django_cfg/apps/support/admin/support_admin.py +44 -48
  398. django_cfg/apps/support/admin.py +16 -15
  399. django_cfg/apps/support/apps.py +1 -1
  400. django_cfg/apps/support/managers/message_manager.py +4 -4
  401. django_cfg/apps/support/managers/ticket_manager.py +13 -12
  402. django_cfg/apps/support/migrations/0001_initial.py +2 -1
  403. django_cfg/apps/support/models.py +3 -1
  404. django_cfg/apps/support/serializers.py +4 -2
  405. django_cfg/apps/support/signals.py +12 -10
  406. django_cfg/apps/support/urls.py +4 -3
  407. django_cfg/apps/support/utils/support_email_service.py +11 -9
  408. django_cfg/apps/support/views/__init__.py +3 -3
  409. django_cfg/apps/support/views/admin.py +9 -9
  410. django_cfg/apps/support/views/api.py +10 -9
  411. django_cfg/apps/support/views/chat.py +14 -14
  412. django_cfg/apps/tasks/admin/tasks_admin.py +65 -74
  413. django_cfg/apps/tasks/apps.py +2 -2
  414. django_cfg/apps/tasks/serializers.py +6 -6
  415. django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +44 -20
  416. django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +7 -5
  417. django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +5 -3
  418. django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +5 -3
  419. django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +5 -3
  420. django_cfg/apps/tasks/tasks/demo_tasks.py +12 -11
  421. django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html +269 -0
  422. django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html +168 -0
  423. django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +21 -2
  424. django_cfg/apps/tasks/urls.py +3 -2
  425. django_cfg/apps/tasks/urls_admin.py +1 -0
  426. django_cfg/apps/tasks/utils/simulator.py +49 -52
  427. django_cfg/apps/tasks/views/api.py +75 -73
  428. django_cfg/apps/tasks/views/dashboard.py +5 -4
  429. django_cfg/apps/urls.py +20 -11
  430. django_cfg/apps.py +6 -5
  431. django_cfg/cli/commands/create_project.py +7 -6
  432. django_cfg/cli/commands/info.py +25 -25
  433. django_cfg/cli/utils.py +27 -27
  434. django_cfg/config.py +1 -1
  435. django_cfg/core/__init__.py +8 -8
  436. django_cfg/core/base/config_model.py +13 -12
  437. django_cfg/core/builders/apps_builder.py +2 -2
  438. django_cfg/core/builders/middleware_builder.py +1 -1
  439. django_cfg/core/builders/security_builder.py +1 -1
  440. django_cfg/core/config.py +2 -2
  441. django_cfg/core/environment/detector.py +27 -28
  442. django_cfg/core/exceptions.py +1 -1
  443. django_cfg/core/generation/core_generators/settings.py +1 -1
  444. django_cfg/core/generation/core_generators/static.py +11 -5
  445. django_cfg/core/generation/core_generators/templates.py +1 -1
  446. django_cfg/core/generation/data_generators/__init__.py +1 -1
  447. django_cfg/core/generation/data_generators/cache.py +1 -1
  448. django_cfg/core/generation/data_generators/database.py +1 -1
  449. django_cfg/core/generation/generation.py +1 -3
  450. django_cfg/core/generation/integration_generators/__init__.py +2 -2
  451. django_cfg/core/generation/integration_generators/api.py +12 -2
  452. django_cfg/core/generation/integration_generators/sessions.py +1 -1
  453. django_cfg/core/generation/integration_generators/tailwind.py +1 -1
  454. django_cfg/core/generation/integration_generators/tasks.py +1 -1
  455. django_cfg/core/generation/integration_generators/third_party.py +1 -1
  456. django_cfg/core/generation/orchestrator.py +1 -1
  457. django_cfg/core/generation/protocols.py +1 -1
  458. django_cfg/core/generation/utility_generators/__init__.py +1 -1
  459. django_cfg/core/generation/utility_generators/email.py +1 -1
  460. django_cfg/core/generation/utility_generators/i18n.py +1 -1
  461. django_cfg/core/generation/utility_generators/limits.py +1 -1
  462. django_cfg/core/generation/utility_generators/logging.py +1 -1
  463. django_cfg/core/generation/utility_generators/security.py +1 -1
  464. django_cfg/core/generation/utils/helpers.py +1 -1
  465. django_cfg/core/integration/__init__.py +5 -5
  466. django_cfg/core/integration/commands_collector.py +38 -39
  467. django_cfg/core/integration/display/__init__.py +2 -2
  468. django_cfg/core/integration/display/base.py +30 -30
  469. django_cfg/core/integration/display/ngrok.py +35 -36
  470. django_cfg/core/integration/display/startup.py +149 -139
  471. django_cfg/core/integration/url_integration.py +10 -10
  472. django_cfg/core/integration/version_checker.py +20 -19
  473. django_cfg/core/services/config_service.py +4 -4
  474. django_cfg/core/state/__init__.py +1 -1
  475. django_cfg/core/state/registry.py +1 -1
  476. django_cfg/core/types/__init__.py +8 -1
  477. django_cfg/core/validation.py +36 -39
  478. django_cfg/management/commands/check_endpoints.py +3 -1
  479. django_cfg/management/commands/check_settings.py +3 -1
  480. django_cfg/management/commands/clear_constance.py +3 -1
  481. django_cfg/management/commands/create_token.py +3 -1
  482. django_cfg/management/commands/generate_clients.py +3 -1
  483. django_cfg/management/commands/migrate_all.py +3 -1
  484. django_cfg/management/commands/rundramatiq.py +3 -1
  485. django_cfg/management/commands/rundramatiq_simulator.py +3 -1
  486. django_cfg/management/commands/runserver_ngrok.py +3 -1
  487. django_cfg/management/commands/show_config.py +3 -1
  488. django_cfg/management/commands/superuser.py +3 -1
  489. django_cfg/management/commands/task_clear.py +3 -1
  490. django_cfg/management/commands/task_status.py +3 -1
  491. django_cfg/management/commands/test_email.py +3 -1
  492. django_cfg/management/commands/test_telegram.py +3 -1
  493. django_cfg/management/commands/test_twilio.py +3 -1
  494. django_cfg/management/commands/validate_openapi.py +3 -1
  495. django_cfg/middleware/pagination.py +8 -8
  496. django_cfg/middleware/public_endpoints.py +24 -23
  497. django_cfg/middleware/user_activity.py +27 -25
  498. django_cfg/models/__init__.py +19 -20
  499. django_cfg/models/api/__init__.py +4 -4
  500. django_cfg/models/api/config.py +23 -21
  501. django_cfg/models/api/cors.py +17 -16
  502. django_cfg/models/api/drf/__init__.py +1 -1
  503. django_cfg/models/api/drf/config.py +2 -1
  504. django_cfg/models/api/drf/redoc.py +2 -1
  505. django_cfg/models/api/drf/spectacular.py +4 -2
  506. django_cfg/models/api/drf/swagger.py +2 -1
  507. django_cfg/models/api/jwt.py +37 -36
  508. django_cfg/models/api/keys.py +13 -12
  509. django_cfg/models/api/limits.py +31 -30
  510. django_cfg/models/base/config.py +40 -41
  511. django_cfg/models/base/module.py +8 -8
  512. django_cfg/models/django/__init__.py +1 -1
  513. django_cfg/models/django/constance.py +8 -7
  514. django_cfg/models/django/environment.py +5 -3
  515. django_cfg/models/django/openapi.py +6 -16
  516. django_cfg/models/django/revolution_legacy.py +17 -16
  517. django_cfg/models/infrastructure/__init__.py +1 -1
  518. django_cfg/models/infrastructure/cache.py +46 -45
  519. django_cfg/models/infrastructure/database/config.py +4 -6
  520. django_cfg/models/infrastructure/database/converters.py +1 -1
  521. django_cfg/models/infrastructure/database/parsers.py +1 -1
  522. django_cfg/models/infrastructure/database/validators.py +1 -1
  523. django_cfg/models/infrastructure/logging.py +59 -57
  524. django_cfg/models/infrastructure/security.py +26 -24
  525. django_cfg/models/ngrok/auth.py +2 -1
  526. django_cfg/models/ngrok/config.py +3 -2
  527. django_cfg/models/ngrok/tunnel.py +2 -1
  528. django_cfg/models/payments/__init__.py +1 -1
  529. django_cfg/models/payments/api_keys.py +3 -1
  530. django_cfg/models/payments/config.py +4 -1
  531. django_cfg/models/payments/providers/base.py +2 -1
  532. django_cfg/models/payments/providers/nowpayments.py +3 -1
  533. django_cfg/models/services/__init__.py +1 -1
  534. django_cfg/models/services/base.py +2 -1
  535. django_cfg/models/services/email.py +28 -26
  536. django_cfg/models/services/telegram.py +2 -1
  537. django_cfg/models/tasks/__init__.py +2 -2
  538. django_cfg/models/tasks/backends.py +4 -3
  539. django_cfg/models/tasks/config.py +6 -4
  540. django_cfg/models/tasks/utils.py +3 -3
  541. django_cfg/modules/base.py +18 -17
  542. django_cfg/modules/django_admin/__init__.py +14 -15
  543. django_cfg/modules/django_admin/decorators/__init__.py +1 -1
  544. django_cfg/modules/django_admin/decorators/actions.py +8 -7
  545. django_cfg/modules/django_admin/decorators/display.py +9 -7
  546. django_cfg/modules/django_admin/icons/__init__.py +1 -1
  547. django_cfg/modules/django_admin/icons/constants.py +27 -27
  548. django_cfg/modules/django_admin/icons/generate_icons.py +54 -54
  549. django_cfg/modules/django_admin/management/commands/check_endpoints.py +5 -3
  550. django_cfg/modules/django_admin/management/commands/check_settings.py +40 -44
  551. django_cfg/modules/django_admin/management/commands/clear_constance.py +29 -30
  552. django_cfg/modules/django_admin/management/commands/create_token.py +42 -42
  553. django_cfg/modules/django_admin/management/commands/list_urls.py +37 -38
  554. django_cfg/modules/django_admin/management/commands/migrate_all.py +13 -15
  555. django_cfg/modules/django_admin/management/commands/migrator.py +17 -17
  556. django_cfg/modules/django_admin/management/commands/script.py +58 -60
  557. django_cfg/modules/django_admin/management/commands/show_config.py +32 -30
  558. django_cfg/modules/django_admin/management/commands/show_urls.py +46 -44
  559. django_cfg/modules/django_admin/management/commands/superuser.py +47 -48
  560. django_cfg/modules/django_admin/management/commands/tree.py +50 -54
  561. django_cfg/modules/django_admin/mixins/display_mixin.py +16 -15
  562. django_cfg/modules/django_admin/mixins/optimization_mixin.py +9 -8
  563. django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +25 -24
  564. django_cfg/modules/django_admin/models/__init__.py +4 -4
  565. django_cfg/modules/django_admin/models/action_models.py +3 -1
  566. django_cfg/modules/django_admin/models/badge_models.py +4 -2
  567. django_cfg/modules/django_admin/models/base.py +3 -3
  568. django_cfg/modules/django_admin/models/display_models.py +1 -0
  569. django_cfg/modules/django_admin/utils/badges.py +27 -26
  570. django_cfg/modules/django_admin/utils/displays.py +49 -49
  571. django_cfg/modules/django_client/apps.py +21 -3
  572. django_cfg/modules/django_client/core/__init__.py +9 -10
  573. django_cfg/modules/django_client/core/archive/manager.py +2 -2
  574. django_cfg/modules/django_client/core/cli/main.py +1 -3
  575. django_cfg/modules/django_client/core/config/config.py +3 -1
  576. django_cfg/modules/django_client/core/config/group.py +1 -0
  577. django_cfg/modules/django_client/core/config/service.py +2 -1
  578. django_cfg/modules/django_client/core/generator/__init__.py +1 -1
  579. django_cfg/modules/django_client/core/generator/base.py +2 -2
  580. django_cfg/modules/django_client/core/generator/python/async_client_gen.py +1 -1
  581. django_cfg/modules/django_client/core/generator/python/files_generator.py +1 -1
  582. django_cfg/modules/django_client/core/generator/python/generator.py +4 -4
  583. django_cfg/modules/django_client/core/generator/python/models_generator.py +1 -1
  584. django_cfg/modules/django_client/core/generator/python/operations_generator.py +2 -2
  585. django_cfg/modules/django_client/core/generator/python/sync_client_gen.py +1 -1
  586. django_cfg/modules/django_client/core/generator/typescript/client_generator.py +3 -1
  587. django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +14 -13
  588. django_cfg/modules/django_client/core/generator/typescript/files_generator.py +1 -0
  589. django_cfg/modules/django_client/core/generator/typescript/generator.py +6 -6
  590. django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +12 -10
  591. django_cfg/modules/django_client/core/generator/typescript/models_generator.py +2 -1
  592. django_cfg/modules/django_client/core/generator/typescript/naming.py +2 -3
  593. django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +12 -10
  594. django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py +3 -2
  595. django_cfg/modules/django_client/core/generator/typescript/templates/client/client.ts.jinja +14 -6
  596. django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +4 -10
  597. django_cfg/modules/django_client/core/groups/__init__.py +1 -1
  598. django_cfg/modules/django_client/core/groups/detector.py +2 -1
  599. django_cfg/modules/django_client/core/groups/manager.py +2 -1
  600. django_cfg/modules/django_client/core/ir/schema.py +1 -1
  601. django_cfg/modules/django_client/core/parser/base.py +0 -2
  602. django_cfg/modules/django_client/core/parser/models/schema.py +1 -1
  603. django_cfg/modules/django_client/core/validation/__init__.py +1 -1
  604. django_cfg/modules/django_client/core/validation/fixer.py +1 -2
  605. django_cfg/modules/django_client/core/validation/reporter.py +2 -2
  606. django_cfg/modules/django_client/core/validation/safety.py +1 -1
  607. django_cfg/modules/django_client/management/commands/generate_client.py +14 -11
  608. django_cfg/modules/django_client/management/commands/validate_openapi.py +4 -6
  609. django_cfg/modules/django_client/spectacular/__init__.py +1 -1
  610. django_cfg/modules/django_client/spectacular/async_detection.py +3 -2
  611. django_cfg/modules/django_client/spectacular/enum_naming.py +1 -1
  612. django_cfg/modules/django_client/spectacular/schema.py +5 -5
  613. django_cfg/modules/django_client/system/__init__.py +24 -0
  614. django_cfg/modules/django_client/system/base_generator.py +123 -0
  615. django_cfg/modules/django_client/system/generate_mjs_clients.py +174 -0
  616. django_cfg/modules/django_client/system/mjs_generator.py +219 -0
  617. django_cfg/modules/django_client/system/schema_parser.py +195 -0
  618. django_cfg/modules/django_client/system/templates/api_client.js.j2 +87 -0
  619. django_cfg/modules/django_client/system/templates/app_index.js.j2 +13 -0
  620. django_cfg/modules/django_client/system/templates/base_client.js.j2 +166 -0
  621. django_cfg/modules/django_client/system/templates/main_index.js.j2 +80 -0
  622. django_cfg/modules/django_client/system/templates/types.js.j2 +24 -0
  623. django_cfg/modules/django_client/urls.py +3 -2
  624. django_cfg/modules/django_currency/__init__.py +17 -18
  625. django_cfg/modules/django_currency/clients/__init__.py +2 -2
  626. django_cfg/modules/django_currency/clients/coinpaprika_client.py +48 -48
  627. django_cfg/modules/django_currency/clients/hybrid_client.py +76 -75
  628. django_cfg/modules/django_currency/core/__init__.py +7 -13
  629. django_cfg/modules/django_currency/core/converter.py +25 -24
  630. django_cfg/modules/django_currency/core/models.py +9 -8
  631. django_cfg/modules/django_currency/database/__init__.py +4 -4
  632. django_cfg/modules/django_currency/database/database_loader.py +65 -66
  633. django_cfg/modules/django_currency/examples/example_database_usage.py +29 -28
  634. django_cfg/modules/django_currency/utils/cache.py +10 -11
  635. django_cfg/modules/django_dashboard/__init__.py +4 -5
  636. django_cfg/modules/django_dashboard/components.py +11 -7
  637. django_cfg/modules/django_dashboard/debug.py +1 -3
  638. django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +3 -3
  639. django_cfg/modules/django_dashboard/sections/base.py +2 -1
  640. django_cfg/modules/django_dashboard/sections/commands.py +3 -2
  641. django_cfg/modules/django_dashboard/sections/documentation.py +8 -6
  642. django_cfg/modules/django_dashboard/sections/overview.py +13 -9
  643. django_cfg/modules/django_dashboard/sections/stats.py +2 -2
  644. django_cfg/modules/django_dashboard/sections/system.py +2 -1
  645. django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +12 -4
  646. django_cfg/modules/django_email/management/commands/test_email.py +8 -7
  647. django_cfg/modules/django_email/service.py +5 -4
  648. django_cfg/modules/django_health/service.py +46 -44
  649. django_cfg/modules/django_import_export/__init__.py +7 -3
  650. django_cfg/modules/django_llm/__init__.py +3 -2
  651. django_cfg/modules/django_llm/example.py +58 -56
  652. django_cfg/modules/django_llm/llm/__init__.py +1 -1
  653. django_cfg/modules/django_llm/llm/cache.py +21 -20
  654. django_cfg/modules/django_llm/llm/client.py +9 -9
  655. django_cfg/modules/django_llm/llm/costs.py +14 -14
  656. django_cfg/modules/django_llm/llm/embeddings/__init__.py +1 -1
  657. django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +1 -2
  658. django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +1 -2
  659. django_cfg/modules/django_llm/llm/extractor.py +8 -8
  660. django_cfg/modules/django_llm/llm/models.py +5 -5
  661. django_cfg/modules/django_llm/llm/models_api/models_query.py +2 -2
  662. django_cfg/modules/django_llm/llm/models_cache.py +91 -92
  663. django_cfg/modules/django_llm/llm/providers/config_builder.py +1 -1
  664. django_cfg/modules/django_llm/llm/providers/provider_manager.py +2 -1
  665. django_cfg/modules/django_llm/llm/requests/cache_manager.py +1 -1
  666. django_cfg/modules/django_llm/llm/requests/chat_handler.py +2 -2
  667. django_cfg/modules/django_llm/llm/requests/embedding_handler.py +1 -1
  668. django_cfg/modules/django_llm/llm/responses/response_builder.py +2 -2
  669. django_cfg/modules/django_llm/llm/stats/stats_manager.py +1 -1
  670. django_cfg/modules/django_llm/llm/tokenizer.py +10 -9
  671. django_cfg/modules/django_llm/translator/__init__.py +1 -1
  672. django_cfg/modules/django_llm/translator/cache.py +36 -35
  673. django_cfg/modules/django_llm/translator/detectors/__init__.py +1 -1
  674. django_cfg/modules/django_llm/translator/detectors/script_detector.py +0 -1
  675. django_cfg/modules/django_llm/translator/stats/stats_tracker.py +1 -1
  676. django_cfg/modules/django_llm/translator/translator.py +5 -4
  677. django_cfg/modules/django_llm/translator/translators/__init__.py +1 -1
  678. django_cfg/modules/django_llm/translator/translators/json_translator.py +1 -1
  679. django_cfg/modules/django_llm/translator/utils/__init__.py +1 -1
  680. django_cfg/modules/django_llm/translator/utils/prompt_builder.py +0 -1
  681. django_cfg/modules/django_logging/__init__.py +1 -1
  682. django_cfg/modules/django_logging/django_logger.py +33 -34
  683. django_cfg/modules/django_logging/logger.py +3 -7
  684. django_cfg/modules/django_ngrok/__init__.py +7 -7
  685. django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py +33 -30
  686. django_cfg/modules/django_ngrok/service.py +33 -32
  687. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +4 -36
  688. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +1 -1
  689. django_cfg/modules/django_tasks/__init__.py +5 -5
  690. django_cfg/modules/django_tasks/dramatiq_setup.py +1 -1
  691. django_cfg/modules/django_tasks/factory.py +1 -1
  692. django_cfg/modules/django_tasks/management/commands/rundramatiq.py +39 -40
  693. django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +79 -80
  694. django_cfg/modules/django_tasks/management/commands/task_clear.py +34 -34
  695. django_cfg/modules/django_tasks/management/commands/task_status.py +34 -34
  696. django_cfg/modules/django_tasks/service.py +4 -3
  697. django_cfg/modules/django_tasks/settings.py +1 -1
  698. django_cfg/modules/django_telegram/__init__.py +4 -4
  699. django_cfg/modules/django_telegram/management/commands/test_telegram.py +4 -5
  700. django_cfg/modules/django_telegram/service.py +4 -3
  701. django_cfg/modules/django_telegram/utils.py +1 -1
  702. django_cfg/modules/django_twilio/__init__.py +15 -16
  703. django_cfg/modules/django_twilio/_imports.py +1 -1
  704. django_cfg/modules/django_twilio/base.py +9 -5
  705. django_cfg/modules/django_twilio/email_otp.py +4 -3
  706. django_cfg/modules/django_twilio/exceptions.py +36 -36
  707. django_cfg/modules/django_twilio/management/commands/test_twilio.py +6 -7
  708. django_cfg/modules/django_twilio/models.py +54 -53
  709. django_cfg/modules/django_twilio/sendgrid_service.py +70 -72
  710. django_cfg/modules/django_twilio/simple_service.py +42 -41
  711. django_cfg/modules/django_twilio/sms.py +1 -0
  712. django_cfg/modules/django_twilio/twilio_service.py +79 -83
  713. django_cfg/modules/django_twilio/unified.py +6 -5
  714. django_cfg/modules/django_twilio/utils.py +2 -3
  715. django_cfg/modules/django_twilio/whatsapp.py +3 -2
  716. django_cfg/modules/django_unfold/__init__.py +7 -6
  717. django_cfg/modules/django_unfold/callbacks/actions.py +6 -5
  718. django_cfg/modules/django_unfold/callbacks/apizones.py +122 -0
  719. django_cfg/modules/django_unfold/callbacks/base.py +9 -8
  720. django_cfg/modules/django_unfold/callbacks/charts.py +36 -37
  721. django_cfg/modules/django_unfold/callbacks/commands.py +2 -2
  722. django_cfg/modules/django_unfold/callbacks/main.py +27 -27
  723. django_cfg/modules/django_unfold/callbacks/statistics.py +12 -12
  724. django_cfg/modules/django_unfold/callbacks/system.py +5 -5
  725. django_cfg/modules/django_unfold/callbacks/users.py +4 -4
  726. django_cfg/modules/django_unfold/dashboard.py +29 -29
  727. django_cfg/modules/django_unfold/models/__init__.py +23 -8
  728. django_cfg/modules/django_unfold/models/config.py +84 -81
  729. django_cfg/modules/django_unfold/models/dashboard.py +20 -19
  730. django_cfg/modules/django_unfold/models/dropdown.py +6 -4
  731. django_cfg/modules/django_unfold/models/navigation.py +6 -4
  732. django_cfg/modules/django_unfold/models/tabs.py +4 -3
  733. django_cfg/modules/django_unfold/models.py +2 -3
  734. django_cfg/modules/django_unfold/system_monitor.py +27 -25
  735. django_cfg/modules/django_unfold/tailwind.py +12 -14
  736. django_cfg/modules/django_unfold/utils.py +7 -6
  737. django_cfg/pyproject.toml +1 -1
  738. django_cfg/registry/__init__.py +3 -3
  739. django_cfg/registry/core.py +8 -8
  740. django_cfg/registry/modules.py +2 -2
  741. django_cfg/registry/services.py +2 -2
  742. django_cfg/registry/third_party.py +3 -3
  743. django_cfg/routing/__init__.py +3 -3
  744. django_cfg/routing/callbacks.py +27 -26
  745. django_cfg/routing/routers.py +2 -2
  746. django_cfg/static/js/api/accounts/client.mjs +69 -0
  747. django_cfg/static/js/api/accounts/index.mjs +13 -0
  748. django_cfg/static/js/api/base.mjs +166 -0
  749. django_cfg/static/js/api/index.mjs +100 -0
  750. django_cfg/static/js/api/ipc/client.mjs +74 -0
  751. django_cfg/static/js/api/ipc/index.mjs +13 -0
  752. django_cfg/static/js/api/leads/client.mjs +71 -0
  753. django_cfg/static/js/api/leads/index.mjs +13 -0
  754. django_cfg/static/js/api/newsletter/client.mjs +109 -0
  755. django_cfg/static/js/api/newsletter/index.mjs +13 -0
  756. django_cfg/static/js/api/payments/client.mjs +1264 -0
  757. django_cfg/static/js/api/payments/index.mjs +13 -0
  758. django_cfg/static/js/api/support/client.mjs +84 -0
  759. django_cfg/static/js/api/support/index.mjs +13 -0
  760. django_cfg/static/js/api/tasks/client.mjs +74 -0
  761. django_cfg/static/js/api/tasks/index.mjs +13 -0
  762. django_cfg/static/js/api/types.mjs +729 -0
  763. django_cfg/static/js/api-loader.mjs +169 -0
  764. django_cfg/templates/admin/snippets/zones/zones_table.html +4 -3
  765. django_cfg/templatetags/django_cfg.py +4 -4
  766. django_cfg/utils/path_resolution.py +49 -50
  767. django_cfg/utils/smart_defaults.py +27 -29
  768. django_cfg/utils/version_check.py +14 -14
  769. {django_cfg-1.4.21.dist-info → django_cfg-1.4.23.dist-info}/METADATA +1 -1
  770. django_cfg-1.4.23.dist-info/RECORD +1137 -0
  771. django_cfg/apps/payments/static/payments/js/api-client.js +0 -408
  772. django_cfg/modules/django_ipc_client/dashboard/README.md +0 -517
  773. django_cfg/modules/django_ipc_client/dashboard/UNFOLD_INTEGRATION.md +0 -439
  774. django_cfg/modules/django_ipc_client/dashboard/__init__.py +0 -11
  775. django_cfg/modules/django_ipc_client/dashboard/apps.py +0 -22
  776. django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/dashboard.html +0 -200
  777. django_cfg/modules/django_ipc_client/dashboard/urls.py +0 -22
  778. django_cfg/modules/django_ipc_client/dashboard/urls_admin.py +0 -9
  779. django_cfg/modules/django_ipc_client/dashboard/views.py +0 -251
  780. django_cfg/modules/django_rpc_old/POETRY.md +0 -344
  781. django_cfg/modules/django_rpc_old/README.md +0 -397
  782. django_cfg/modules/django_rpc_old/TESTING.md +0 -358
  783. django_cfg/modules/django_rpc_old/__init__.py +0 -39
  784. django_cfg/modules/django_rpc_old/client.py +0 -531
  785. django_cfg/modules/django_rpc_old/config.py +0 -279
  786. django_cfg/modules/django_rpc_old/exceptions.py +0 -172
  787. django_cfg/modules/django_unfold/callbacks/revolution.py +0 -81
  788. django_cfg-1.4.21.dist-info/RECORD +0 -1111
  789. /django_cfg/{modules/django_ipc_client → apps/ipc}/README.md +0 -0
  790. /django_cfg/{modules/django_ipc_client → apps/ipc/services/client}/config.py +0 -0
  791. {django_cfg-1.4.21.dist-info → django_cfg-1.4.23.dist-info}/WHEEL +0 -0
  792. {django_cfg-1.4.21.dist-info → django_cfg-1.4.23.dist-info}/entry_points.txt +0 -0
  793. {django_cfg-1.4.21.dist-info → django_cfg-1.4.23.dist-info}/licenses/LICENSE +0 -0
@@ -3,9 +3,10 @@ Management command to show orchestrator status.
3
3
  """
4
4
 
5
5
  import asyncio
6
+ from datetime import timedelta
7
+
6
8
  from django.core.management.base import BaseCommand
7
9
  from django.utils import timezone
8
- from datetime import timedelta
9
10
 
10
11
  from django_cfg.apps.agents.integration.registry import get_registry
11
12
  from django_cfg.apps.agents.models.execution import AgentExecution, WorkflowExecution
@@ -14,9 +15,9 @@ from django_cfg.apps.agents.models.registry import AgentDefinition
14
15
 
15
16
  class Command(BaseCommand):
16
17
  """Show Django Orchestrator status and statistics."""
17
-
18
+
18
19
  help = 'Display Django Orchestrator status and statistics'
19
-
20
+
20
21
  def add_arguments(self, parser):
21
22
  """Add command arguments."""
22
23
  parser.add_argument(
@@ -35,98 +36,98 @@ class Command(BaseCommand):
35
36
  default=24,
36
37
  help='Show statistics for recent hours (default: 24)'
37
38
  )
38
-
39
+
39
40
  def handle(self, *args, **options):
40
41
  """Handle command execution."""
41
42
  self.stdout.write(
42
43
  self.style.SUCCESS('🤖 Django Orchestrator Status')
43
44
  )
44
45
  self.stdout.write('=' * 50)
45
-
46
+
46
47
  # Run async operations
47
48
  asyncio.run(self._show_status(options))
48
-
49
+
49
50
  async def _show_status(self, options):
50
51
  """Show orchestrator status."""
51
52
  # Registry status
52
53
  await self._show_registry_status()
53
-
54
+
54
55
  # Database statistics
55
56
  await self._show_database_stats(options['recent'])
56
-
57
+
57
58
  if options['detailed']:
58
59
  await self._show_detailed_stats(options['recent'])
59
-
60
+
60
61
  if options['agents']:
61
62
  await self._show_agent_stats(options['recent'])
62
-
63
+
63
64
  async def _show_registry_status(self):
64
65
  """Show registry status."""
65
66
  self.stdout.write('\n📋 Registry Status:')
66
-
67
+
67
68
  registry = get_registry()
68
69
  metrics = registry.get_agent_metrics()
69
-
70
+
70
71
  self.stdout.write(f" Runtime Agents: {metrics['runtime_agents_count']}")
71
72
  self.stdout.write(f" Available Patterns: {len(metrics['orchestrator_metrics']['available_patterns'])}")
72
-
73
+
73
74
  if metrics['agent_names']:
74
75
  self.stdout.write(f" Loaded Agents: {', '.join(metrics['agent_names'])}")
75
76
  else:
76
77
  self.stdout.write(" No agents currently loaded")
77
-
78
+
78
79
  async def _show_database_stats(self, recent_hours):
79
80
  """Show database statistics."""
80
81
  self.stdout.write('\n📊 Database Statistics:')
81
-
82
+
82
83
  # Total counts
83
84
  total_definitions = await AgentDefinition.objects.acount()
84
85
  active_definitions = await AgentDefinition.objects.filter(is_active=True).acount()
85
-
86
+
86
87
  self.stdout.write(f" Agent Definitions: {total_definitions} ({active_definitions} active)")
87
-
88
+
88
89
  # Recent activity
89
90
  since = timezone.now() - timedelta(hours=recent_hours)
90
-
91
+
91
92
  recent_executions = await AgentExecution.objects.filter(created_at__gte=since).acount()
92
93
  recent_workflows = await WorkflowExecution.objects.filter(created_at__gte=since).acount()
93
-
94
+
94
95
  self.stdout.write(f" Recent Executions ({recent_hours}h): {recent_executions} agents, {recent_workflows} workflows")
95
-
96
+
96
97
  # Success rates
97
98
  total_executions = await AgentExecution.objects.acount()
98
99
  successful_executions = await AgentExecution.objects.filter(status='completed').acount()
99
-
100
+
100
101
  if total_executions > 0:
101
102
  success_rate = (successful_executions / total_executions) * 100
102
103
  self.stdout.write(f" Overall Success Rate: {success_rate:.1f}%")
103
-
104
+
104
105
  async def _show_detailed_stats(self, recent_hours):
105
106
  """Show detailed statistics."""
106
107
  self.stdout.write('\n📈 Detailed Statistics:')
107
-
108
+
108
109
  since = timezone.now() - timedelta(hours=recent_hours)
109
-
110
+
110
111
  # Execution status breakdown
111
112
  statuses = {}
112
113
  async for execution in AgentExecution.objects.filter(created_at__gte=since):
113
114
  statuses[execution.status] = statuses.get(execution.status, 0) + 1
114
-
115
+
115
116
  if statuses:
116
117
  self.stdout.write(f" Execution Status (last {recent_hours}h):")
117
118
  for status, count in statuses.items():
118
119
  self.stdout.write(f" {status.title()}: {count}")
119
-
120
+
120
121
  # Average execution time
121
122
  from django.db.models import Avg
122
123
  avg_time = await AgentExecution.objects.filter(
123
124
  created_at__gte=since,
124
125
  execution_time__isnull=False
125
126
  ).aaggregate(avg_time=Avg('execution_time'))
126
-
127
+
127
128
  if avg_time['avg_time']:
128
129
  self.stdout.write(f" Average Execution Time: {avg_time['avg_time']:.2f}s")
129
-
130
+
130
131
  # Token usage
131
132
  from django.db.models import Sum
132
133
  token_stats = await AgentExecution.objects.filter(
@@ -135,50 +136,50 @@ class Command(BaseCommand):
135
136
  total_tokens=Sum('tokens_used'),
136
137
  total_cost=Sum('cost')
137
138
  )
138
-
139
+
139
140
  if token_stats['total_tokens']:
140
141
  self.stdout.write(f" Total Tokens Used: {token_stats['total_tokens']:,}")
141
-
142
+
142
143
  if token_stats['total_cost']:
143
144
  self.stdout.write(f" Total Cost: ${token_stats['total_cost']:.4f}")
144
-
145
+
145
146
  async def _show_agent_stats(self, recent_hours):
146
147
  """Show agent-specific statistics."""
147
148
  self.stdout.write('\n🤖 Agent Statistics:')
148
-
149
+
149
150
  since = timezone.now() - timedelta(hours=recent_hours)
150
-
151
+
151
152
  # Most used agents
152
153
  from django.db.models import Count
153
154
  agent_usage = []
154
-
155
+
155
156
  async for item in AgentExecution.objects.filter(
156
157
  created_at__gte=since
157
158
  ).values('agent_name').annotate(
158
159
  count=Count('id')
159
160
  ).order_by('-count')[:10]:
160
161
  agent_usage.append((item['agent_name'], item['count']))
161
-
162
+
162
163
  if agent_usage:
163
164
  self.stdout.write(f" Most Used Agents (last {recent_hours}h):")
164
165
  for agent_name, count in agent_usage:
165
166
  self.stdout.write(f" {agent_name}: {count} executions")
166
-
167
+
167
168
  # Agent definitions by category
168
169
  categories = {}
169
170
  async for agent_def in AgentDefinition.objects.filter(is_active=True):
170
171
  category = agent_def.category or 'uncategorized'
171
172
  categories[category] = categories.get(category, 0) + 1
172
-
173
+
173
174
  if categories:
174
175
  self.stdout.write(" Agents by Category:")
175
176
  for category, count in sorted(categories.items()):
176
177
  self.stdout.write(f" {category.title()}: {count}")
177
-
178
+
178
179
  # Registry runtime status
179
180
  registry = get_registry()
180
181
  runtime_agents = registry.get_runtime_agents()
181
-
182
+
182
183
  if runtime_agents:
183
184
  self.stdout.write(" Runtime Agent Metrics:")
184
185
  for agent_name, agent in runtime_agents.items():
@@ -4,17 +4,22 @@ Django Agents - Custom model managers.
4
4
 
5
5
  from .execution import AgentExecutionManager, WorkflowExecutionManager
6
6
  from .registry import AgentDefinitionManager, AgentTemplateManager
7
- from .toolsets import ToolExecutionManager, ApprovalLogManager, ToolsetConfigurationManager, ToolPermissionManager
7
+ from .toolsets import (
8
+ ApprovalLogManager,
9
+ ToolExecutionManager,
10
+ ToolPermissionManager,
11
+ ToolsetConfigurationManager,
12
+ )
8
13
 
9
14
  __all__ = [
10
15
  # Execution managers
11
16
  'AgentExecutionManager',
12
17
  'WorkflowExecutionManager',
13
-
18
+
14
19
  # Registry managers
15
20
  'AgentDefinitionManager',
16
21
  'AgentTemplateManager',
17
-
22
+
18
23
  # Toolsets managers
19
24
  'ToolExecutionManager',
20
25
  'ApprovalLogManager',
@@ -2,44 +2,45 @@
2
2
  Custom managers for agent execution models.
3
3
  """
4
4
 
5
+ from typing import Any, Dict, Optional
6
+
5
7
  from django.db import models
6
8
  from django.utils import timezone
7
- from typing import Optional, Dict, Any
8
9
 
9
10
 
10
11
  class AgentExecutionQuerySet(models.QuerySet):
11
12
  """Custom queryset for AgentExecution."""
12
-
13
+
13
14
  def for_user(self, user):
14
15
  """Filter executions for specific user."""
15
16
  return self.filter(user=user)
16
-
17
+
17
18
  def by_status(self, status: str):
18
19
  """Filter by execution status."""
19
20
  return self.filter(status=status)
20
-
21
+
21
22
  def successful(self):
22
23
  """Get successful executions."""
23
24
  return self.filter(status='completed')
24
-
25
+
25
26
  def failed(self):
26
27
  """Get failed executions."""
27
28
  return self.filter(status='failed')
28
-
29
+
29
30
  def recent(self, days: int = 7):
30
31
  """Get recent executions."""
31
32
  from datetime import timedelta
32
33
  cutoff = timezone.now() - timedelta(days=days)
33
34
  return self.filter(created_at__gte=cutoff)
34
-
35
+
35
36
  def by_agent(self, agent_name: str):
36
37
  """Filter by agent name."""
37
38
  return self.filter(agent_name=agent_name)
38
-
39
+
39
40
  def with_metrics(self):
40
41
  """Include execution metrics in query."""
41
42
  return self.select_related('user', 'workflow_execution', 'agent_definition')
42
-
43
+
43
44
  def expensive(self, min_cost: float = 0.01):
44
45
  """Get expensive executions."""
45
46
  return self.filter(cost__gte=min_cost)
@@ -47,42 +48,42 @@ class AgentExecutionQuerySet(models.QuerySet):
47
48
 
48
49
  class AgentExecutionManager(models.Manager):
49
50
  """Custom manager for AgentExecution."""
50
-
51
+
51
52
  def get_queryset(self):
52
53
  return AgentExecutionQuerySet(self.model, using=self._db)
53
-
54
+
54
55
  def for_user(self, user):
55
56
  """Get executions for specific user."""
56
57
  return self.get_queryset().for_user(user)
57
-
58
+
58
59
  def by_status(self, status: str):
59
60
  """Get executions by status."""
60
61
  return self.get_queryset().by_status(status)
61
-
62
+
62
63
  def successful(self):
63
64
  """Get successful executions."""
64
65
  return self.get_queryset().successful()
65
-
66
+
66
67
  def failed(self):
67
68
  """Get failed executions."""
68
69
  return self.get_queryset().failed()
69
-
70
+
70
71
  def recent(self, days: int = 7):
71
72
  """Get recent executions."""
72
73
  return self.get_queryset().recent(days)
73
-
74
+
74
75
  def by_agent(self, agent_name: str):
75
76
  """Get executions by agent name."""
76
77
  return self.get_queryset().by_agent(agent_name)
77
-
78
+
78
79
  def with_metrics(self):
79
80
  """Get executions with metrics."""
80
81
  return self.get_queryset().with_metrics()
81
-
82
+
82
83
  def expensive(self, min_cost: float = 0.01):
83
84
  """Get expensive executions."""
84
85
  return self.get_queryset().expensive(min_cost)
85
-
86
+
86
87
  def create_execution(
87
88
  self,
88
89
  agent_name: str,
@@ -101,11 +102,11 @@ class AgentExecutionManager(models.Manager):
101
102
  workflow_execution=workflow_execution,
102
103
  **kwargs
103
104
  )
104
-
105
+
105
106
  def get_stats_for_user(self, user) -> Dict[str, Any]:
106
107
  """Get execution statistics for user."""
107
108
  executions = self.for_user(user)
108
-
109
+
109
110
  return {
110
111
  'total': executions.count(),
111
112
  'successful': executions.successful().count(),
@@ -122,37 +123,37 @@ class AgentExecutionManager(models.Manager):
122
123
 
123
124
  class WorkflowExecutionQuerySet(models.QuerySet):
124
125
  """Custom queryset for WorkflowExecution."""
125
-
126
+
126
127
  def for_user(self, user):
127
128
  """Filter workflows for specific user."""
128
129
  return self.filter(user=user)
129
-
130
+
130
131
  def by_status(self, status: str):
131
132
  """Filter by workflow status."""
132
133
  return self.filter(status=status)
133
-
134
+
134
135
  def by_pattern(self, pattern: str):
135
136
  """Filter by workflow pattern."""
136
137
  return self.filter(pattern=pattern)
137
-
138
+
138
139
  def successful(self):
139
140
  """Get successful workflows."""
140
141
  return self.filter(status='completed')
141
-
142
+
142
143
  def failed(self):
143
144
  """Get failed workflows."""
144
145
  return self.filter(status='failed')
145
-
146
+
146
147
  def running(self):
147
148
  """Get currently running workflows."""
148
149
  return self.filter(status='running')
149
-
150
+
150
151
  def recent(self, days: int = 7):
151
152
  """Get recent workflows."""
152
153
  from datetime import timedelta
153
154
  cutoff = timezone.now() - timedelta(days=days)
154
155
  return self.filter(created_at__gte=cutoff)
155
-
156
+
156
157
  def with_executions(self):
157
158
  """Include related agent executions."""
158
159
  return self.prefetch_related('agent_executions')
@@ -160,42 +161,42 @@ class WorkflowExecutionQuerySet(models.QuerySet):
160
161
 
161
162
  class WorkflowExecutionManager(models.Manager):
162
163
  """Custom manager for WorkflowExecution."""
163
-
164
+
164
165
  def get_queryset(self):
165
166
  return WorkflowExecutionQuerySet(self.model, using=self._db)
166
-
167
+
167
168
  def for_user(self, user):
168
169
  """Get workflows for specific user."""
169
170
  return self.get_queryset().for_user(user)
170
-
171
+
171
172
  def by_status(self, status: str):
172
173
  """Get workflows by status."""
173
174
  return self.get_queryset().by_status(status)
174
-
175
+
175
176
  def by_pattern(self, pattern: str):
176
177
  """Get workflows by pattern."""
177
178
  return self.get_queryset().by_pattern(pattern)
178
-
179
+
179
180
  def successful(self):
180
181
  """Get successful workflows."""
181
182
  return self.get_queryset().successful()
182
-
183
+
183
184
  def failed(self):
184
185
  """Get failed workflows."""
185
186
  return self.get_queryset().failed()
186
-
187
+
187
188
  def running(self):
188
189
  """Get running workflows."""
189
190
  return self.get_queryset().running()
190
-
191
+
191
192
  def recent(self, days: int = 7):
192
193
  """Get recent workflows."""
193
194
  return self.get_queryset().recent(days)
194
-
195
+
195
196
  def with_executions(self):
196
197
  """Get workflows with executions."""
197
198
  return self.get_queryset().with_executions()
198
-
199
+
199
200
  def create_workflow(
200
201
  self,
201
202
  name: str,
@@ -216,11 +217,11 @@ class WorkflowExecutionManager(models.Manager):
216
217
  config=config or {},
217
218
  **kwargs
218
219
  )
219
-
220
+
220
221
  def get_stats_for_user(self, user) -> Dict[str, Any]:
221
222
  """Get workflow statistics for user."""
222
223
  workflows = self.for_user(user)
223
-
224
+
224
225
  return {
225
226
  'total': workflows.count(),
226
227
  'successful': workflows.successful().count(),