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
@@ -27,17 +27,46 @@ def dashboard_view(request):
|
|
27
27
|
from ..utils.simulator import TaskSimulator
|
28
28
|
simulator = TaskSimulator()
|
29
29
|
|
30
|
+
# Build navigation items for navbar
|
31
|
+
tasks_nav_items = [
|
32
|
+
{
|
33
|
+
'label': 'Task History',
|
34
|
+
'url': '/admin/django_dramatiq/task/',
|
35
|
+
'icon': '📜',
|
36
|
+
},
|
37
|
+
{
|
38
|
+
'label': 'Settings',
|
39
|
+
'url': '/admin/constance/config/',
|
40
|
+
'icon': '⚙️',
|
41
|
+
},
|
42
|
+
]
|
43
|
+
|
30
44
|
# Prepare context data
|
31
45
|
context = {
|
32
46
|
'queue_status': simulator.get_current_queue_status(),
|
33
47
|
'task_stats': simulator.get_current_task_statistics(),
|
48
|
+
'tasks_nav_items': tasks_nav_items,
|
34
49
|
}
|
35
|
-
|
50
|
+
|
36
51
|
return render(request, 'tasks/pages/dashboard.html', context)
|
37
52
|
|
38
53
|
except Exception as e:
|
39
54
|
logger.error(f"Dashboard view error: {e}")
|
40
55
|
|
56
|
+
# Build navigation items for navbar
|
57
|
+
tasks_nav_items = [
|
58
|
+
{
|
59
|
+
'label': 'Task History',
|
60
|
+
'url': '/admin/django_dramatiq/task/',
|
61
|
+
'icon': '📜',
|
62
|
+
},
|
63
|
+
{
|
64
|
+
'label': 'Settings',
|
65
|
+
'url': '/admin/constance/config/',
|
66
|
+
'icon': '⚙️',
|
67
|
+
},
|
68
|
+
]
|
69
|
+
|
41
70
|
# Provide fallback context for error cases
|
42
71
|
context = {
|
43
72
|
'queue_status': {
|
@@ -52,7 +81,8 @@ def dashboard_view(request):
|
|
52
81
|
'statistics': {'total': 0},
|
53
82
|
'recent_tasks': [],
|
54
83
|
'timestamp': None
|
55
|
-
}
|
84
|
+
},
|
85
|
+
'tasks_nav_items': tasks_nav_items,
|
56
86
|
}
|
57
|
-
|
87
|
+
|
58
88
|
return render(request, 'tasks/pages/dashboard.html', context)
|
django_cfg/apps/urls.py
CHANGED
@@ -54,7 +54,11 @@ def get_django_cfg_urlpatterns() -> List[URLPattern]:
|
|
54
54
|
|
55
55
|
if base_module.is_payments_enabled():
|
56
56
|
patterns.append(path('admin/django_cfg_payments/admin/', include('django_cfg.apps.payments.urls_admin')))
|
57
|
-
|
57
|
+
|
58
|
+
# RPC Dashboard - WebSocket & RPC activity monitoring
|
59
|
+
if base_module.is_rpc_enabled():
|
60
|
+
patterns.append(path('admin/rpc/', include('django_cfg.modules.django_ipc_client.dashboard.urls_admin')))
|
61
|
+
|
58
62
|
except Exception:
|
59
63
|
# Fallback: include all URLs if config is not available
|
60
64
|
# Note: This fallback should not be needed in production
|
django_cfg/cli/README.md
CHANGED
@@ -1,519 +1,105 @@
|
|
1
1
|
# 🚀 Django CFG CLI
|
2
2
|
|
3
|
-
|
3
|
+
Simple command-line interface for creating Django projects with django-cfg template from GitHub.
|
4
4
|
|
5
5
|
## 📦 Installation
|
6
6
|
|
7
|
-
### Requirements
|
8
|
-
|
9
|
-
- **Python 3.12+** - Modern Python features and performance improvements
|
10
|
-
- **Django 4.2+** - Latest stable Django version
|
11
|
-
- **Poetry** (recommended) or **pip** - Package management
|
12
|
-
|
13
|
-
### Install
|
14
|
-
|
15
7
|
```bash
|
16
8
|
pip install django-cfg
|
17
|
-
# or
|
18
|
-
poetry add django-cfg
|
19
9
|
```
|
20
10
|
|
21
|
-
|
22
|
-
|
23
|
-
## 🎯 Commands
|
24
|
-
|
25
|
-
### `django-cfg create-project`
|
11
|
+
## 🎯 Quick Start
|
26
12
|
|
27
|
-
|
28
|
-
|
29
|
-
- ✅ **Automatic structure creation** - `db/`, `cache/` directories
|
30
|
-
- ✅ **Dependency installation** - Poetry or pip
|
31
|
-
- ✅ **Run migrations** - ready database
|
32
|
-
- ✅ **Template cleaning** - no local development dependencies
|
33
|
-
- ✅ **Production-ready** - everything configured out of the box
|
34
|
-
|
35
|
-
#### Basic Usage
|
13
|
+
### Create a New Project
|
36
14
|
|
37
15
|
```bash
|
38
|
-
#
|
39
|
-
django-cfg create-project
|
16
|
+
# Extract to current directory
|
17
|
+
django-cfg create-project
|
40
18
|
|
41
|
-
#
|
42
|
-
django-cfg create-project
|
19
|
+
# Extract to specific directory
|
20
|
+
django-cfg create-project --path ./my-project/
|
43
21
|
|
44
|
-
#
|
45
|
-
django-cfg create-project
|
22
|
+
# Overwrite existing files
|
23
|
+
django-cfg create-project --force
|
46
24
|
```
|
47
25
|
|
48
|
-
|
49
|
-
|
50
|
-
```bash
|
51
|
-
# Skip dependency installation
|
52
|
-
django-cfg create-project "My Project" --no-deps
|
53
|
-
|
54
|
-
# Skip automatic setup (directories, migrations)
|
55
|
-
django-cfg create-project "My Project" --no-setup
|
26
|
+
### What It Does
|
56
27
|
|
57
|
-
|
58
|
-
django-cfg create-project "My Project" --force
|
28
|
+
Downloads the latest django-cfg template from GitHub (https://github.com/markolofsen/django-cfg) and extracts it to the specified location.
|
59
29
|
|
60
|
-
|
61
|
-
django-cfg create-project "My Project" --no-deps --no-setup
|
62
|
-
```
|
30
|
+
## 🔧 After Project Creation
|
63
31
|
|
64
|
-
|
32
|
+
1. **Install dependencies:**
|
33
|
+
```bash
|
34
|
+
poetry install # or: pip install -r requirements.txt
|
35
|
+
```
|
65
36
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
- `.gitignore` - proper exclusions
|
71
|
-
- `README.md` - project documentation
|
72
|
-
3. **Dependency installation** via Poetry or pip
|
73
|
-
4. **Run migrations** via `poetry run cli migrator` or `manage.py migrate`
|
74
|
-
5. **Ready project** for development
|
37
|
+
3. **Run migrations:**
|
38
|
+
```bash
|
39
|
+
python manage.py migrate
|
40
|
+
```
|
75
41
|
|
76
|
-
|
42
|
+
4. **Create superuser:**
|
43
|
+
```bash
|
44
|
+
python manage.py createsuperuser
|
45
|
+
```
|
77
46
|
|
78
|
-
|
47
|
+
5. **Run development server:**
|
48
|
+
```bash
|
49
|
+
python manage.py runserver
|
50
|
+
```
|
79
51
|
|
80
|
-
|
81
|
-
# Basic information
|
82
|
-
django-cfg info
|
52
|
+
## 💡 Features Included
|
83
53
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
-
|
90
|
-
-
|
91
|
-
-
|
92
|
-
-
|
93
|
-
-
|
94
|
-
- 📊 API & documentation (DRF, drf-spectacular)
|
95
|
-
- ⚡ Background tasks (dramatiq, redis)
|
96
|
-
- 🛠️ Development tools (ngrok)
|
54
|
+
- ✅ Type-safe configuration with Pydantic v2
|
55
|
+
- ✅ Twilio integration (WhatsApp, SMS, Email OTP)
|
56
|
+
- ✅ Email services with SendGrid
|
57
|
+
- ✅ Telegram bot integration
|
58
|
+
- ✅ Modern Unfold admin interface
|
59
|
+
- ✅ Auto-generated API documentation
|
60
|
+
- ✅ JWT authentication system
|
61
|
+
- ✅ Multi-database support with routing
|
62
|
+
- ✅ Background task processing with Dramatiq
|
63
|
+
- ✅ Docker deployment ready
|
97
64
|
|
98
|
-
##
|
65
|
+
## 📋 Commands
|
99
66
|
|
100
|
-
|
101
|
-
my_awesome_project/
|
102
|
-
├── 📁 api/ # django-cfg configuration
|
103
|
-
│ ├── config.py # Main configuration
|
104
|
-
│ ├── environment/ # Environment settings
|
105
|
-
│ │ ├── config.dev.yaml # Development
|
106
|
-
│ │ ├── config.prod.yaml # Production
|
107
|
-
│ │ └── config.test.yaml # Testing
|
108
|
-
│ ├── settings.py # Generated Django settings
|
109
|
-
│ └── urls.py # Root URLs
|
110
|
-
├── 📁 apps/ # Django applications
|
111
|
-
│ ├── blog/ # Blog example
|
112
|
-
│ ├── profiles/ # User profiles
|
113
|
-
│ └── shop/ # E-commerce example
|
114
|
-
├── 📁 core/ # Utilities and management commands
|
115
|
-
├── 📁 db/ # SQLite database (auto-created)
|
116
|
-
├── 📁 cache/ # Cache files (auto-created)
|
117
|
-
├── 📁 docker/ # Docker configuration
|
118
|
-
├── 📁 static/ # Static files
|
119
|
-
├── 📁 templates/ # Django templates
|
120
|
-
├── 📄 manage.py # Django management
|
121
|
-
├── 📄 cli.py # Extended CLI
|
122
|
-
├── 📄 pyproject.toml # Poetry config (cleaned from local-dev)
|
123
|
-
├── 📄 requirements.txt # pip dependencies
|
124
|
-
├── 📄 package.json # npm scripts
|
125
|
-
├── 📄 .gitignore # Git exclusions
|
126
|
-
└── 📄 README.md # Project documentation
|
127
|
-
```
|
67
|
+
### `create-project`
|
128
68
|
|
129
|
-
|
130
|
-
|
131
|
-
### 1. Create Project
|
69
|
+
Downloads and extracts the latest django-cfg template from GitHub.
|
132
70
|
|
133
71
|
```bash
|
134
|
-
django-cfg create-project
|
72
|
+
django-cfg create-project [OPTIONS]
|
135
73
|
```
|
136
74
|
|
137
|
-
**
|
138
|
-
|
139
|
-
|
140
|
-
📂 Extracting template from archive...
|
141
|
-
✅ Extracted 339 files from template
|
142
|
-
✅ Project 'My Blog' created successfully!
|
143
|
-
📁 Location: /current/dir/my_blog
|
144
|
-
|
145
|
-
🔧 Setting up project structure...
|
146
|
-
📁 Created database directory: db/
|
147
|
-
📁 Created cache directory: cache/
|
148
|
-
|
149
|
-
📦 Installing dependencies with Poetry...
|
150
|
-
✅ Dependencies installed successfully
|
151
|
-
|
152
|
-
🔄 Running initial project setup...
|
153
|
-
🔄 Running initial migrations...
|
154
|
-
✅ Initial migrations completed successfully
|
155
|
-
✅ Project is ready to use!
|
156
|
-
```
|
75
|
+
**Options:**
|
76
|
+
- `--path, -p PATH` - Directory where to extract the project (default: current directory)
|
77
|
+
- `--force, -f` - Overwrite existing files if they exist
|
157
78
|
|
158
|
-
###
|
79
|
+
### `info`
|
159
80
|
|
160
|
-
|
161
|
-
cd my_blog
|
162
|
-
```
|
163
|
-
|
164
|
-
### 3. Configure Settings
|
81
|
+
Shows information about django-cfg installation.
|
165
82
|
|
166
83
|
```bash
|
167
|
-
|
168
|
-
cp api/environment/config.dev.yaml api/environment/config.local.yaml
|
169
|
-
# Edit config.local.yaml with your settings
|
170
|
-
```
|
171
|
-
|
172
|
-
### 4. Create Superuser
|
173
|
-
|
174
|
-
```bash
|
175
|
-
poetry run python manage.py createsuperuser
|
176
|
-
```
|
177
|
-
|
178
|
-
### 5. Run Server
|
179
|
-
|
180
|
-
```bash
|
181
|
-
poetry run cli runserver
|
182
|
-
# or
|
183
|
-
poetry run python manage.py runserver
|
184
|
-
```
|
185
|
-
|
186
|
-
## 🔧 Configuration
|
187
|
-
|
188
|
-
Edit `api/environment/config.local.yaml`:
|
189
|
-
|
190
|
-
```yaml
|
191
|
-
# Basic settings
|
192
|
-
debug: true
|
193
|
-
secret_key: "your-secret-key-here"
|
194
|
-
|
195
|
-
# Database
|
196
|
-
database:
|
197
|
-
default:
|
198
|
-
engine: "sqlite"
|
199
|
-
name: "db/db.sqlite3"
|
200
|
-
|
201
|
-
# API keys
|
202
|
-
api_keys:
|
203
|
-
twilio:
|
204
|
-
account_sid: "ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
205
|
-
auth_token: "your_twilio_auth_token"
|
206
|
-
verify_service_sid: "VAxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
|
207
|
-
sendgrid_api_key: "SG.your_sendgrid_api_key"
|
208
|
-
openai_api_key: "sk-your_openai_api_key"
|
209
|
-
|
210
|
-
# Email settings
|
211
|
-
email:
|
212
|
-
default_from: "noreply@yourapp.com"
|
213
|
-
backend: "sendgrid"
|
214
|
-
|
215
|
-
# Telegram bot
|
216
|
-
telegram:
|
217
|
-
bot_token: "your_telegram_bot_token"
|
218
|
-
chat_id: 123456789
|
219
|
-
|
220
|
-
# Redis (optional)
|
221
|
-
redis:
|
222
|
-
default:
|
223
|
-
host: "localhost"
|
224
|
-
port: 6379
|
225
|
-
db: 0
|
226
|
-
```
|
227
|
-
|
228
|
-
## 📱 Service Usage
|
229
|
-
|
230
|
-
### Twilio OTP
|
231
|
-
|
232
|
-
```python
|
233
|
-
from django_cfg import send_sms_otp, send_whatsapp_otp, send_email_otp, verify_otp
|
234
|
-
|
235
|
-
# SMS OTP
|
236
|
-
success, message = send_sms_otp("+1234567890")
|
237
|
-
|
238
|
-
# WhatsApp OTP with SMS fallback
|
239
|
-
success, message = send_whatsapp_otp("+1234567890", fallback_to_sms=True)
|
240
|
-
|
241
|
-
# Email OTP
|
242
|
-
success, message, code = send_email_otp("user@example.com")
|
243
|
-
|
244
|
-
# Verify OTP
|
245
|
-
is_valid, result = verify_otp("+1234567890", "123456")
|
246
|
-
```
|
247
|
-
|
248
|
-
### Telegram Notifications
|
249
|
-
|
250
|
-
```python
|
251
|
-
from django_cfg import send_telegram_message
|
252
|
-
|
253
|
-
send_telegram_message("New user registered!")
|
254
|
-
```
|
255
|
-
|
256
|
-
## 🐳 Docker Deployment
|
257
|
-
|
258
|
-
```bash
|
259
|
-
# Build and run
|
260
|
-
docker-compose up -d
|
261
|
-
|
262
|
-
# Production with nginx
|
263
|
-
docker-compose -f docker-compose.yml -f docker-compose.nginx.yml up -d
|
264
|
-
```
|
265
|
-
|
266
|
-
## 🛠️ Management Commands
|
267
|
-
|
268
|
-
### Poetry Commands
|
269
|
-
|
270
|
-
```bash
|
271
|
-
# Install dependencies
|
272
|
-
poetry install
|
273
|
-
|
274
|
-
# Activate environment
|
275
|
-
poetry shell
|
276
|
-
|
277
|
-
# Run server
|
278
|
-
poetry run cli runserver
|
279
|
-
|
280
|
-
# Run with ngrok
|
281
|
-
poetry run cli runserver-ngrok
|
282
|
-
|
283
|
-
# Migrations
|
284
|
-
poetry run cli migrator
|
285
|
-
|
286
|
-
# Background tasks
|
287
|
-
poetry run cli rundramatiq
|
288
|
-
```
|
289
|
-
|
290
|
-
### npm Scripts
|
291
|
-
|
292
|
-
```bash
|
293
|
-
# Development
|
294
|
-
npm run dev
|
295
|
-
|
296
|
-
# Development with ngrok
|
297
|
-
npm run dev:ngrok
|
298
|
-
|
299
|
-
# Migrations
|
300
|
-
npm run migrate
|
301
|
-
|
302
|
-
# Generate OpenAPI clients
|
303
|
-
npm run generate
|
304
|
-
|
305
|
-
# Background tasks
|
306
|
-
npm run tasks:worker
|
307
|
-
npm run tasks:status
|
308
|
-
npm run tasks:clear
|
309
|
-
```
|
310
|
-
|
311
|
-
## 🎯 Usage Examples
|
312
|
-
|
313
|
-
### Creating Different Project Types
|
314
|
-
|
315
|
-
```bash
|
316
|
-
# Blog
|
317
|
-
django-cfg create-project "My Blog"
|
318
|
-
|
319
|
-
# E-commerce
|
320
|
-
django-cfg create-project "My Shop"
|
321
|
-
|
322
|
-
# API-only project
|
323
|
-
django-cfg create-project "My API"
|
324
|
-
|
325
|
-
# Corporate application
|
326
|
-
django-cfg create-project "Corporate App"
|
327
|
-
```
|
328
|
-
|
329
|
-
### Different Installation Methods
|
330
|
-
|
331
|
-
```bash
|
332
|
-
# Full automatic installation (recommended)
|
333
|
-
django-cfg create-project "My Project"
|
334
|
-
|
335
|
-
# pip only
|
336
|
-
django-cfg create-project "My Project" --use-pip
|
337
|
-
|
338
|
-
# No automatic setup
|
339
|
-
django-cfg create-project "My Project" --no-setup
|
340
|
-
|
341
|
-
# Files only, no dependencies
|
342
|
-
django-cfg create-project "My Project" --no-deps --no-setup
|
343
|
-
|
344
|
-
# Specific directory
|
345
|
-
django-cfg create-project "My Project" --path ~/projects/
|
346
|
-
|
347
|
-
# Overwrite existing
|
348
|
-
django-cfg create-project "My Project" --force
|
349
|
-
```
|
350
|
-
|
351
|
-
## 🔍 Useful Commands
|
352
|
-
|
353
|
-
```bash
|
354
|
-
# System information
|
355
|
-
django-cfg info --verbose
|
356
|
-
|
357
|
-
# Command help
|
358
|
-
django-cfg --help
|
359
|
-
django-cfg create-project --help
|
360
|
-
|
361
|
-
# Version
|
362
|
-
django-cfg --version
|
363
|
-
|
364
|
-
# Project structure
|
365
|
-
npm run tree
|
366
|
-
|
367
|
-
# Task status
|
368
|
-
npm run tasks:status
|
369
|
-
|
370
|
-
# Clear cache
|
371
|
-
python manage.py clear_cache
|
372
|
-
```
|
373
|
-
|
374
|
-
## 🌟 Django-CFG Features
|
375
|
-
|
376
|
-
### 🔧 Configuration
|
377
|
-
- **Type-safe settings** with Pydantic v2
|
378
|
-
- **YAML configurations** for different environments
|
379
|
-
- **Automatic validation** of settings
|
380
|
-
- **Environment variables** with fallback
|
381
|
-
|
382
|
-
### 📱 Integrations
|
383
|
-
- **Twilio** - SMS, WhatsApp, Email OTP
|
384
|
-
- **SendGrid** - email services
|
385
|
-
- **Telegram Bot** - notifications and alerts
|
386
|
-
- **OpenAI** - AI integration
|
387
|
-
- **Redis** - caching and sessions
|
388
|
-
|
389
|
-
### 🎨 UI/UX
|
390
|
-
- **Django Unfold** - modern admin interface
|
391
|
-
- **Django Constance** - real-time settings
|
392
|
-
- **Automatic documentation** OpenAPI/Swagger
|
393
|
-
- **JWT authentication** out of the box
|
394
|
-
|
395
|
-
### ⚡ Performance
|
396
|
-
- **Dramatiq** - background tasks
|
397
|
-
- **Redis** - caching
|
398
|
-
- **Multi-database** with automatic routing
|
399
|
-
- **Optimized settings** for production
|
400
|
-
|
401
|
-
### 🐳 Deployment
|
402
|
-
- **Docker** ready configurations
|
403
|
-
- **Nginx** settings
|
404
|
-
- **Environment** management
|
405
|
-
- **Ready deployment scripts**
|
406
|
-
|
407
|
-
## 🐛 Troubleshooting
|
408
|
-
|
409
|
-
### Template Not Found
|
410
|
-
|
411
|
-
```bash
|
412
|
-
# Check installation
|
84
|
+
django-cfg info
|
413
85
|
django-cfg info --verbose
|
414
|
-
|
415
|
-
# Reinstall
|
416
|
-
pip uninstall django-cfg
|
417
|
-
pip install django-cfg
|
418
|
-
```
|
419
|
-
|
420
|
-
### Permission Errors
|
421
|
-
|
422
|
-
```bash
|
423
|
-
# Force overwrite
|
424
|
-
django-cfg create-project "My Project" --force
|
425
|
-
|
426
|
-
# Or remove directory manually
|
427
|
-
rm -rf my_project/
|
428
|
-
django-cfg create-project "My Project"
|
429
|
-
```
|
430
|
-
|
431
|
-
### Dependency Installation Errors
|
432
|
-
|
433
|
-
```bash
|
434
|
-
# Create without dependencies
|
435
|
-
django-cfg create-project "My Project" --no-deps
|
436
|
-
|
437
|
-
# Install manually
|
438
|
-
cd my_project/
|
439
|
-
poetry install # or pip install -r requirements.txt
|
440
86
|
```
|
441
87
|
|
442
|
-
|
443
|
-
|
444
|
-
```bash
|
445
|
-
# Create without auto-setup
|
446
|
-
django-cfg create-project "My Project" --no-setup
|
447
|
-
|
448
|
-
# Run migrations manually
|
449
|
-
cd my_project/
|
450
|
-
poetry run cli migrator
|
451
|
-
# or
|
452
|
-
python manage.py migrate
|
453
|
-
```
|
454
|
-
|
455
|
-
## 🤝 CLI Development
|
456
|
-
|
457
|
-
### Adding New Commands
|
458
|
-
|
459
|
-
1. Create command file in `src/django_cfg/cli/commands/`:
|
460
|
-
|
461
|
-
```python
|
462
|
-
# src/django_cfg/cli/commands/my_command.py
|
463
|
-
import click
|
464
|
-
from ..utils import get_package_info
|
465
|
-
|
466
|
-
@click.command()
|
467
|
-
@click.option("--option", help="Command option")
|
468
|
-
def my_command(option: str):
|
469
|
-
"""My custom command description."""
|
470
|
-
click.echo(f"Running my command with option: {option}")
|
471
|
-
```
|
472
|
-
|
473
|
-
2. Register in `src/django_cfg/cli/main.py`:
|
474
|
-
|
475
|
-
```python
|
476
|
-
from .commands.my_command import my_command
|
88
|
+
## 📚 Documentation
|
477
89
|
|
478
|
-
|
479
|
-
|
90
|
+
- **GitHub**: https://github.com/markolofsen/django-cfg
|
91
|
+
- **Issues**: https://github.com/markolofsen/django-cfg/issues
|
480
92
|
|
481
|
-
|
482
|
-
|
483
|
-
```python
|
484
|
-
from ..utils import (
|
485
|
-
get_package_info,
|
486
|
-
find_template_archive,
|
487
|
-
get_template_info,
|
488
|
-
check_dependencies,
|
489
|
-
validate_project_name
|
490
|
-
)
|
491
|
-
|
492
|
-
# Package information
|
493
|
-
info = get_package_info()
|
494
|
-
print(f"Version: {info['version']}")
|
495
|
-
|
496
|
-
# Find template archive
|
497
|
-
archive = find_template_archive()
|
498
|
-
if archive:
|
499
|
-
print(f"Template found: {archive}")
|
500
|
-
|
501
|
-
# Check dependencies
|
502
|
-
deps = check_dependencies({"django": "django"})
|
503
|
-
print(f"Django installed: {deps['django']}")
|
504
|
-
```
|
93
|
+
## 🌐 Developed by
|
505
94
|
|
506
|
-
|
95
|
+
**Unrealon.com** — Complex parsers on demand
|
507
96
|
|
508
|
-
|
509
|
-
- **GitHub**: https://github.com/markolofsen/django-cfg
|
510
|
-
- **PyPI**: https://pypi.org/project/django-cfg/
|
511
|
-
- **Examples**: https://github.com/markolofsen/django-cfg/tree/main/examples
|
97
|
+
https://unrealon.com
|
512
98
|
|
513
99
|
## 📄 License
|
514
100
|
|
515
|
-
MIT License
|
101
|
+
MIT License
|
516
102
|
|
517
103
|
---
|
518
104
|
|
519
|
-
**Powered by django-cfg** 🚀
|
105
|
+
**Powered by django-cfg** 🚀
|