django-cfg 1.3.11__py3-none-any.whl → 1.4.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/accounts/admin/inlines.py +11 -5
- 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/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/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/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_cfg_rpc_client/README.md +346 -0
- django_cfg/modules/django_cfg_rpc_client/__init__.py +51 -0
- django_cfg/modules/django_cfg_rpc_client/client.py +540 -0
- django_cfg/modules/django_cfg_rpc_client/config.py +207 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/README.md +517 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/__init__.py +11 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/apps.py +22 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/monitor.py +435 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/static/django_cfg_rpc_dashboard/js/dashboard.js +373 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/base.html +76 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/templates/django_cfg_rpc_dashboard/dashboard.html +200 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/urls.py +22 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/urls_admin.py +9 -0
- django_cfg/modules/django_cfg_rpc_client/dashboard/views.py +251 -0
- django_cfg/modules/django_cfg_rpc_client/exceptions.py +201 -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_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/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.0.dist-info/METADATA +920 -0
- {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/RECORD +425 -196
- 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.11.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.11.dist-info → django_cfg-1.4.0.dist-info}/WHEEL +0 -0
- {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.3.11.dist-info → django_cfg-1.4.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,141 @@
|
|
1
|
+
"""
|
2
|
+
Django TEMPLATES settings generator.
|
3
|
+
|
4
|
+
Handles template configuration with auto-discovery of django-cfg app templates.
|
5
|
+
Size: ~90 lines (focused on template settings)
|
6
|
+
"""
|
7
|
+
|
8
|
+
from typing import Dict, Any, List, TYPE_CHECKING
|
9
|
+
from pathlib import Path
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
from ...base.config_model import DjangoConfig
|
13
|
+
|
14
|
+
|
15
|
+
class TemplateSettingsGenerator:
|
16
|
+
"""
|
17
|
+
Generates Django TEMPLATES setting.
|
18
|
+
|
19
|
+
Responsibilities:
|
20
|
+
- Configure Django template backend
|
21
|
+
- Set up template directories
|
22
|
+
- Auto-discover django-cfg app templates
|
23
|
+
- Configure context processors
|
24
|
+
|
25
|
+
Example:
|
26
|
+
```python
|
27
|
+
generator = TemplateSettingsGenerator(config)
|
28
|
+
settings = generator.generate()
|
29
|
+
```
|
30
|
+
"""
|
31
|
+
|
32
|
+
def __init__(self, config: "DjangoConfig"):
|
33
|
+
"""
|
34
|
+
Initialize generator with configuration.
|
35
|
+
|
36
|
+
Args:
|
37
|
+
config: DjangoConfig instance
|
38
|
+
"""
|
39
|
+
self.config = config
|
40
|
+
|
41
|
+
def generate(self) -> Dict[str, Any]:
|
42
|
+
"""
|
43
|
+
Generate TEMPLATES setting.
|
44
|
+
|
45
|
+
Returns:
|
46
|
+
Dictionary with TEMPLATES configuration
|
47
|
+
|
48
|
+
Example:
|
49
|
+
>>> generator = TemplateSettingsGenerator(config)
|
50
|
+
>>> settings = generator.generate()
|
51
|
+
>>> "TEMPLATES" in settings
|
52
|
+
True
|
53
|
+
"""
|
54
|
+
template_dirs = self._discover_template_directories()
|
55
|
+
|
56
|
+
return {
|
57
|
+
"TEMPLATES": [
|
58
|
+
{
|
59
|
+
"BACKEND": "django.template.backends.django.DjangoTemplates",
|
60
|
+
"DIRS": template_dirs,
|
61
|
+
"APP_DIRS": True,
|
62
|
+
"OPTIONS": {
|
63
|
+
"context_processors": [
|
64
|
+
"django.template.context_processors.debug",
|
65
|
+
"django.template.context_processors.request",
|
66
|
+
"django.contrib.auth.context_processors.auth",
|
67
|
+
"django.contrib.messages.context_processors.messages",
|
68
|
+
],
|
69
|
+
},
|
70
|
+
},
|
71
|
+
]
|
72
|
+
}
|
73
|
+
|
74
|
+
def _discover_template_directories(self) -> List[Path]:
|
75
|
+
"""
|
76
|
+
Discover template directories from django-cfg and project.
|
77
|
+
|
78
|
+
Returns:
|
79
|
+
List of Path objects pointing to template directories
|
80
|
+
"""
|
81
|
+
template_dirs = []
|
82
|
+
|
83
|
+
# Add project templates directory
|
84
|
+
project_templates = self.config.base_dir / "templates"
|
85
|
+
template_dirs.append(project_templates)
|
86
|
+
|
87
|
+
# Add django-cfg templates directory
|
88
|
+
django_cfg_templates = Path(__file__).parent.parent.parent.parent / "templates"
|
89
|
+
template_dirs.append(django_cfg_templates)
|
90
|
+
|
91
|
+
# Auto-discover app template directories
|
92
|
+
app_templates = self._discover_app_templates()
|
93
|
+
template_dirs.extend(app_templates)
|
94
|
+
|
95
|
+
return template_dirs
|
96
|
+
|
97
|
+
def _discover_app_templates(self) -> List[Path]:
|
98
|
+
"""
|
99
|
+
Auto-discover template directories from django-cfg apps.
|
100
|
+
|
101
|
+
Looks for:
|
102
|
+
- app/templates/
|
103
|
+
- app/admin_interface/templates/
|
104
|
+
- app/frontend/templates/
|
105
|
+
|
106
|
+
Returns:
|
107
|
+
List of discovered template directory paths
|
108
|
+
"""
|
109
|
+
app_templates = []
|
110
|
+
|
111
|
+
# Find django-cfg apps directory
|
112
|
+
django_cfg_dir = Path(__file__).parent.parent.parent.parent
|
113
|
+
apps_dir = django_cfg_dir / 'apps'
|
114
|
+
|
115
|
+
if not apps_dir.exists():
|
116
|
+
return app_templates
|
117
|
+
|
118
|
+
# Scan each app directory
|
119
|
+
for app_dir in apps_dir.iterdir():
|
120
|
+
if not app_dir.is_dir():
|
121
|
+
continue
|
122
|
+
|
123
|
+
# Skip special directories
|
124
|
+
if app_dir.name.startswith(('@', '_', '.')):
|
125
|
+
continue
|
126
|
+
|
127
|
+
# Look for common template directory patterns
|
128
|
+
possible_template_dirs = [
|
129
|
+
app_dir / 'templates',
|
130
|
+
app_dir / 'admin_interface' / 'templates',
|
131
|
+
app_dir / 'frontend' / 'templates',
|
132
|
+
]
|
133
|
+
|
134
|
+
for template_dir in possible_template_dirs:
|
135
|
+
if template_dir.exists() and template_dir.is_dir():
|
136
|
+
app_templates.append(template_dir)
|
137
|
+
|
138
|
+
return app_templates
|
139
|
+
|
140
|
+
|
141
|
+
__all__ = ["TemplateSettingsGenerator"]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"""
|
2
|
+
Data generators module.
|
3
|
+
|
4
|
+
Contains generators for data-related Django settings:
|
5
|
+
- Database configuration
|
6
|
+
- Cache backends
|
7
|
+
"""
|
8
|
+
|
9
|
+
from .database import DatabaseSettingsGenerator
|
10
|
+
from .cache import CacheSettingsGenerator
|
11
|
+
|
12
|
+
__all__ = [
|
13
|
+
"DatabaseSettingsGenerator",
|
14
|
+
"CacheSettingsGenerator",
|
15
|
+
]
|
@@ -0,0 +1,132 @@
|
|
1
|
+
"""
|
2
|
+
Cache settings generator.
|
3
|
+
|
4
|
+
Handles CACHES configuration and session storage.
|
5
|
+
Size: ~90 lines (focused on cache settings)
|
6
|
+
"""
|
7
|
+
|
8
|
+
from typing import Dict, Any, TYPE_CHECKING
|
9
|
+
import logging
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
from ...base.config_model import DjangoConfig
|
13
|
+
|
14
|
+
logger = logging.getLogger(__name__)
|
15
|
+
|
16
|
+
|
17
|
+
class CacheSettingsGenerator:
|
18
|
+
"""
|
19
|
+
Generates Django CACHES settings.
|
20
|
+
|
21
|
+
Responsibilities:
|
22
|
+
- Convert CacheConfig models to Django format
|
23
|
+
- Provide default cache backend
|
24
|
+
- Configure sessions cache
|
25
|
+
- Auto-discover additional cache backends
|
26
|
+
|
27
|
+
Example:
|
28
|
+
```python
|
29
|
+
generator = CacheSettingsGenerator(config)
|
30
|
+
settings = generator.generate()
|
31
|
+
```
|
32
|
+
"""
|
33
|
+
|
34
|
+
def __init__(self, config: "DjangoConfig"):
|
35
|
+
"""
|
36
|
+
Initialize generator with configuration.
|
37
|
+
|
38
|
+
Args:
|
39
|
+
config: DjangoConfig instance
|
40
|
+
"""
|
41
|
+
self.config = config
|
42
|
+
|
43
|
+
def generate(self) -> Dict[str, Any]:
|
44
|
+
"""
|
45
|
+
Generate cache settings.
|
46
|
+
|
47
|
+
Returns:
|
48
|
+
Dictionary with CACHES and session configuration
|
49
|
+
|
50
|
+
Example:
|
51
|
+
>>> generator = CacheSettingsGenerator(config)
|
52
|
+
>>> settings = generator.generate()
|
53
|
+
>>> "CACHES" in settings
|
54
|
+
True
|
55
|
+
"""
|
56
|
+
settings = {}
|
57
|
+
caches = {}
|
58
|
+
|
59
|
+
# Default cache - always provide one
|
60
|
+
if self.config.cache_default:
|
61
|
+
caches["default"] = self.config.cache_default.to_django_config(
|
62
|
+
self.config.env_mode,
|
63
|
+
self.config.debug,
|
64
|
+
"default"
|
65
|
+
)
|
66
|
+
else:
|
67
|
+
# Create default cache backend
|
68
|
+
caches["default"] = self._get_default_cache_config()
|
69
|
+
|
70
|
+
# Sessions cache
|
71
|
+
if self.config.cache_sessions:
|
72
|
+
caches["sessions"] = self.config.cache_sessions.to_django_config(
|
73
|
+
self.config.env_mode,
|
74
|
+
self.config.debug,
|
75
|
+
"sessions"
|
76
|
+
)
|
77
|
+
|
78
|
+
# Configure Django to use cache for sessions
|
79
|
+
settings["SESSION_ENGINE"] = "django.contrib.sessions.backends.cache"
|
80
|
+
settings["SESSION_CACHE_ALIAS"] = "sessions"
|
81
|
+
|
82
|
+
# Auto-discover additional cache backends
|
83
|
+
additional_caches = self._discover_additional_caches()
|
84
|
+
caches.update(additional_caches)
|
85
|
+
|
86
|
+
if caches:
|
87
|
+
settings["CACHES"] = caches
|
88
|
+
|
89
|
+
return settings
|
90
|
+
|
91
|
+
def _get_default_cache_config(self) -> Dict[str, Any]:
|
92
|
+
"""
|
93
|
+
Get default cache configuration.
|
94
|
+
|
95
|
+
Returns:
|
96
|
+
Dictionary with default cache backend configuration
|
97
|
+
"""
|
98
|
+
from ....models.infrastructure.cache import CacheConfig
|
99
|
+
|
100
|
+
default_cache = CacheConfig()
|
101
|
+
return default_cache.to_django_config(
|
102
|
+
self.config.env_mode,
|
103
|
+
self.config.debug,
|
104
|
+
"default"
|
105
|
+
)
|
106
|
+
|
107
|
+
def _discover_additional_caches(self) -> Dict[str, Dict[str, Any]]:
|
108
|
+
"""
|
109
|
+
Auto-discover additional cache backends.
|
110
|
+
|
111
|
+
Looks for attributes starting with "cache_" (excluding cache_default and cache_sessions).
|
112
|
+
|
113
|
+
Returns:
|
114
|
+
Dictionary of additional cache configurations
|
115
|
+
"""
|
116
|
+
additional_caches = {}
|
117
|
+
|
118
|
+
for attr_name in dir(self.config):
|
119
|
+
if attr_name.startswith("cache_") and attr_name not in ["cache_default", "cache_sessions"]:
|
120
|
+
cache_obj = getattr(self.config, attr_name)
|
121
|
+
if hasattr(cache_obj, "to_django_config"):
|
122
|
+
cache_alias = attr_name.replace("cache_", "")
|
123
|
+
additional_caches[cache_alias] = cache_obj.to_django_config(
|
124
|
+
self.config.env_mode,
|
125
|
+
self.config.debug,
|
126
|
+
cache_alias
|
127
|
+
)
|
128
|
+
|
129
|
+
return additional_caches
|
130
|
+
|
131
|
+
|
132
|
+
__all__ = ["CacheSettingsGenerator"]
|
@@ -0,0 +1,117 @@
|
|
1
|
+
"""
|
2
|
+
Database settings generator.
|
3
|
+
|
4
|
+
Handles DATABASES configuration and routing.
|
5
|
+
Size: ~100 lines (focused on database settings)
|
6
|
+
"""
|
7
|
+
|
8
|
+
from typing import Dict, Any, TYPE_CHECKING
|
9
|
+
import logging
|
10
|
+
|
11
|
+
if TYPE_CHECKING:
|
12
|
+
from ...base.config_model import DjangoConfig
|
13
|
+
|
14
|
+
logger = logging.getLogger(__name__)
|
15
|
+
|
16
|
+
|
17
|
+
class DatabaseSettingsGenerator:
|
18
|
+
"""
|
19
|
+
Generates Django DATABASES settings.
|
20
|
+
|
21
|
+
Responsibilities:
|
22
|
+
- Convert DatabaseConfig models to Django format
|
23
|
+
- Apply smart defaults per database engine
|
24
|
+
- Configure database routing
|
25
|
+
|
26
|
+
Example:
|
27
|
+
```python
|
28
|
+
generator = DatabaseSettingsGenerator(config)
|
29
|
+
settings = generator.generate()
|
30
|
+
```
|
31
|
+
"""
|
32
|
+
|
33
|
+
def __init__(self, config: "DjangoConfig"):
|
34
|
+
"""
|
35
|
+
Initialize generator with configuration.
|
36
|
+
|
37
|
+
Args:
|
38
|
+
config: DjangoConfig instance
|
39
|
+
"""
|
40
|
+
self.config = config
|
41
|
+
|
42
|
+
def generate(self) -> Dict[str, Any]:
|
43
|
+
"""
|
44
|
+
Generate database settings.
|
45
|
+
|
46
|
+
Returns:
|
47
|
+
Dictionary with DATABASES and routing configuration
|
48
|
+
|
49
|
+
Example:
|
50
|
+
>>> generator = DatabaseSettingsGenerator(config)
|
51
|
+
>>> settings = generator.generate()
|
52
|
+
>>> "DATABASES" in settings
|
53
|
+
True
|
54
|
+
"""
|
55
|
+
settings = {}
|
56
|
+
|
57
|
+
if not self.config.databases:
|
58
|
+
return settings
|
59
|
+
|
60
|
+
# Convert database configurations
|
61
|
+
django_databases = {}
|
62
|
+
for alias, db_config in self.config.databases.items():
|
63
|
+
django_databases[alias] = db_config.to_django_config()
|
64
|
+
|
65
|
+
settings["DATABASES"] = django_databases
|
66
|
+
|
67
|
+
# Apply database defaults for each database based on its engine
|
68
|
+
from ....utils.smart_defaults import SmartDefaults
|
69
|
+
|
70
|
+
for alias, db_config in self.config.databases.items():
|
71
|
+
db_defaults = SmartDefaults.get_database_defaults(
|
72
|
+
self.config.env_mode,
|
73
|
+
self.config.debug,
|
74
|
+
db_config.engine
|
75
|
+
)
|
76
|
+
if db_defaults:
|
77
|
+
# Merge defaults with existing configuration
|
78
|
+
for key, value in db_defaults.items():
|
79
|
+
if key == "OPTIONS":
|
80
|
+
# Merge OPTIONS dictionaries
|
81
|
+
existing_options = django_databases[alias].get("OPTIONS", {})
|
82
|
+
merged_options = {**value, **existing_options}
|
83
|
+
django_databases[alias]["OPTIONS"] = merged_options
|
84
|
+
elif key not in django_databases[alias]:
|
85
|
+
django_databases[alias][key] = value
|
86
|
+
|
87
|
+
# Configure database routing if needed
|
88
|
+
routing_settings = self._generate_routing_settings()
|
89
|
+
settings.update(routing_settings)
|
90
|
+
|
91
|
+
return settings
|
92
|
+
|
93
|
+
def _generate_routing_settings(self) -> Dict[str, Any]:
|
94
|
+
"""
|
95
|
+
Generate database routing configuration.
|
96
|
+
|
97
|
+
Returns:
|
98
|
+
Dictionary with routing settings
|
99
|
+
"""
|
100
|
+
routing_rules = {}
|
101
|
+
|
102
|
+
# Check if any database has routing rules
|
103
|
+
for alias, db_config in self.config.databases.items():
|
104
|
+
if db_config.has_routing_rules():
|
105
|
+
for app in db_config.apps:
|
106
|
+
routing_rules[app] = alias
|
107
|
+
|
108
|
+
if not routing_rules:
|
109
|
+
return {}
|
110
|
+
|
111
|
+
return {
|
112
|
+
"DATABASE_ROUTERS": ["django_cfg.routing.routers.DatabaseRouter"],
|
113
|
+
"DATABASE_ROUTING_RULES": routing_rules,
|
114
|
+
}
|
115
|
+
|
116
|
+
|
117
|
+
__all__ = ["DatabaseSettingsGenerator"]
|
@@ -0,0 +1,92 @@
|
|
1
|
+
"""
|
2
|
+
Django settings generation for django_cfg.
|
3
|
+
|
4
|
+
Main facade for settings generation.
|
5
|
+
|
6
|
+
Following CRITICAL_REQUIREMENTS.md:
|
7
|
+
- No raw Dict/Any usage
|
8
|
+
- Proper type annotations
|
9
|
+
- Comprehensive error handling
|
10
|
+
- Performance-aware generation
|
11
|
+
"""
|
12
|
+
|
13
|
+
from typing import Dict, List, Any, TYPE_CHECKING
|
14
|
+
import logging
|
15
|
+
|
16
|
+
from django_cfg.core.exceptions import ConfigurationError
|
17
|
+
|
18
|
+
if TYPE_CHECKING:
|
19
|
+
from ..base.config_model import DjangoConfig
|
20
|
+
|
21
|
+
logger = logging.getLogger(__name__)
|
22
|
+
|
23
|
+
|
24
|
+
class SettingsGenerator:
|
25
|
+
"""
|
26
|
+
Generates complete Django settings from DjangoConfig instances.
|
27
|
+
|
28
|
+
Converts type-safe Pydantic configuration models into Django-compatible
|
29
|
+
settings dictionaries with intelligent defaults and validation.
|
30
|
+
|
31
|
+
This is a facade class that delegates to SettingsOrchestrator for
|
32
|
+
actual generation.
|
33
|
+
|
34
|
+
Example:
|
35
|
+
```python
|
36
|
+
from django_cfg import DjangoConfig
|
37
|
+
from django_cfg.core.generation import SettingsGenerator
|
38
|
+
|
39
|
+
config = DjangoConfig(project_name="MyProject", secret_key="x"*50)
|
40
|
+
settings = SettingsGenerator.generate(config)
|
41
|
+
```
|
42
|
+
"""
|
43
|
+
|
44
|
+
@classmethod
|
45
|
+
def generate(cls, config: "DjangoConfig") -> Dict[str, Any]:
|
46
|
+
"""
|
47
|
+
Generate complete Django settings dictionary.
|
48
|
+
|
49
|
+
Args:
|
50
|
+
config: DjangoConfig instance
|
51
|
+
|
52
|
+
Returns:
|
53
|
+
Complete Django settings dictionary
|
54
|
+
|
55
|
+
Raises:
|
56
|
+
ConfigurationError: If settings generation fails
|
57
|
+
|
58
|
+
Example:
|
59
|
+
>>> from django_cfg import DjangoConfig
|
60
|
+
>>> config = DjangoConfig(project_name="Test", secret_key="x"*50)
|
61
|
+
>>> settings = SettingsGenerator.generate(config)
|
62
|
+
>>> "SECRET_KEY" in settings
|
63
|
+
True
|
64
|
+
"""
|
65
|
+
from .orchestrator import SettingsOrchestrator
|
66
|
+
|
67
|
+
orchestrator = SettingsOrchestrator(config)
|
68
|
+
return orchestrator.generate()
|
69
|
+
|
70
|
+
@classmethod
|
71
|
+
def validate_generated_settings(cls, settings: Dict[str, Any]) -> List[str]:
|
72
|
+
"""
|
73
|
+
Validate generated Django settings.
|
74
|
+
|
75
|
+
Args:
|
76
|
+
settings: Generated Django settings
|
77
|
+
|
78
|
+
Returns:
|
79
|
+
List of validation errors (empty if valid)
|
80
|
+
|
81
|
+
Example:
|
82
|
+
>>> settings = {"SECRET_KEY": "x"*50, "DEBUG": True}
|
83
|
+
>>> errors = SettingsGenerator.validate_generated_settings(settings)
|
84
|
+
>>> if errors:
|
85
|
+
... print("Validation errors:", errors)
|
86
|
+
"""
|
87
|
+
from .orchestrator import SettingsOrchestrator
|
88
|
+
|
89
|
+
return SettingsOrchestrator.validate_settings(settings)
|
90
|
+
|
91
|
+
|
92
|
+
__all__ = ["SettingsGenerator"]
|
@@ -0,0 +1,21 @@
|
|
1
|
+
"""
|
2
|
+
Integration generators module.
|
3
|
+
|
4
|
+
Contains generators for third-party integrations and frameworks:
|
5
|
+
- Session configuration
|
6
|
+
- External services (Telegram, Unfold, Constance)
|
7
|
+
- API frameworks (JWT, DRF, Spectacular, Revolution)
|
8
|
+
- Background tasks (Dramatiq)
|
9
|
+
"""
|
10
|
+
|
11
|
+
from .sessions import SessionSettingsGenerator
|
12
|
+
from .third_party import ThirdPartyIntegrationsGenerator
|
13
|
+
from .api import APIFrameworksGenerator
|
14
|
+
from .tasks import TasksSettingsGenerator
|
15
|
+
|
16
|
+
__all__ = [
|
17
|
+
"SessionSettingsGenerator",
|
18
|
+
"ThirdPartyIntegrationsGenerator",
|
19
|
+
"APIFrameworksGenerator",
|
20
|
+
"TasksSettingsGenerator",
|
21
|
+
]
|