django-cfg 1.3.13__py3-none-any.whl → 1.4.3__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 (446) 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/agents/examples/__init__.py +3 -0
  11. django_cfg/apps/agents/examples/simple_example.py +161 -0
  12. django_cfg/apps/api/commands/views.py +66 -83
  13. django_cfg/apps/api/health/drf_views.py +269 -0
  14. django_cfg/apps/api/health/serializers.py +45 -0
  15. django_cfg/apps/api/health/urls.py +6 -1
  16. django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
  17. django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
  18. django_cfg/apps/knowbase/admin/document_admin.py +136 -270
  19. django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
  20. django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
  21. django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
  22. django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
  23. django_cfg/apps/knowbase/config/constance_fields.py +1 -1
  24. django_cfg/apps/knowbase/config/settings.py +2 -2
  25. django_cfg/apps/knowbase/examples/__init__.py +3 -0
  26. django_cfg/apps/knowbase/examples/external_data_usage.py +191 -0
  27. django_cfg/apps/knowbase/mixins/__init__.py +19 -2
  28. django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
  29. django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
  30. django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
  31. django_cfg/apps/knowbase/mixins/creator.py +10 -10
  32. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +199 -0
  33. django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
  34. django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
  35. django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
  36. django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
  37. django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
  38. django_cfg/apps/knowbase/mixins/service.py +2 -2
  39. django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
  40. django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
  41. django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
  42. django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
  43. django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
  44. django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
  45. django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
  46. django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
  47. django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
  48. django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
  49. django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
  50. django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
  51. django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
  52. django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
  53. django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
  54. django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
  55. django_cfg/apps/knowbase/services/embedding/models.py +18 -14
  56. django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
  57. django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
  58. django_cfg/apps/leads/tests.py +1 -1
  59. django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
  60. django_cfg/apps/payments/admin/balance_admin.py +1 -1
  61. django_cfg/apps/payments/admin/currencies_admin.py +1 -1
  62. django_cfg/apps/payments/admin/payments_admin.py +1 -1
  63. django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
  64. django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
  65. django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
  66. django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
  67. django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
  68. django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
  69. django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
  70. django_cfg/apps/payments/admin_interface/views/base.py +29 -2
  71. django_cfg/apps/payments/apps.py +1 -1
  72. django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
  73. django_cfg/apps/payments/config/helpers.py +3 -2
  74. django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
  75. django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
  76. django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
  77. django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
  78. django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
  79. django_cfg/apps/payments/management/commands/test_providers.py +1 -1
  80. django_cfg/apps/payments/middleware/api_access.py +1 -1
  81. django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
  82. django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
  83. django_cfg/apps/payments/models/balance.py +2 -2
  84. django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
  85. django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
  86. django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
  87. django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
  88. django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
  89. django_cfg/apps/payments/models/payments.py +2 -2
  90. django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
  91. django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
  92. django_cfg/apps/payments/services/core/base.py +1 -1
  93. django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
  94. django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
  95. django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
  96. django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
  97. django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
  98. django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
  99. django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
  100. django_cfg/apps/payments/services/core/payment_service.py +124 -612
  101. django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
  102. django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
  103. django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
  104. django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
  105. django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
  106. django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
  107. django_cfg/apps/payments/services/providers/base.py +1 -1
  108. django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
  109. django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
  110. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
  111. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
  112. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
  113. django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
  114. django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
  115. django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
  116. django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
  117. django_cfg/apps/payments/services/providers/registry.py +1 -1
  118. django_cfg/apps/payments/services/providers/sync_service.py +1 -1
  119. django_cfg/apps/payments/signals/__init__.py +1 -1
  120. django_cfg/apps/payments/signals/api_key_signals.py +1 -1
  121. django_cfg/apps/payments/signals/balance_signals.py +1 -1
  122. django_cfg/apps/payments/signals/payment_signals.py +1 -1
  123. django_cfg/apps/payments/signals/subscription_signals.py +1 -1
  124. django_cfg/apps/payments/views/api/api_keys.py +1 -1
  125. django_cfg/apps/payments/views/api/balances.py +1 -1
  126. django_cfg/apps/payments/views/api/base.py +1 -1
  127. django_cfg/apps/payments/views/api/currencies.py +1 -1
  128. django_cfg/apps/payments/views/api/payments.py +1 -1
  129. django_cfg/apps/payments/views/api/subscriptions.py +1 -1
  130. django_cfg/apps/payments/views/api/webhooks.py +1 -1
  131. django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
  132. django_cfg/apps/payments/views/serializers/balances.py +1 -1
  133. django_cfg/apps/payments/views/serializers/currencies.py +1 -1
  134. django_cfg/apps/payments/views/serializers/payments.py +1 -1
  135. django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
  136. django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
  137. django_cfg/apps/support/admin/support_admin.py +21 -13
  138. django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
  139. django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
  140. django_cfg/apps/support/utils/support_email_service.py +1 -1
  141. django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
  142. django_cfg/apps/tasks/utils/simulator.py +1 -1
  143. django_cfg/apps/tasks/views/dashboard.py +33 -3
  144. django_cfg/apps/urls.py +5 -1
  145. django_cfg/cli/README.md +57 -471
  146. django_cfg/cli/commands/create_project.py +140 -529
  147. django_cfg/cli/main.py +13 -10
  148. django_cfg/core/__init__.py +63 -6
  149. django_cfg/core/base/__init__.py +5 -0
  150. django_cfg/core/base/config_model.py +652 -0
  151. django_cfg/core/builders/__init__.py +11 -0
  152. django_cfg/core/builders/apps_builder.py +258 -0
  153. django_cfg/core/builders/middleware_builder.py +115 -0
  154. django_cfg/core/builders/security_builder.py +96 -0
  155. django_cfg/core/config.py +20 -892
  156. django_cfg/core/constants.py +69 -0
  157. django_cfg/core/environment/__init__.py +9 -0
  158. django_cfg/core/exceptions.py +45 -298
  159. django_cfg/core/generation/__init__.py +51 -0
  160. django_cfg/core/generation/core_generators/__init__.py +0 -0
  161. django_cfg/core/generation/core_generators/settings.py +90 -0
  162. django_cfg/core/generation/core_generators/static.py +82 -0
  163. django_cfg/core/generation/core_generators/templates.py +141 -0
  164. django_cfg/core/generation/data_generators/__init__.py +15 -0
  165. django_cfg/core/generation/data_generators/cache.py +132 -0
  166. django_cfg/core/generation/data_generators/database.py +117 -0
  167. django_cfg/core/generation/generation.py +92 -0
  168. django_cfg/core/generation/integration_generators/__init__.py +21 -0
  169. django_cfg/core/generation/integration_generators/api.py +237 -0
  170. django_cfg/core/generation/integration_generators/sessions.py +65 -0
  171. django_cfg/core/generation/integration_generators/tailwind.py +54 -0
  172. django_cfg/core/generation/integration_generators/tasks.py +92 -0
  173. django_cfg/core/generation/integration_generators/third_party.py +144 -0
  174. django_cfg/core/generation/orchestrator.py +285 -0
  175. django_cfg/core/generation/protocols.py +30 -0
  176. django_cfg/core/generation/security_generators/__init__.py +0 -0
  177. django_cfg/core/generation/utility_generators/__init__.py +24 -0
  178. django_cfg/core/generation/utility_generators/email.py +58 -0
  179. django_cfg/core/generation/utility_generators/i18n.py +66 -0
  180. django_cfg/core/generation/utility_generators/limits.py +58 -0
  181. django_cfg/core/generation/utility_generators/logging.py +66 -0
  182. django_cfg/core/generation/utility_generators/security.py +101 -0
  183. django_cfg/core/generation/utils/__init__.py +0 -0
  184. django_cfg/core/generation/utils/helpers.py +32 -0
  185. django_cfg/core/integration/__init__.py +18 -25
  186. django_cfg/core/integration/display/startup.py +146 -133
  187. django_cfg/core/integration/url_integration.py +13 -2
  188. django_cfg/core/services/__init__.py +5 -0
  189. django_cfg/core/services/config_service.py +121 -0
  190. django_cfg/core/state/__init__.py +9 -0
  191. django_cfg/core/state/registry.py +84 -0
  192. django_cfg/core/types/__init__.py +15 -0
  193. django_cfg/core/types/aliases.py +15 -0
  194. django_cfg/core/types/enums.py +49 -0
  195. django_cfg/dashboard/DEBUG_README.md +105 -0
  196. django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
  197. django_cfg/dashboard/__init__.py +24 -0
  198. django_cfg/dashboard/components.py +308 -0
  199. django_cfg/dashboard/debug.py +176 -0
  200. django_cfg/dashboard/management/__init__.py +0 -0
  201. django_cfg/dashboard/management/commands/__init__.py +0 -0
  202. django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
  203. django_cfg/dashboard/sections/__init__.py +1 -0
  204. django_cfg/dashboard/sections/base.py +128 -0
  205. django_cfg/dashboard/sections/commands.py +32 -0
  206. django_cfg/dashboard/sections/overview.py +394 -0
  207. django_cfg/dashboard/sections/stats.py +48 -0
  208. django_cfg/dashboard/sections/system.py +73 -0
  209. django_cfg/management/commands/check_settings.py +6 -2
  210. django_cfg/management/commands/clear_constance.py +6 -1
  211. django_cfg/management/commands/create_token.py +5 -4
  212. django_cfg/management/commands/generate.py +5 -0
  213. django_cfg/management/commands/list_urls.py +7 -2
  214. django_cfg/management/commands/migrate_all.py +6 -2
  215. django_cfg/management/commands/migrator.py +6 -1
  216. django_cfg/management/commands/rundramatiq.py +6 -1
  217. django_cfg/management/commands/rundramatiq_simulator.py +11 -4
  218. django_cfg/management/commands/runserver_ngrok.py +9 -7
  219. django_cfg/management/commands/script.py +25 -21
  220. django_cfg/management/commands/show_config.py +6 -1
  221. django_cfg/management/commands/show_urls.py +8 -3
  222. django_cfg/management/commands/superuser.py +5 -4
  223. django_cfg/management/commands/task_clear.py +8 -3
  224. django_cfg/management/commands/task_status.py +8 -3
  225. django_cfg/management/commands/test_email.py +6 -1
  226. django_cfg/management/commands/test_telegram.py +6 -1
  227. django_cfg/management/commands/test_twilio.py +6 -1
  228. django_cfg/management/commands/tree.py +7 -4
  229. django_cfg/models/__init__.py +88 -3
  230. django_cfg/models/api/__init__.py +27 -0
  231. django_cfg/models/{api.py → api/config.py} +1 -1
  232. django_cfg/models/api/drf/__init__.py +21 -0
  233. django_cfg/models/api/drf/config.py +101 -0
  234. django_cfg/models/api/drf/redoc.py +31 -0
  235. django_cfg/models/api/drf/spectacular.py +129 -0
  236. django_cfg/models/api/drf/swagger.py +59 -0
  237. django_cfg/models/{api_keys.py → api/keys.py} +16 -6
  238. django_cfg/models/{limits.py → api/limits.py} +0 -1
  239. django_cfg/models/base/__init__.py +14 -0
  240. django_cfg/models/django/__init__.py +16 -0
  241. django_cfg/models/{constance.py → django/constance.py} +1 -1
  242. django_cfg/models/{environment.py → django/environment.py} +1 -1
  243. django_cfg/models/infrastructure/__init__.py +17 -0
  244. django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
  245. django_cfg/models/infrastructure/database/__init__.py +22 -0
  246. django_cfg/models/infrastructure/database/config.py +265 -0
  247. django_cfg/models/infrastructure/database/converters.py +91 -0
  248. django_cfg/models/infrastructure/database/parsers.py +96 -0
  249. django_cfg/models/infrastructure/database/routing.py +85 -0
  250. django_cfg/models/infrastructure/database/validators.py +170 -0
  251. django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
  252. django_cfg/models/{security.py → infrastructure/security.py} +2 -2
  253. django_cfg/models/ngrok/__init__.py +11 -0
  254. django_cfg/models/ngrok/auth.py +37 -0
  255. django_cfg/models/ngrok/config.py +77 -0
  256. django_cfg/models/ngrok/tunnel.py +35 -0
  257. django_cfg/models/payments/__init__.py +20 -0
  258. django_cfg/models/payments/api_keys.py +57 -0
  259. django_cfg/models/{payments.py → payments/config.py} +56 -154
  260. django_cfg/models/payments/providers/__init__.py +15 -0
  261. django_cfg/models/payments/providers/base.py +25 -0
  262. django_cfg/models/payments/providers/nowpayments.py +48 -0
  263. django_cfg/models/services/__init__.py +18 -0
  264. django_cfg/models/services/base.py +65 -0
  265. django_cfg/models/{email.py → services/email.py} +1 -1
  266. django_cfg/models/services/telegram.py +172 -0
  267. django_cfg/models/tasks/__init__.py +51 -0
  268. django_cfg/models/tasks/backends.py +250 -0
  269. django_cfg/models/tasks/config.py +314 -0
  270. django_cfg/models/tasks/utils.py +174 -0
  271. django_cfg/modules/base.py +18 -3
  272. django_cfg/modules/django_admin/decorators/actions.py +1 -1
  273. django_cfg/modules/django_admin/decorators/display.py +1 -1
  274. django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
  275. django_cfg/modules/django_currency/examples/__init__.py +3 -0
  276. django_cfg/modules/django_currency/examples/example_database_usage.py +144 -0
  277. django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
  278. django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
  279. django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
  280. django_cfg/modules/django_drf_theme/README.md +207 -0
  281. django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
  282. django_cfg/modules/django_drf_theme/__init__.py +23 -0
  283. django_cfg/modules/django_drf_theme/apps.py +15 -0
  284. django_cfg/modules/django_drf_theme/renderers.py +58 -0
  285. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
  286. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
  287. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
  288. django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
  289. django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
  290. django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
  291. django_cfg/modules/django_email/__init__.py +14 -0
  292. django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
  293. django_cfg/modules/django_email/utils.py +40 -0
  294. django_cfg/modules/django_health/__init__.py +9 -0
  295. django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
  296. django_cfg/modules/django_ipc_client/README.md +346 -0
  297. django_cfg/modules/django_ipc_client/__init__.py +51 -0
  298. django_cfg/modules/django_ipc_client/client.py +540 -0
  299. django_cfg/modules/django_ipc_client/config.py +207 -0
  300. django_cfg/modules/django_ipc_client/dashboard/README.md +517 -0
  301. django_cfg/modules/django_ipc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
  302. django_cfg/modules/django_ipc_client/dashboard/__init__.py +11 -0
  303. django_cfg/modules/django_ipc_client/dashboard/apps.py +22 -0
  304. django_cfg/modules/django_ipc_client/dashboard/monitor.py +435 -0
  305. django_cfg/modules/django_ipc_client/dashboard/static/django_ipc_dashboard/js/dashboard.js +373 -0
  306. django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/base.html +76 -0
  307. django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/dashboard.html +200 -0
  308. django_cfg/modules/django_ipc_client/dashboard/urls.py +22 -0
  309. django_cfg/modules/django_ipc_client/dashboard/urls_admin.py +9 -0
  310. django_cfg/modules/django_ipc_client/dashboard/views.py +251 -0
  311. django_cfg/modules/django_ipc_client/exceptions.py +201 -0
  312. django_cfg/modules/django_llm/llm/client.py +155 -550
  313. django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
  314. django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
  315. django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
  316. django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
  317. django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
  318. django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
  319. django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
  320. django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
  321. django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
  322. django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
  323. django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
  324. django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
  325. django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
  326. django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
  327. django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
  328. django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
  329. django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
  330. django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
  331. django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
  332. django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
  333. django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
  334. django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
  335. django_cfg/modules/django_llm/translator/translator.py +150 -603
  336. django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
  337. django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
  338. django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
  339. django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
  340. django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
  341. django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
  342. django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
  343. django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
  344. django_cfg/modules/django_logging/__init__.py +14 -0
  345. django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
  346. django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
  347. django_cfg/modules/django_ngrok/__init__.py +39 -0
  348. django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
  349. django_cfg/modules/django_rpc_old/POETRY.md +344 -0
  350. django_cfg/modules/django_rpc_old/README.md +397 -0
  351. django_cfg/modules/django_rpc_old/TESTING.md +358 -0
  352. django_cfg/modules/django_rpc_old/__init__.py +39 -0
  353. django_cfg/modules/django_rpc_old/client.py +531 -0
  354. django_cfg/modules/django_rpc_old/config.py +279 -0
  355. django_cfg/modules/django_rpc_old/exceptions.py +172 -0
  356. django_cfg/modules/django_tailwind/README.md +478 -0
  357. django_cfg/modules/django_tailwind/__init__.py +7 -0
  358. django_cfg/modules/django_tailwind/apps.py +10 -0
  359. django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
  360. django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
  361. django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
  362. django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
  363. django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
  364. django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
  365. django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
  366. django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
  367. django_cfg/modules/django_tasks/__init__.py +29 -0
  368. django_cfg/modules/django_tasks/factory.py +127 -0
  369. django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
  370. django_cfg/modules/django_tasks/settings.py +107 -0
  371. django_cfg/modules/django_telegram/__init__.py +29 -0
  372. django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
  373. django_cfg/modules/django_telegram/utils.py +62 -0
  374. django_cfg/modules/django_twilio/__init__.py +54 -107
  375. django_cfg/modules/django_twilio/_imports.py +30 -0
  376. django_cfg/modules/django_twilio/base.py +192 -0
  377. django_cfg/modules/django_twilio/email_otp.py +227 -0
  378. django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
  379. django_cfg/modules/django_twilio/simple_service.py +1 -2
  380. django_cfg/modules/django_twilio/sms.py +94 -0
  381. django_cfg/modules/django_twilio/twilio_service.py +2 -3
  382. django_cfg/modules/django_twilio/unified.py +310 -0
  383. django_cfg/modules/django_twilio/utils.py +190 -0
  384. django_cfg/modules/django_twilio/whatsapp.py +137 -0
  385. django_cfg/modules/django_unfold/callbacks/base.py +198 -7
  386. django_cfg/modules/django_unfold/callbacks/main.py +102 -10
  387. django_cfg/modules/django_unfold/dashboard.py +65 -43
  388. django_cfg/modules/django_unfold/models/config.py +13 -12
  389. django_cfg/modules/django_unfold/models/navigation.py +8 -3
  390. django_cfg/modules/django_unfold/models/tabs.py +2 -2
  391. django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
  392. django_cfg/registry/core.py +24 -26
  393. django_cfg/registry/modules.py +5 -2
  394. django_cfg/registry/services.py +20 -3
  395. django_cfg/registry/third_party.py +8 -8
  396. django_cfg/static/admin/css/dashboard.css +260 -0
  397. django_cfg/static/admin/js/commands.js +171 -0
  398. django_cfg/static/admin/js/dashboard.js +126 -0
  399. django_cfg/templates/admin/components/management_commands.js +375 -0
  400. django_cfg/templates/admin/components/progress_bar.html +18 -23
  401. django_cfg/templates/admin/examples/component_class_example.html +156 -0
  402. django_cfg/templates/admin/index.html +48 -20
  403. django_cfg/templates/admin/index_new.html +106 -0
  404. django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
  405. django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
  406. django_cfg/templates/admin/sections/commands_section.html +626 -0
  407. django_cfg/templates/admin/sections/overview_section.html +112 -0
  408. django_cfg/templates/admin/sections/stats_section.html +35 -0
  409. django_cfg/templates/admin/sections/system_section.html +99 -0
  410. django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
  411. django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
  412. django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
  413. django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
  414. django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
  415. django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
  416. django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
  417. django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
  418. django_cfg/templatetags/django_cfg.py +7 -1
  419. django_cfg/utils/smart_defaults.py +4 -4
  420. django_cfg-1.4.3.dist-info/METADATA +533 -0
  421. {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/RECORD +432 -195
  422. django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
  423. django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
  424. django_cfg/core/generation.py +0 -621
  425. django_cfg/management/commands/validate_config.py +0 -189
  426. django_cfg/models/database.py +0 -480
  427. django_cfg/models/drf.py +0 -272
  428. django_cfg/models/ngrok.py +0 -122
  429. django_cfg/models/services.py +0 -440
  430. django_cfg/models/tasks.py +0 -550
  431. django_cfg/modules/django_twilio/service.py +0 -942
  432. django_cfg/template_archive/django_sample.zip +0 -0
  433. django_cfg/templates/rest_framework/api.html +0 -12
  434. django_cfg/utils/toolkit.py +0 -703
  435. django_cfg-1.3.13.dist-info/METADATA +0 -1029
  436. /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
  437. /django_cfg/core/{environment.py → environment/detector.py} +0 -0
  438. /django_cfg/models/{cors.py → api/cors.py} +0 -0
  439. /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
  440. /django_cfg/models/{base.py → base/config.py} +0 -0
  441. /django_cfg/models/{cfg.py → base/module.py} +0 -0
  442. /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
  443. /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
  444. {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/WHEEL +0 -0
  445. {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/entry_points.txt +0 -0
  446. {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,25 +1,20 @@
1
+ {#
2
+ ⚠️ DEPRECATED: This component is deprecated.
3
+
4
+ Use Unfold's built-in progress component instead:
5
+ {% component "unfold/components/progress.html" with value=... title=... description=... %}
6
+ {% endcomponent %}
7
+
8
+ This wrapper will be removed in a future version.
9
+ For now it redirects to the Unfold component for backwards compatibility.
10
+ #}
11
+
1
12
  {% load unfold %}
2
13
 
3
- <!-- Progress Bar Component -->
4
- <div class="w-full">
5
- {% if title %}
6
- <div class="flex items-center justify-between mb-2">
7
- <span class="text-sm font-medium text-font-default-light dark:text-font-default-dark">{{ title }}</span>
8
- <span class="text-sm text-font-subtle-light dark:text-font-subtle-dark">{{ value }}%</span>
9
- </div>
10
- {% endif %}
11
-
12
- <div class="w-full bg-base-200 dark:bg-base-700 rounded-full h-2">
13
- <div class="h-2 rounded-full transition-all duration-300
14
- {% if value >= 80 %}bg-green-500
15
- {% elif value >= 60 %}bg-amber-500
16
- {% elif value >= 40 %}bg-orange-500
17
- {% else %}bg-red-500{% endif %}"
18
- style="width: {{ value|default:0 }}%">
19
- </div>
20
- </div>
21
-
22
- {% if description %}
23
- <p class="text-xs text-font-subtle-light dark:text-font-subtle-dark mt-1">{{ description }}</p>
24
- {% endif %}
25
- </div>
14
+ <!-- Wrapper for backwards compatibility - redirects to Unfold component -->
15
+ {% component "unfold/components/progress.html" with
16
+ value=value
17
+ title=title
18
+ description=description
19
+ class=class %}
20
+ {% endcomponent %}
@@ -0,0 +1,156 @@
1
+ {% load unfold %}
2
+
3
+ <!--
4
+ Component Class Example Template
5
+
6
+ This demonstrates using Unfold's Component Class system with @register_component.
7
+ This is an ALTERNATIVE approach to the section-based architecture.
8
+
9
+ Benefits:
10
+ - Templates specify which component to use
11
+ - Components handle their own data fetching
12
+ - More self-contained and reusable
13
+
14
+ Usage:
15
+ - Add to UNFOLD settings: custom page or tab
16
+ - Components automatically fetch data when rendered
17
+ -->
18
+
19
+ <div class="space-y-8">
20
+ <!-- System Metrics using Component Class -->
21
+ <div>
22
+ <h2 class="text-xl font-semibold mb-4">System Metrics (Component Class)</h2>
23
+
24
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
25
+ <!-- Database Metric -->
26
+ {% component "unfold/components/card.html" with title="Database" component_class="SystemMetricsComponent" %}
27
+ {% if data.database %}
28
+ {% component "unfold/components/progress.html" with
29
+ value=data.database.value
30
+ title=data.database.title
31
+ description=data.database.description %}
32
+ {% endcomponent %}
33
+ {% endif %}
34
+ {% endcomponent %}
35
+
36
+ <!-- Cache Metric -->
37
+ {% component "unfold/components/card.html" with title="Cache" component_class="SystemMetricsComponent" %}
38
+ {% if data.cache %}
39
+ {% component "unfold/components/progress.html" with
40
+ value=data.cache.value
41
+ title=data.cache.title
42
+ description=data.cache.description %}
43
+ {% endcomponent %}
44
+ {% endif %}
45
+ {% endcomponent %}
46
+
47
+ <!-- Storage Metric -->
48
+ {% component "unfold/components/card.html" with title="Storage" component_class="SystemMetricsComponent" %}
49
+ {% if data.storage %}
50
+ {% component "unfold/components/progress.html" with
51
+ value=data.storage.value
52
+ title=data.storage.title
53
+ description=data.storage.description %}
54
+ {% endcomponent %}
55
+ {% endif %}
56
+ {% endcomponent %}
57
+
58
+ <!-- API Metric -->
59
+ {% component "unfold/components/card.html" with title="API" component_class="SystemMetricsComponent" %}
60
+ {% if data.api %}
61
+ {% component "unfold/components/progress.html" with
62
+ value=data.api.value
63
+ title=data.api.title
64
+ description=data.api.description %}
65
+ {% endcomponent %}
66
+ {% endif %}
67
+ {% endcomponent %}
68
+ </div>
69
+ </div>
70
+
71
+ <!-- Recent Users using Component Class -->
72
+ <div>
73
+ <h2 class="text-xl font-semibold mb-4">Recent Users (Component Class)</h2>
74
+
75
+ {% component "unfold/components/card.html" with title="Latest Registrations" component_class="RecentUsersComponent" %}
76
+ {% if data.rows %}
77
+ {% component "unfold/components/table.html" with
78
+ table=data
79
+ striped=1
80
+ height=400 %}
81
+ {% endcomponent %}
82
+ {% else %}
83
+ <p class="text-font-subtle-light dark:text-font-subtle-dark">No users yet</p>
84
+ {% endif %}
85
+ {% endcomponent %}
86
+ </div>
87
+
88
+ <!-- Charts using Component Class -->
89
+ <div>
90
+ <h2 class="text-xl font-semibold mb-4">Analytics (Component Class)</h2>
91
+
92
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-6">
93
+ <!-- User Registrations Chart -->
94
+ {% component "unfold/components/card.html" with title="User Registrations" component_class="ChartsComponent" days=7 %}
95
+ {% if data.registrations %}
96
+ {% component "unfold/components/chart/line.html" with
97
+ data=data.registrations
98
+ height=300 %}
99
+ {% endcomponent %}
100
+ {% else %}
101
+ <p class="text-font-subtle-light dark:text-font-subtle-dark">No data available</p>
102
+ {% endif %}
103
+ {% endcomponent %}
104
+
105
+ <!-- User Activity Chart -->
106
+ {% component "unfold/components/card.html" with title="User Activity" component_class="ChartsComponent" days=7 %}
107
+ {% if data.activity %}
108
+ {% component "unfold/components/chart/bar.html" with
109
+ data=data.activity
110
+ height=300 %}
111
+ {% endcomponent %}
112
+ {% else %}
113
+ <p class="text-font-subtle-light dark:text-font-subtle-dark">No data available</p>
114
+ {% endif %}
115
+ {% endcomponent %}
116
+ </div>
117
+ </div>
118
+
119
+ <!-- Activity Tracker using Component Class -->
120
+ <div>
121
+ <h2 class="text-xl font-semibold mb-4">Activity Tracker (Component Class)</h2>
122
+
123
+ {% component "unfold/components/card.html" with title="365 Day Heatmap" component_class="ActivityTrackerComponent" %}
124
+ {% if data %}
125
+ {% component "unfold/components/tracker.html" with data=data %}
126
+ {% endcomponent %}
127
+ {% else %}
128
+ <p class="text-font-subtle-light dark:text-font-subtle-dark">No activity data</p>
129
+ {% endif %}
130
+ {% endcomponent %}
131
+ </div>
132
+ </div>
133
+
134
+ <!--
135
+ How Component Classes Work:
136
+
137
+ 1. Template specifies: component_class="SystemMetricsComponent"
138
+ 2. Unfold finds registered component by name
139
+ 3. Component's get_context_data() is called
140
+ 4. Data is fetched and returned
141
+ 5. Template receives data and renders
142
+
143
+ Comparison with Section-Based Approach:
144
+
145
+ Section-Based (current):
146
+ - Section class prepares all data
147
+ - Template receives pre-processed data
148
+ - Single render call for entire section
149
+
150
+ Component Classes:
151
+ - Each component fetches its own data
152
+ - More granular, reusable components
153
+ - Multiple component renders per page
154
+
155
+ Both approaches are valid - choose based on needs!
156
+ -->
@@ -3,42 +3,70 @@
3
3
  {% load unfold %}
4
4
 
5
5
  {% block overview_tab %}
6
- {% include 'admin/snippets/tabs/overview_tab.html' %}
6
+ {% if overview_section %}
7
+ {{ overview_section|safe }}
8
+ {% else %}
9
+ {% include 'admin/snippets/tabs/overview_tab.html' %}
10
+ {% endif %}
7
11
  {% endblock %}
8
12
 
9
13
  {% block zones_tab %}
10
- {% include 'admin/snippets/zones/zones_table.html' %}
14
+ {% if zones_section %}
15
+ {{ zones_section|safe }}
16
+ {% else %}
17
+ {% include 'admin/snippets/zones/zones_table.html' %}
18
+ {% endif %}
11
19
  {% endblock %}
12
20
 
13
21
  {% block users_tab %}
14
- {% include 'admin/snippets/tabs/users_tab.html' %}
22
+ {% if users_section %}
23
+ {{ users_section|safe }}
24
+ {% else %}
25
+ {% include 'admin/snippets/tabs/users_tab.html' %}
26
+ {% endif %}
15
27
  {% endblock %}
16
28
 
17
29
  {% block system_tab %}
18
- <div class="space-y-8">
19
- <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark mb-4">
20
- System Management
21
- </h2>
22
-
23
- <!-- System Health -->
24
- {% include 'admin/snippets/components/system_health.html' %}
25
-
26
- <!-- System Metrics -->
27
- {% include 'admin/snippets/components/system_metrics.html' %}
28
-
29
- <!-- Activity Tracker -->
30
- {% include 'admin/snippets/components/activity_tracker.html' %}
31
- </div>
30
+ {% if system_section %}
31
+ {{ system_section|safe }}
32
+ {% else %}
33
+ <div class="space-y-8">
34
+ <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark mb-4">
35
+ System Management
36
+ </h2>
37
+
38
+ <!-- System Health -->
39
+ {% include 'admin/snippets/components/system_health.html' %}
40
+
41
+ <!-- System Metrics -->
42
+ {% include 'admin/snippets/components/system_metrics.html' %}
43
+
44
+ <!-- Activity Tracker -->
45
+ {% include 'admin/snippets/components/activity_tracker.html' %}
46
+ </div>
47
+ {% endif %}
32
48
  {% endblock %}
33
49
 
34
50
  {% block stats_tab %}
35
- {% include 'admin/snippets/tabs/stats_tab.html' %}
51
+ {% if stats_section %}
52
+ {{ stats_section|safe }}
53
+ {% else %}
54
+ {% include 'admin/snippets/tabs/stats_tab.html' %}
55
+ {% endif %}
36
56
  {% endblock %}
37
57
 
38
58
  {% block app_stats_tab %}
39
- {% include 'admin/snippets/tabs/app_stats_tab.html' with stats_groups=stats_groups %}
59
+ {% if app_stats_section %}
60
+ {{ app_stats_section|safe }}
61
+ {% else %}
62
+ {% include 'admin/snippets/tabs/app_stats_tab.html' with stats_groups=stats_groups %}
63
+ {% endif %}
40
64
  {% endblock %}
41
65
 
42
66
  {% block commands_tab %}
43
- {% include 'admin/snippets/tabs/commands_tab.html' %}
67
+ {% if commands_section %}
68
+ {{ commands_section|safe }}
69
+ {% else %}
70
+ {% include 'admin/snippets/tabs/commands_tab.html' %}
71
+ {% endif %}
44
72
  {% endblock %}
@@ -0,0 +1,106 @@
1
+ {% extends 'admin/layouts/base_dashboard.html' %}
2
+
3
+ {% load unfold %}
4
+
5
+ {% block tabs %}
6
+ <button type="button" data-tab="0" class="px-4 py-3 rounded-t-lg focus:outline-none font-semibold active">
7
+ <span class="material-icons mr-2 align-middle text-sm">dashboard</span>
8
+ Overview
9
+ </button>
10
+ <button type="button" data-tab="1" class="px-4 py-3 rounded-t-lg focus:outline-none">
11
+ <span class="material-icons mr-2 align-middle text-sm">public</span>
12
+ API Zones
13
+ </button>
14
+ <button type="button" data-tab="2" class="px-4 py-3 rounded-t-lg focus:outline-none">
15
+ <span class="material-icons mr-2 align-middle text-sm">people</span>
16
+ Users
17
+ </button>
18
+ <button type="button" data-tab="3" class="px-4 py-3 rounded-t-lg focus:outline-none">
19
+ <span class="material-icons mr-2 align-middle text-sm">settings</span>
20
+ System
21
+ </button>
22
+ <button type="button" data-tab="4" class="px-4 py-3 rounded-t-lg focus:outline-none">
23
+ <span class="material-icons mr-2 align-middle text-sm">analytics</span>
24
+ Statistics
25
+ </button>
26
+ <button type="button" data-tab="5" class="px-4 py-3 rounded-t-lg focus:outline-none">
27
+ <span class="material-icons mr-2 align-middle text-sm">apps</span>
28
+ App Stats
29
+ </button>
30
+ <button type="button" data-tab="6" class="px-4 py-3 rounded-t-lg focus:outline-none">
31
+ <span class="material-icons mr-2 align-middle text-sm">terminal</span>
32
+ Commands
33
+ </button>
34
+ {% endblock %}
35
+
36
+ {% block tab_content %}
37
+ <!-- Overview Tab -->
38
+ <div class="tab-content active" data-tab="0">
39
+ {% if overview_section %}
40
+ {{ overview_section|safe }}
41
+ {% else %}
42
+ {% include 'admin/snippets/tabs/overview_tab.html' %}
43
+ {% endif %}
44
+ </div>
45
+
46
+ <!-- Zones Tab -->
47
+ <div class="tab-content" data-tab="1">
48
+ {% if zones_section %}
49
+ {{ zones_section|safe }}
50
+ {% else %}
51
+ {% include 'admin/snippets/zones/zones_table.html' %}
52
+ {% endif %}
53
+ </div>
54
+
55
+ <!-- Users Tab -->
56
+ <div class="tab-content" data-tab="2">
57
+ {% if users_section %}
58
+ {{ users_section|safe }}
59
+ {% else %}
60
+ {% include 'admin/snippets/tabs/users_tab.html' %}
61
+ {% endif %}
62
+ </div>
63
+
64
+ <!-- System Tab -->
65
+ <div class="tab-content" data-tab="3">
66
+ {% if system_section %}
67
+ {{ system_section|safe }}
68
+ {% else %}
69
+ <div class="space-y-8">
70
+ <h2 class="text-xl font-semibold text-font-important-light dark:text-font-important-dark mb-4">
71
+ System Management
72
+ </h2>
73
+ {% include 'admin/snippets/components/system_health.html' %}
74
+ {% include 'admin/snippets/components/system_metrics.html' %}
75
+ {% include 'admin/snippets/components/activity_tracker.html' %}
76
+ </div>
77
+ {% endif %}
78
+ </div>
79
+
80
+ <!-- Stats Tab -->
81
+ <div class="tab-content" data-tab="4">
82
+ {% if stats_section %}
83
+ {{ stats_section|safe }}
84
+ {% else %}
85
+ {% include 'admin/snippets/tabs/stats_tab.html' %}
86
+ {% endif %}
87
+ </div>
88
+
89
+ <!-- App Stats Tab -->
90
+ <div class="tab-content" data-tab="5">
91
+ {% if app_stats_section %}
92
+ {{ app_stats_section|safe }}
93
+ {% else %}
94
+ {% include 'admin/snippets/tabs/app_stats_tab.html' with stats_groups=stats_groups %}
95
+ {% endif %}
96
+ </div>
97
+
98
+ <!-- Commands Tab -->
99
+ <div class="tab-content" data-tab="6">
100
+ {% if commands_section %}
101
+ {{ commands_section|safe }}
102
+ {% else %}
103
+ {% include 'admin/snippets/tabs/commands_tab.html' %}
104
+ {% endif %}
105
+ </div>
106
+ {% endblock %}
@@ -0,0 +1,60 @@
1
+ {% extends 'admin/base.html' %}
2
+
3
+ {% load static %}
4
+ {% load unfold %}
5
+
6
+ {% block extrahead %}
7
+ {{ block.super }}
8
+ <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
9
+ <link rel="stylesheet" href="{% static 'admin/css/dashboard.css' %}">
10
+ {% endblock %}
11
+
12
+ {% block breadcrumbs %}{% endblock %}
13
+
14
+ {% block title %}
15
+ {% if subtitle %}{{ subtitle }} | {% endif %}
16
+ {{ title }} | {{ site_title|default:'Django site admin' }}
17
+ {% endblock %}
18
+
19
+ {% block branding %}
20
+ {% include "unfold/helpers/site_branding.html" %}
21
+ {% endblock %}
22
+
23
+ {% block content %}
24
+ <!-- Main Container -->
25
+ {% component "unfold/components/container.html" %}
26
+ <!-- Tab Navigation -->
27
+ {% block tab_navigation %}
28
+ <div class="flex gap-1 mb-6" id="dashboard-tabs">
29
+ {% block tabs %}{% endblock %}
30
+ </div>
31
+ {% endblock %}
32
+
33
+ <!-- Tab Content -->
34
+ <div class="flex flex-col gap-5">
35
+ {% block tab_content %}{% endblock %}
36
+ </div>
37
+
38
+ <!-- Footer -->
39
+ {% block dashboard_footer %}
40
+ <div class="text-center py-8 border-t theme-border mt-5">
41
+ <p class="text-sm text-gray-500 dark:text-gray-400">
42
+ {% load django_cfg %}
43
+ <a href="{% lib_site_url %}" class="text-blue-600 hover:text-blue-700 font-medium">
44
+ {% lib_name %}
45
+ </a>
46
+ <span class="mx-2">•</span>
47
+ <a href="{% lib_health_url %}" class="text-blue-600 hover:text-blue-700">
48
+ System Health
49
+ </a>
50
+ </p>
51
+ </div>
52
+ {% endblock %}
53
+ {% endcomponent %}
54
+ {% endblock %}
55
+
56
+ {% block footer %}
57
+ {{ block.super }}
58
+ <script src="{% static 'admin/js/dashboard.js' %}"></script>
59
+ <script src="{% static 'admin/js/commands.js' %}"></script>
60
+ {% endblock %}
@@ -441,29 +441,10 @@
441
441
  {% endblock %}
442
442
 
443
443
  {% block content %}
444
- <!-- Dashboard Header -->
445
- <div class="mb-8">
446
- <h1 class="text-3xl font-bold text-gray-900 dark:text-white">
447
- {{ dashboard_title|default:"Dashboard" }}
448
- </h1>
449
- <p class="mt-2 text-gray-700 dark:text-gray-300">
450
- Welcome to the administration dashboard
451
- </p>
452
- </div>
453
-
454
444
  <!-- Main Dashboard Container -->
455
445
  {% component "unfold/components/container.html" %}
456
- <!-- Navigation and Filters Row -->
457
- <div class="flex flex-col gap-4 mb-8">
458
- {% component "unfold/components/navigation.html" with items=navigation %}
459
- {% endcomponent %}
460
-
461
- {% component "unfold/components/navigation.html" with class="ml-auto" items=filters %}
462
- {% endcomponent %}
463
- </div>
464
-
465
446
  <!-- Tabs Navigation -->
466
- <div class="flex gap-1 mb-6" id="dashboard-tabs">
447
+ <div class="flex gap-1 mb-4" id="dashboard-tabs">
467
448
  <button
468
449
  type="button"
469
450
  data-tab="0"