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.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/accounts/admin/user_admin.py +39 -16
- django_cfg/apps/accounts/serializers/profile.py +1 -1
- django_cfg/apps/accounts/services/otp_service.py +18 -11
- django_cfg/apps/accounts/signals.py +15 -24
- django_cfg/apps/accounts/utils/notifications.py +217 -358
- django_cfg/apps/accounts/views/otp.py +2 -2
- django_cfg/apps/accounts/views/webhook.py +1 -1
- django_cfg/apps/agents/core/django_agent.py +1 -1
- django_cfg/apps/agents/examples/__init__.py +3 -0
- django_cfg/apps/agents/examples/simple_example.py +161 -0
- django_cfg/apps/api/commands/views.py +66 -83
- django_cfg/apps/api/health/drf_views.py +269 -0
- django_cfg/apps/api/health/serializers.py +45 -0
- django_cfg/apps/api/health/urls.py +6 -1
- django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
- django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
- django_cfg/apps/knowbase/admin/document_admin.py +136 -270
- django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
- django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
- django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
- django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
- django_cfg/apps/knowbase/config/constance_fields.py +1 -1
- django_cfg/apps/knowbase/config/settings.py +2 -2
- django_cfg/apps/knowbase/examples/__init__.py +3 -0
- django_cfg/apps/knowbase/examples/external_data_usage.py +191 -0
- django_cfg/apps/knowbase/mixins/__init__.py +19 -2
- django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
- django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
- django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
- django_cfg/apps/knowbase/mixins/creator.py +10 -10
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +199 -0
- django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
- django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
- django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
- django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
- django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
- django_cfg/apps/knowbase/mixins/service.py +2 -2
- django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
- django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
- django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
- django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
- django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
- django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
- django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
- django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
- django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
- django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
- django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
- django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
- django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
- django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
- django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
- django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
- django_cfg/apps/knowbase/services/embedding/models.py +18 -14
- django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
- django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
- django_cfg/apps/leads/tests.py +1 -1
- django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
- django_cfg/apps/payments/admin/balance_admin.py +1 -1
- django_cfg/apps/payments/admin/currencies_admin.py +1 -1
- django_cfg/apps/payments/admin/payments_admin.py +1 -1
- django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
- django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
- django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
- django_cfg/apps/payments/admin_interface/views/base.py +29 -2
- django_cfg/apps/payments/apps.py +1 -1
- django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
- django_cfg/apps/payments/config/helpers.py +3 -2
- django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
- django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
- django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
- django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
- django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
- django_cfg/apps/payments/management/commands/test_providers.py +1 -1
- django_cfg/apps/payments/middleware/api_access.py +1 -1
- django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
- django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
- django_cfg/apps/payments/models/balance.py +2 -2
- django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
- django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
- django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
- django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
- django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
- django_cfg/apps/payments/models/payments.py +2 -2
- django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
- django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
- django_cfg/apps/payments/services/core/base.py +1 -1
- django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
- django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
- django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
- django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
- django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
- django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
- django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
- django_cfg/apps/payments/services/core/payment_service.py +124 -612
- django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
- django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
- django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
- django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
- django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
- django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
- django_cfg/apps/payments/services/providers/base.py +1 -1
- django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
- django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
- django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
- django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
- django_cfg/apps/payments/services/providers/registry.py +1 -1
- django_cfg/apps/payments/services/providers/sync_service.py +1 -1
- django_cfg/apps/payments/signals/__init__.py +1 -1
- django_cfg/apps/payments/signals/api_key_signals.py +1 -1
- django_cfg/apps/payments/signals/balance_signals.py +1 -1
- django_cfg/apps/payments/signals/payment_signals.py +1 -1
- django_cfg/apps/payments/signals/subscription_signals.py +1 -1
- django_cfg/apps/payments/views/api/api_keys.py +1 -1
- django_cfg/apps/payments/views/api/balances.py +1 -1
- django_cfg/apps/payments/views/api/base.py +1 -1
- django_cfg/apps/payments/views/api/currencies.py +1 -1
- django_cfg/apps/payments/views/api/payments.py +1 -1
- django_cfg/apps/payments/views/api/subscriptions.py +1 -1
- django_cfg/apps/payments/views/api/webhooks.py +1 -1
- django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
- django_cfg/apps/payments/views/serializers/balances.py +1 -1
- django_cfg/apps/payments/views/serializers/currencies.py +1 -1
- django_cfg/apps/payments/views/serializers/payments.py +1 -1
- django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
- django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
- django_cfg/apps/support/admin/support_admin.py +21 -13
- django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
- django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
- django_cfg/apps/support/utils/support_email_service.py +1 -1
- django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
- django_cfg/apps/tasks/utils/simulator.py +1 -1
- django_cfg/apps/tasks/views/dashboard.py +33 -3
- django_cfg/apps/urls.py +5 -1
- django_cfg/cli/README.md +57 -471
- django_cfg/cli/commands/create_project.py +140 -529
- django_cfg/cli/main.py +13 -10
- django_cfg/core/__init__.py +63 -6
- django_cfg/core/base/__init__.py +5 -0
- django_cfg/core/base/config_model.py +652 -0
- django_cfg/core/builders/__init__.py +11 -0
- django_cfg/core/builders/apps_builder.py +258 -0
- django_cfg/core/builders/middleware_builder.py +115 -0
- django_cfg/core/builders/security_builder.py +96 -0
- django_cfg/core/config.py +20 -892
- django_cfg/core/constants.py +69 -0
- django_cfg/core/environment/__init__.py +9 -0
- django_cfg/core/exceptions.py +45 -298
- django_cfg/core/generation/__init__.py +51 -0
- django_cfg/core/generation/core_generators/__init__.py +0 -0
- django_cfg/core/generation/core_generators/settings.py +90 -0
- django_cfg/core/generation/core_generators/static.py +82 -0
- django_cfg/core/generation/core_generators/templates.py +141 -0
- django_cfg/core/generation/data_generators/__init__.py +15 -0
- django_cfg/core/generation/data_generators/cache.py +132 -0
- django_cfg/core/generation/data_generators/database.py +117 -0
- django_cfg/core/generation/generation.py +92 -0
- django_cfg/core/generation/integration_generators/__init__.py +21 -0
- django_cfg/core/generation/integration_generators/api.py +237 -0
- django_cfg/core/generation/integration_generators/sessions.py +65 -0
- django_cfg/core/generation/integration_generators/tailwind.py +54 -0
- django_cfg/core/generation/integration_generators/tasks.py +92 -0
- django_cfg/core/generation/integration_generators/third_party.py +144 -0
- django_cfg/core/generation/orchestrator.py +285 -0
- django_cfg/core/generation/protocols.py +30 -0
- django_cfg/core/generation/security_generators/__init__.py +0 -0
- django_cfg/core/generation/utility_generators/__init__.py +24 -0
- django_cfg/core/generation/utility_generators/email.py +58 -0
- django_cfg/core/generation/utility_generators/i18n.py +66 -0
- django_cfg/core/generation/utility_generators/limits.py +58 -0
- django_cfg/core/generation/utility_generators/logging.py +66 -0
- django_cfg/core/generation/utility_generators/security.py +101 -0
- django_cfg/core/generation/utils/__init__.py +0 -0
- django_cfg/core/generation/utils/helpers.py +32 -0
- django_cfg/core/integration/__init__.py +18 -25
- django_cfg/core/integration/display/startup.py +146 -133
- django_cfg/core/integration/url_integration.py +13 -2
- django_cfg/core/services/__init__.py +5 -0
- django_cfg/core/services/config_service.py +121 -0
- django_cfg/core/state/__init__.py +9 -0
- django_cfg/core/state/registry.py +84 -0
- django_cfg/core/types/__init__.py +15 -0
- django_cfg/core/types/aliases.py +15 -0
- django_cfg/core/types/enums.py +49 -0
- django_cfg/dashboard/DEBUG_README.md +105 -0
- django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
- django_cfg/dashboard/__init__.py +24 -0
- django_cfg/dashboard/components.py +308 -0
- django_cfg/dashboard/debug.py +176 -0
- django_cfg/dashboard/management/__init__.py +0 -0
- django_cfg/dashboard/management/commands/__init__.py +0 -0
- django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
- django_cfg/dashboard/sections/__init__.py +1 -0
- django_cfg/dashboard/sections/base.py +128 -0
- django_cfg/dashboard/sections/commands.py +32 -0
- django_cfg/dashboard/sections/overview.py +394 -0
- django_cfg/dashboard/sections/stats.py +48 -0
- django_cfg/dashboard/sections/system.py +73 -0
- django_cfg/management/commands/check_settings.py +6 -2
- django_cfg/management/commands/clear_constance.py +6 -1
- django_cfg/management/commands/create_token.py +5 -4
- django_cfg/management/commands/generate.py +5 -0
- django_cfg/management/commands/list_urls.py +7 -2
- django_cfg/management/commands/migrate_all.py +6 -2
- django_cfg/management/commands/migrator.py +6 -1
- django_cfg/management/commands/rundramatiq.py +6 -1
- django_cfg/management/commands/rundramatiq_simulator.py +11 -4
- django_cfg/management/commands/runserver_ngrok.py +9 -7
- django_cfg/management/commands/script.py +25 -21
- django_cfg/management/commands/show_config.py +6 -1
- django_cfg/management/commands/show_urls.py +8 -3
- django_cfg/management/commands/superuser.py +5 -4
- django_cfg/management/commands/task_clear.py +8 -3
- django_cfg/management/commands/task_status.py +8 -3
- django_cfg/management/commands/test_email.py +6 -1
- django_cfg/management/commands/test_telegram.py +6 -1
- django_cfg/management/commands/test_twilio.py +6 -1
- django_cfg/management/commands/tree.py +7 -4
- django_cfg/models/__init__.py +88 -3
- django_cfg/models/api/__init__.py +27 -0
- django_cfg/models/{api.py → api/config.py} +1 -1
- django_cfg/models/api/drf/__init__.py +21 -0
- django_cfg/models/api/drf/config.py +101 -0
- django_cfg/models/api/drf/redoc.py +31 -0
- django_cfg/models/api/drf/spectacular.py +129 -0
- django_cfg/models/api/drf/swagger.py +59 -0
- django_cfg/models/{api_keys.py → api/keys.py} +16 -6
- django_cfg/models/{limits.py → api/limits.py} +0 -1
- django_cfg/models/base/__init__.py +14 -0
- django_cfg/models/django/__init__.py +16 -0
- django_cfg/models/{constance.py → django/constance.py} +1 -1
- django_cfg/models/{environment.py → django/environment.py} +1 -1
- django_cfg/models/infrastructure/__init__.py +17 -0
- django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
- django_cfg/models/infrastructure/database/__init__.py +22 -0
- django_cfg/models/infrastructure/database/config.py +265 -0
- django_cfg/models/infrastructure/database/converters.py +91 -0
- django_cfg/models/infrastructure/database/parsers.py +96 -0
- django_cfg/models/infrastructure/database/routing.py +85 -0
- django_cfg/models/infrastructure/database/validators.py +170 -0
- django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
- django_cfg/models/{security.py → infrastructure/security.py} +2 -2
- django_cfg/models/ngrok/__init__.py +11 -0
- django_cfg/models/ngrok/auth.py +37 -0
- django_cfg/models/ngrok/config.py +77 -0
- django_cfg/models/ngrok/tunnel.py +35 -0
- django_cfg/models/payments/__init__.py +20 -0
- django_cfg/models/payments/api_keys.py +57 -0
- django_cfg/models/{payments.py → payments/config.py} +56 -154
- django_cfg/models/payments/providers/__init__.py +15 -0
- django_cfg/models/payments/providers/base.py +25 -0
- django_cfg/models/payments/providers/nowpayments.py +48 -0
- django_cfg/models/services/__init__.py +18 -0
- django_cfg/models/services/base.py +65 -0
- django_cfg/models/{email.py → services/email.py} +1 -1
- django_cfg/models/services/telegram.py +172 -0
- django_cfg/models/tasks/__init__.py +51 -0
- django_cfg/models/tasks/backends.py +250 -0
- django_cfg/models/tasks/config.py +314 -0
- django_cfg/models/tasks/utils.py +174 -0
- django_cfg/modules/base.py +18 -3
- django_cfg/modules/django_admin/decorators/actions.py +1 -1
- django_cfg/modules/django_admin/decorators/display.py +1 -1
- django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
- django_cfg/modules/django_currency/examples/__init__.py +3 -0
- django_cfg/modules/django_currency/examples/example_database_usage.py +144 -0
- django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
- django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
- django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
- django_cfg/modules/django_drf_theme/README.md +207 -0
- django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
- django_cfg/modules/django_drf_theme/__init__.py +23 -0
- django_cfg/modules/django_drf_theme/apps.py +15 -0
- django_cfg/modules/django_drf_theme/renderers.py +58 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
- django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
- django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
- django_cfg/modules/django_email/__init__.py +14 -0
- django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
- django_cfg/modules/django_email/utils.py +40 -0
- django_cfg/modules/django_health/__init__.py +9 -0
- django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
- django_cfg/modules/django_ipc_client/README.md +346 -0
- django_cfg/modules/django_ipc_client/__init__.py +51 -0
- django_cfg/modules/django_ipc_client/client.py +540 -0
- django_cfg/modules/django_ipc_client/config.py +207 -0
- django_cfg/modules/django_ipc_client/dashboard/README.md +517 -0
- django_cfg/modules/django_ipc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
- django_cfg/modules/django_ipc_client/dashboard/__init__.py +11 -0
- django_cfg/modules/django_ipc_client/dashboard/apps.py +22 -0
- django_cfg/modules/django_ipc_client/dashboard/monitor.py +435 -0
- django_cfg/modules/django_ipc_client/dashboard/static/django_ipc_dashboard/js/dashboard.js +373 -0
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/base.html +76 -0
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/dashboard.html +200 -0
- django_cfg/modules/django_ipc_client/dashboard/urls.py +22 -0
- django_cfg/modules/django_ipc_client/dashboard/urls_admin.py +9 -0
- django_cfg/modules/django_ipc_client/dashboard/views.py +251 -0
- django_cfg/modules/django_ipc_client/exceptions.py +201 -0
- django_cfg/modules/django_llm/llm/client.py +155 -550
- django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
- django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
- django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
- django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
- django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
- django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
- django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
- django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
- django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
- django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
- django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
- django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
- django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
- django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
- django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
- django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
- django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
- django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
- django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
- django_cfg/modules/django_llm/translator/translator.py +150 -603
- django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
- django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
- django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
- django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
- django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
- django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
- django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
- django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
- django_cfg/modules/django_logging/__init__.py +14 -0
- django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
- django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
- django_cfg/modules/django_ngrok/__init__.py +39 -0
- django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
- django_cfg/modules/django_rpc_old/POETRY.md +344 -0
- django_cfg/modules/django_rpc_old/README.md +397 -0
- django_cfg/modules/django_rpc_old/TESTING.md +358 -0
- django_cfg/modules/django_rpc_old/__init__.py +39 -0
- django_cfg/modules/django_rpc_old/client.py +531 -0
- django_cfg/modules/django_rpc_old/config.py +279 -0
- django_cfg/modules/django_rpc_old/exceptions.py +172 -0
- django_cfg/modules/django_tailwind/README.md +478 -0
- django_cfg/modules/django_tailwind/__init__.py +7 -0
- django_cfg/modules/django_tailwind/apps.py +10 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
- django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
- django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
- django_cfg/modules/django_tasks/__init__.py +29 -0
- django_cfg/modules/django_tasks/factory.py +127 -0
- django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
- django_cfg/modules/django_tasks/settings.py +107 -0
- django_cfg/modules/django_telegram/__init__.py +29 -0
- django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
- django_cfg/modules/django_telegram/utils.py +62 -0
- django_cfg/modules/django_twilio/__init__.py +54 -107
- django_cfg/modules/django_twilio/_imports.py +30 -0
- django_cfg/modules/django_twilio/base.py +192 -0
- django_cfg/modules/django_twilio/email_otp.py +227 -0
- django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
- django_cfg/modules/django_twilio/simple_service.py +1 -2
- django_cfg/modules/django_twilio/sms.py +94 -0
- django_cfg/modules/django_twilio/twilio_service.py +2 -3
- django_cfg/modules/django_twilio/unified.py +310 -0
- django_cfg/modules/django_twilio/utils.py +190 -0
- django_cfg/modules/django_twilio/whatsapp.py +137 -0
- django_cfg/modules/django_unfold/callbacks/base.py +198 -7
- django_cfg/modules/django_unfold/callbacks/main.py +102 -10
- django_cfg/modules/django_unfold/dashboard.py +65 -43
- django_cfg/modules/django_unfold/models/config.py +13 -12
- django_cfg/modules/django_unfold/models/navigation.py +8 -3
- django_cfg/modules/django_unfold/models/tabs.py +2 -2
- django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
- django_cfg/registry/core.py +24 -26
- django_cfg/registry/modules.py +5 -2
- django_cfg/registry/services.py +20 -3
- django_cfg/registry/third_party.py +8 -8
- django_cfg/static/admin/css/dashboard.css +260 -0
- django_cfg/static/admin/js/commands.js +171 -0
- django_cfg/static/admin/js/dashboard.js +126 -0
- django_cfg/templates/admin/components/management_commands.js +375 -0
- django_cfg/templates/admin/components/progress_bar.html +18 -23
- django_cfg/templates/admin/examples/component_class_example.html +156 -0
- django_cfg/templates/admin/index.html +48 -20
- django_cfg/templates/admin/index_new.html +106 -0
- django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
- django_cfg/templates/admin/sections/commands_section.html +626 -0
- django_cfg/templates/admin/sections/overview_section.html +112 -0
- django_cfg/templates/admin/sections/stats_section.html +35 -0
- django_cfg/templates/admin/sections/system_section.html +99 -0
- django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
- django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
- django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
- django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
- django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
- django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
- django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
- django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
- django_cfg/templatetags/django_cfg.py +7 -1
- django_cfg/utils/smart_defaults.py +4 -4
- django_cfg-1.4.3.dist-info/METADATA +533 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/RECORD +432 -195
- django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
- django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
- django_cfg/core/generation.py +0 -621
- django_cfg/management/commands/validate_config.py +0 -189
- django_cfg/models/database.py +0 -480
- django_cfg/models/drf.py +0 -272
- django_cfg/models/ngrok.py +0 -122
- django_cfg/models/services.py +0 -440
- django_cfg/models/tasks.py +0 -550
- django_cfg/modules/django_twilio/service.py +0 -942
- django_cfg/template_archive/django_sample.zip +0 -0
- django_cfg/templates/rest_framework/api.html +0 -12
- django_cfg/utils/toolkit.py +0 -703
- django_cfg-1.3.13.dist-info/METADATA +0 -1029
- /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
- /django_cfg/core/{environment.py → environment/detector.py} +0 -0
- /django_cfg/models/{cors.py → api/cors.py} +0 -0
- /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
- /django_cfg/models/{base.py → base/config.py} +0 -0
- /django_cfg/models/{cfg.py → base/module.py} +0 -0
- /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
- /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/WHEEL +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/licenses/LICENSE +0 -0
@@ -1,105 +1,191 @@
|
|
1
1
|
{% load unfold %}
|
2
2
|
|
3
3
|
<!-- System Metrics -->
|
4
|
-
<div class="
|
5
|
-
{%
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
4
|
+
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
|
5
|
+
{% if system_metrics %}
|
6
|
+
<!-- Database Status -->
|
7
|
+
{% if system_metrics.database %}
|
8
|
+
<div class="bg-gradient-to-br from-green-50 to-white dark:from-green-900/10 dark:to-gray-800 rounded-lg border border-green-200 dark:border-green-800 p-4 hover:shadow-lg hover:border-green-400 dark:hover:border-green-600 transition-all duration-200 group">
|
9
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
10
|
+
<span class="material-icons
|
11
|
+
{% if system_metrics.database.status == 'healthy' %}text-green-600 dark:text-green-400
|
12
|
+
{% elif system_metrics.database.status == 'warning' %}text-amber-600 dark:text-amber-400
|
13
|
+
{% else %}text-red-600 dark:text-red-400{% endif %} mr-2">storage</span>
|
14
|
+
Database
|
15
|
+
</h4>
|
16
|
+
<div class="flex items-center mb-3">
|
17
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">{{ system_metrics.database.type }}</span>
|
18
|
+
</div>
|
19
|
+
<div class="space-y-2">
|
20
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
21
|
+
<span>Connection Health</span>
|
22
|
+
<span class="font-semibold">{{ system_metrics.database.health_percentage }}%</span>
|
23
|
+
</div>
|
24
|
+
<div class="w-full bg-green-100 dark:bg-green-900/30 rounded-full h-2">
|
25
|
+
<div class="bg-green-600 dark:bg-green-500 h-2 rounded-full transition-all duration-300 group-hover:bg-green-700 dark:group-hover:bg-green-400" style="width: {{ system_metrics.database.health_percentage }}%"></div>
|
26
|
+
</div>
|
27
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">{{ system_metrics.database.description }}</p>
|
28
|
+
</div>
|
29
|
+
</div>
|
30
|
+
{% endif %}
|
24
31
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
32
|
+
<!-- Cache Status -->
|
33
|
+
{% if system_metrics.cache %}
|
34
|
+
<div class="bg-gradient-to-br from-blue-50 to-white dark:from-blue-900/10 dark:to-gray-800 rounded-lg border border-blue-200 dark:border-blue-800 p-4 hover:shadow-lg hover:border-blue-400 dark:hover:border-blue-600 transition-all duration-200 group">
|
35
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
36
|
+
<span class="material-icons
|
37
|
+
{% if system_metrics.cache.status == 'healthy' %}text-blue-600 dark:text-blue-400
|
38
|
+
{% elif system_metrics.cache.status == 'warning' %}text-amber-600 dark:text-amber-400
|
39
|
+
{% else %}text-red-600 dark:text-red-400{% endif %} mr-2">memory</span>
|
40
|
+
Cache
|
41
|
+
</h4>
|
42
|
+
<div class="flex items-center mb-3">
|
43
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">{{ system_metrics.cache.type }}</span>
|
44
|
+
</div>
|
45
|
+
<div class="space-y-2">
|
46
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
47
|
+
<span>Performance</span>
|
48
|
+
<span class="font-semibold">{{ system_metrics.cache.health_percentage }}%</span>
|
49
|
+
</div>
|
50
|
+
<div class="w-full bg-blue-100 dark:bg-blue-900/30 rounded-full h-2">
|
51
|
+
<div class="bg-blue-600 dark:bg-blue-500 h-2 rounded-full transition-all duration-300 group-hover:bg-blue-700 dark:group-hover:bg-blue-400" style="width: {{ system_metrics.cache.health_percentage }}%"></div>
|
52
|
+
</div>
|
53
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">{{ system_metrics.cache.description }}</p>
|
54
|
+
</div>
|
55
|
+
</div>
|
56
|
+
{% endif %}
|
40
57
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
58
|
+
<!-- Storage Status -->
|
59
|
+
{% if system_metrics.storage %}
|
60
|
+
<div class="bg-gradient-to-br from-amber-50 to-white dark:from-amber-900/10 dark:to-gray-800 rounded-lg border border-amber-200 dark:border-amber-800 p-4 hover:shadow-lg hover:border-amber-400 dark:hover:border-amber-600 transition-all duration-200 group">
|
61
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
62
|
+
<span class="material-icons
|
63
|
+
{% if system_metrics.storage.status == 'healthy' %}text-amber-600 dark:text-amber-400
|
64
|
+
{% elif system_metrics.storage.status == 'warning' %}text-orange-600 dark:text-orange-400
|
65
|
+
{% else %}text-gray-600 dark:text-gray-400{% endif %} mr-2">folder</span>
|
66
|
+
Storage
|
67
|
+
</h4>
|
68
|
+
<div class="flex items-center mb-3">
|
69
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">{{ system_metrics.storage.type }}</span>
|
70
|
+
</div>
|
71
|
+
<div class="space-y-2">
|
72
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
73
|
+
<span>Usage</span>
|
74
|
+
<span class="font-semibold">{{ system_metrics.storage.health_percentage }}%</span>
|
75
|
+
</div>
|
76
|
+
<div class="w-full bg-amber-100 dark:bg-amber-900/30 rounded-full h-2">
|
77
|
+
<div class="bg-amber-600 dark:bg-amber-500 h-2 rounded-full transition-all duration-300 group-hover:bg-amber-700 dark:group-hover:bg-amber-400" style="width: {{ system_metrics.storage.health_percentage }}%"></div>
|
78
|
+
</div>
|
79
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">{{ system_metrics.storage.description }}</p>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
{% endif %}
|
56
83
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
<div class="
|
77
|
-
|
78
|
-
|
79
|
-
</div>
|
80
|
-
{% include 'admin/components/progress_bar.html' with value=85 title="Connection Health" description="Healthy - 85%" %}
|
81
|
-
{% endcomponent %}
|
84
|
+
<!-- API Status -->
|
85
|
+
{% if system_metrics.api %}
|
86
|
+
<div class="bg-gradient-to-br from-purple-50 to-white dark:from-purple-900/10 dark:to-gray-800 rounded-lg border border-purple-200 dark:border-purple-800 p-4 hover:shadow-lg hover:border-purple-400 dark:hover:border-purple-600 transition-all duration-200 group">
|
87
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
88
|
+
<span class="material-icons
|
89
|
+
{% if system_metrics.api.status == 'healthy' %}text-purple-600 dark:text-purple-400
|
90
|
+
{% elif system_metrics.api.status == 'warning' %}text-amber-600 dark:text-amber-400
|
91
|
+
{% else %}text-red-600 dark:text-red-400{% endif %} mr-2">api</span>
|
92
|
+
API
|
93
|
+
</h4>
|
94
|
+
<div class="flex items-center mb-3">
|
95
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">{{ system_metrics.api.type }}</span>
|
96
|
+
</div>
|
97
|
+
<div class="space-y-2">
|
98
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
99
|
+
<span>URL Patterns</span>
|
100
|
+
<span class="font-semibold">{{ system_metrics.api.health_percentage }}%</span>
|
101
|
+
</div>
|
102
|
+
<div class="w-full bg-purple-100 dark:bg-purple-900/30 rounded-full h-2">
|
103
|
+
<div class="bg-purple-600 dark:bg-purple-500 h-2 rounded-full transition-all duration-300 group-hover:bg-purple-700 dark:group-hover:bg-purple-400" style="width: {{ system_metrics.api.health_percentage }}%"></div>
|
104
|
+
</div>
|
105
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">{{ system_metrics.api.description }}</p>
|
82
106
|
</div>
|
107
|
+
</div>
|
108
|
+
{% endif %}
|
109
|
+
{% else %}
|
110
|
+
<!-- Fallback static metrics -->
|
111
|
+
<div class="bg-gradient-to-br from-green-50 to-white dark:from-green-900/10 dark:to-gray-800 rounded-lg border border-green-200 dark:border-green-800 p-4 hover:shadow-lg hover:border-green-400 dark:hover:border-green-600 transition-all duration-200 group">
|
112
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
113
|
+
<span class="material-icons text-green-600 dark:text-green-400 mr-2">storage</span>
|
114
|
+
Database
|
115
|
+
</h4>
|
116
|
+
<div class="flex items-center mb-3">
|
117
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">PostgreSQL</span>
|
118
|
+
</div>
|
119
|
+
<div class="space-y-2">
|
120
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
121
|
+
<span>Connection Health</span>
|
122
|
+
<span class="font-semibold">85%</span>
|
123
|
+
</div>
|
124
|
+
<div class="w-full bg-green-100 dark:bg-green-900/30 rounded-full h-2">
|
125
|
+
<div class="bg-green-600 dark:bg-green-500 h-2 rounded-full transition-all duration-300 group-hover:bg-green-700 dark:group-hover:bg-green-400" style="width: 85%"></div>
|
126
|
+
</div>
|
127
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">Healthy - 85%</p>
|
128
|
+
</div>
|
129
|
+
</div>
|
83
130
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
{% endcomponent %}
|
131
|
+
<div class="bg-gradient-to-br from-blue-50 to-white dark:from-blue-900/10 dark:to-gray-800 rounded-lg border border-blue-200 dark:border-blue-800 p-4 hover:shadow-lg hover:border-blue-400 dark:hover:border-blue-600 transition-all duration-200 group">
|
132
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
133
|
+
<span class="material-icons text-blue-600 dark:text-blue-400 mr-2">memory</span>
|
134
|
+
Cache
|
135
|
+
</h4>
|
136
|
+
<div class="flex items-center mb-3">
|
137
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">Memory Cache</span>
|
92
138
|
</div>
|
139
|
+
<div class="space-y-2">
|
140
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
141
|
+
<span>Performance</span>
|
142
|
+
<span class="font-semibold">90%</span>
|
143
|
+
</div>
|
144
|
+
<div class="w-full bg-blue-100 dark:bg-blue-900/30 rounded-full h-2">
|
145
|
+
<div class="bg-blue-600 dark:bg-blue-500 h-2 rounded-full transition-all duration-300 group-hover:bg-blue-700 dark:group-hover:bg-blue-400" style="width: 90%"></div>
|
146
|
+
</div>
|
147
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">Optimal - 90%</p>
|
148
|
+
</div>
|
149
|
+
</div>
|
93
150
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
{% endcomponent %}
|
151
|
+
<div class="bg-gradient-to-br from-amber-50 to-white dark:from-amber-900/10 dark:to-gray-800 rounded-lg border border-amber-200 dark:border-amber-800 p-4 hover:shadow-lg hover:border-amber-400 dark:hover:border-amber-600 transition-all duration-200 group">
|
152
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
153
|
+
<span class="material-icons text-amber-600 dark:text-amber-400 mr-2">folder</span>
|
154
|
+
Storage
|
155
|
+
</h4>
|
156
|
+
<div class="flex items-center mb-3">
|
157
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">Disk Space</span>
|
102
158
|
</div>
|
103
|
-
|
104
|
-
|
159
|
+
<div class="space-y-2">
|
160
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
161
|
+
<span>Usage</span>
|
162
|
+
<span class="font-semibold">67%</span>
|
163
|
+
</div>
|
164
|
+
<div class="w-full bg-amber-100 dark:bg-amber-900/30 rounded-full h-2">
|
165
|
+
<div class="bg-amber-600 dark:bg-amber-500 h-2 rounded-full transition-all duration-300 group-hover:bg-amber-700 dark:group-hover:bg-amber-400" style="width: 67%"></div>
|
166
|
+
</div>
|
167
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">67% used (33% free)</p>
|
168
|
+
</div>
|
169
|
+
</div>
|
170
|
+
|
171
|
+
<div class="bg-gradient-to-br from-purple-50 to-white dark:from-purple-900/10 dark:to-gray-800 rounded-lg border border-purple-200 dark:border-purple-800 p-4 hover:shadow-lg hover:border-purple-400 dark:hover:border-purple-600 transition-all duration-200 group">
|
172
|
+
<h4 class="text-sm font-semibold text-gray-900 dark:text-gray-100 mb-3 flex items-center">
|
173
|
+
<span class="material-icons text-purple-600 dark:text-purple-400 mr-2">api</span>
|
174
|
+
API
|
175
|
+
</h4>
|
176
|
+
<div class="flex items-center mb-3">
|
177
|
+
<span class="text-sm text-gray-600 dark:text-gray-400">REST API</span>
|
178
|
+
</div>
|
179
|
+
<div class="space-y-2">
|
180
|
+
<div class="flex items-center justify-between text-xs text-gray-600 dark:text-gray-400">
|
181
|
+
<span>URL Patterns</span>
|
182
|
+
<span class="font-semibold">100%</span>
|
183
|
+
</div>
|
184
|
+
<div class="w-full bg-purple-100 dark:bg-purple-900/30 rounded-full h-2">
|
185
|
+
<div class="bg-purple-600 dark:bg-purple-500 h-2 rounded-full transition-all duration-300 group-hover:bg-purple-700 dark:group-hover:bg-purple-400" style="width: 100%"></div>
|
186
|
+
</div>
|
187
|
+
<p class="text-xs text-gray-500 dark:text-gray-400">All routes healthy</p>
|
188
|
+
</div>
|
189
|
+
</div>
|
190
|
+
{% endif %}
|
105
191
|
</div>
|
@@ -21,9 +21,9 @@
|
|
21
21
|
{% endfor %}
|
22
22
|
</tr>
|
23
23
|
</thead>
|
24
|
-
<tbody class="bg-white dark:bg-base-900 divide-y divide-base-200 dark:divide-base-700">
|
24
|
+
<tbody class="bg-white dark:bg-base-900 divide-y divide-base-200 dark:divide-base-700">
|
25
25
|
{% for row in zones_table.rows %}
|
26
|
-
<tr class="hover:bg-base-
|
26
|
+
<tr class="hover:bg-base-50 dark:hover:bg-base-700 transition-colors duration-150">
|
27
27
|
<td class="px-6 py-4 whitespace-nowrap">
|
28
28
|
<div class="flex items-center">
|
29
29
|
<div class="flex-shrink-0 mr-3">
|
@@ -34,11 +34,17 @@ def lib_health_url():
|
|
34
34
|
return LIB_HEALTH_URL
|
35
35
|
|
36
36
|
|
37
|
+
@register.simple_tag
|
38
|
+
def lib_subtitle():
|
39
|
+
"""Get the library subtitle/tagline."""
|
40
|
+
return "The AI-First Django Framework That Thinks For You"
|
41
|
+
|
42
|
+
|
37
43
|
@register.simple_tag
|
38
44
|
def project_name():
|
39
45
|
"""Get the project name from current config."""
|
40
46
|
# Lazy import to avoid AppRegistryNotReady error
|
41
|
-
from django_cfg.core.
|
47
|
+
from django_cfg.core.state import get_current_config
|
42
48
|
from django_cfg.config import LIB_NAME
|
43
49
|
|
44
50
|
# Try to get project name from current config
|
@@ -10,8 +10,6 @@ Following KISS principle:
|
|
10
10
|
from typing import Dict, Any, Optional, List
|
11
11
|
from pathlib import Path
|
12
12
|
|
13
|
-
from django_cfg.models.cache import CacheConfig
|
14
|
-
from django_cfg.models.services import EmailConfig
|
15
13
|
from django_cfg.core.exceptions import ConfigurationError
|
16
14
|
|
17
15
|
|
@@ -89,8 +87,8 @@ class SmartDefaults:
|
|
89
87
|
cors_allow_headers=None
|
90
88
|
) -> Dict[str, Any]:
|
91
89
|
"""Get security configuration defaults."""
|
92
|
-
from ..models.security import SecurityConfig
|
93
|
-
|
90
|
+
from ..models.infrastructure.security import SecurityConfig
|
91
|
+
|
94
92
|
# Base security settings
|
95
93
|
base_settings = {
|
96
94
|
'USE_TZ': True,
|
@@ -298,6 +296,7 @@ class SmartDefaults:
|
|
298
296
|
def configure_cache_backend(cache_config, environment: str, debug: bool):
|
299
297
|
"""Configure cache backend - simplified."""
|
300
298
|
if cache_config is None:
|
299
|
+
from django_cfg.models.infrastructure.cache import CacheConfig
|
301
300
|
return CacheConfig()
|
302
301
|
return cache_config
|
303
302
|
|
@@ -305,6 +304,7 @@ class SmartDefaults:
|
|
305
304
|
def configure_email_backend(email_config, environment: str, debug: bool):
|
306
305
|
"""Configure email backend - simplified."""
|
307
306
|
if email_config is None:
|
307
|
+
from django_cfg.models.services.email import EmailConfig
|
308
308
|
return EmailConfig()
|
309
309
|
return email_config
|
310
310
|
|