django-cfg 1.4.20__py3-none-any.whl ā 1.4.23__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- django_cfg/__init__.py +4 -4
- django_cfg/apps/accounts/__init__.py +1 -1
- django_cfg/apps/accounts/__models.py +30 -29
- django_cfg/apps/accounts/admin/__init__.py +14 -3
- django_cfg/apps/accounts/admin/activity_admin.py +19 -19
- django_cfg/apps/accounts/admin/filters.py +7 -6
- django_cfg/apps/accounts/admin/group_admin.py +10 -16
- django_cfg/apps/accounts/admin/inlines.py +21 -19
- django_cfg/apps/accounts/admin/otp_admin.py +12 -12
- django_cfg/apps/accounts/admin/registration_admin.py +24 -24
- django_cfg/apps/accounts/admin/resources.py +49 -48
- django_cfg/apps/accounts/admin/twilio_admin.py +37 -37
- django_cfg/apps/accounts/admin/user_admin.py +45 -41
- django_cfg/apps/accounts/management/commands/otp_test.py +11 -11
- django_cfg/apps/accounts/managers/__init__.py +1 -1
- django_cfg/apps/accounts/managers/user_manager.py +6 -7
- django_cfg/apps/accounts/migrations/0001_initial.py +3 -2
- django_cfg/apps/accounts/models/__init__.py +15 -16
- django_cfg/apps/accounts/models/activity.py +5 -5
- django_cfg/apps/accounts/models/integrations.py +15 -15
- django_cfg/apps/accounts/models/registration.py +3 -2
- django_cfg/apps/accounts/models/user.py +3 -2
- django_cfg/apps/accounts/serializers/__init__.py +10 -3
- django_cfg/apps/accounts/serializers/otp.py +5 -4
- django_cfg/apps/accounts/serializers/profile.py +4 -5
- django_cfg/apps/accounts/serializers/webhook.py +13 -13
- django_cfg/apps/accounts/services/activity_service.py +13 -12
- django_cfg/apps/accounts/services/otp_service.py +16 -14
- django_cfg/apps/accounts/signals.py +18 -16
- django_cfg/apps/accounts/urls.py +10 -5
- django_cfg/apps/accounts/utils/notifications.py +22 -22
- django_cfg/apps/accounts/views/__init__.py +1 -1
- django_cfg/apps/accounts/views/otp.py +15 -14
- django_cfg/apps/accounts/views/profile.py +14 -10
- django_cfg/apps/accounts/views/webhook.py +46 -48
- django_cfg/apps/agents/__init__.py +3 -3
- django_cfg/apps/agents/admin/__init__.py +1 -1
- django_cfg/apps/agents/admin/execution_admin.py +68 -72
- django_cfg/apps/agents/admin/registry_admin.py +50 -54
- django_cfg/apps/agents/admin/toolsets_admin.py +63 -67
- django_cfg/apps/agents/apps.py +3 -3
- django_cfg/apps/agents/core/__init__.py +4 -4
- django_cfg/apps/agents/core/dependencies.py +24 -23
- django_cfg/apps/agents/core/django_agent.py +41 -39
- django_cfg/apps/agents/core/exceptions.py +12 -12
- django_cfg/apps/agents/core/models.py +16 -15
- django_cfg/apps/agents/core/orchestrator.py +58 -58
- django_cfg/apps/agents/examples/simple_example.py +24 -19
- django_cfg/apps/agents/integration/__init__.py +1 -1
- django_cfg/apps/agents/integration/middleware.py +12 -11
- django_cfg/apps/agents/integration/registry.py +52 -49
- django_cfg/apps/agents/integration/signals.py +5 -5
- django_cfg/apps/agents/management/commands/create_agent.py +39 -38
- django_cfg/apps/agents/management/commands/orchestrator_status.py +40 -39
- django_cfg/apps/agents/managers/__init__.py +8 -3
- django_cfg/apps/agents/managers/execution.py +42 -41
- django_cfg/apps/agents/managers/registry.py +40 -39
- django_cfg/apps/agents/managers/toolsets.py +87 -86
- django_cfg/apps/agents/migrations/0001_initial.py +2 -1
- django_cfg/apps/agents/models/__init__.py +2 -2
- django_cfg/apps/agents/models/execution.py +43 -42
- django_cfg/apps/agents/models/registry.py +46 -45
- django_cfg/apps/agents/models/toolsets.py +63 -62
- django_cfg/apps/agents/patterns/__init__.py +5 -5
- django_cfg/apps/agents/patterns/content_agents.py +17 -16
- django_cfg/apps/agents/toolsets/__init__.py +3 -3
- django_cfg/apps/agents/toolsets/cache_toolset.py +56 -55
- django_cfg/apps/agents/toolsets/django_toolset.py +43 -42
- django_cfg/apps/agents/toolsets/file_toolset.py +64 -63
- django_cfg/apps/agents/toolsets/orm_toolset.py +75 -74
- django_cfg/apps/agents/urls.py +3 -2
- django_cfg/apps/api/commands/urls.py +1 -0
- django_cfg/apps/api/commands/views.py +23 -26
- django_cfg/apps/api/endpoints/checker.py +5 -4
- django_cfg/apps/api/endpoints/drf_views.py +2 -2
- django_cfg/apps/api/endpoints/tests.py +6 -5
- django_cfg/apps/api/endpoints/urls.py +2 -1
- django_cfg/apps/api/endpoints/views.py +1 -0
- django_cfg/apps/api/health/drf_views.py +6 -6
- django_cfg/apps/api/health/urls.py +2 -1
- django_cfg/apps/api/health/views.py +41 -41
- django_cfg/{modules/django_ipc_client ā apps/ipc}/__init__.py +6 -6
- django_cfg/apps/ipc/apps.py +28 -0
- django_cfg/apps/ipc/serializers/__init__.py +19 -0
- django_cfg/apps/ipc/serializers/serializers.py +229 -0
- django_cfg/apps/ipc/services/__init__.py +7 -0
- django_cfg/apps/ipc/services/client/__init__.py +23 -0
- django_cfg/{modules/django_ipc_client ā apps/ipc/services/client}/client.py +7 -6
- django_cfg/{modules/django_ipc_client ā apps/ipc/services/client}/exceptions.py +1 -1
- django_cfg/{modules/django_ipc_client/dashboard ā apps/ipc/services}/monitor.py +23 -5
- django_cfg/{modules/django_ipc_client/dashboard/static/django_ipc_dashboard/js/dashboard.js ā apps/ipc/static/django_cfg_ipc/js/dashboard.mjs} +131 -63
- django_cfg/{modules/django_ipc_client/dashboard/templates/django_ipc_dashboard ā apps/ipc/templates/django_cfg_ipc}/base.html +5 -10
- django_cfg/apps/ipc/templates/django_cfg_ipc/dashboard.html +202 -0
- django_cfg/apps/ipc/urls.py +21 -0
- django_cfg/apps/ipc/urls_admin.py +20 -0
- django_cfg/apps/ipc/views/__init__.py +8 -0
- django_cfg/apps/ipc/views/dashboard.py +15 -0
- django_cfg/apps/ipc/views/viewsets.py +245 -0
- django_cfg/apps/knowbase/admin/__init__.py +2 -2
- django_cfg/apps/knowbase/admin/actions/__init__.py +1 -1
- django_cfg/apps/knowbase/admin/actions/visibility_actions.py +2 -1
- django_cfg/apps/knowbase/admin/archive_admin.py +81 -84
- django_cfg/apps/knowbase/admin/chat_admin.py +70 -72
- django_cfg/apps/knowbase/admin/document_admin.py +10 -11
- django_cfg/apps/knowbase/admin/external_data_admin.py +69 -71
- django_cfg/apps/knowbase/admin/helpers/__init__.py +1 -1
- django_cfg/apps/knowbase/admin/helpers/configs.py +2 -2
- django_cfg/apps/knowbase/admin/helpers/statistics.py +1 -1
- django_cfg/apps/knowbase/apps.py +13 -13
- django_cfg/apps/knowbase/config/__init__.py +7 -6
- django_cfg/apps/knowbase/config/constance_fields.py +14 -12
- django_cfg/apps/knowbase/config/constance_settings.py +32 -31
- django_cfg/apps/knowbase/config/settings.py +28 -28
- django_cfg/apps/knowbase/examples/external_data_usage.py +35 -32
- django_cfg/apps/knowbase/management/commands/knowbase_stats.py +33 -32
- django_cfg/apps/knowbase/management/commands/setup_knowbase.py +11 -13
- django_cfg/apps/knowbase/managers/__init__.py +2 -2
- django_cfg/apps/knowbase/managers/archive.py +86 -85
- django_cfg/apps/knowbase/managers/base.py +5 -5
- django_cfg/apps/knowbase/managers/chat.py +29 -28
- django_cfg/apps/knowbase/managers/document.py +39 -39
- django_cfg/apps/knowbase/managers/external_data.py +74 -73
- django_cfg/apps/knowbase/migrations/0001_initial.py +2 -1
- django_cfg/apps/knowbase/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +2 -1
- django_cfg/apps/knowbase/migrations/0003_alter_documentarchive_archive_type.py +29 -0
- django_cfg/apps/knowbase/mixins/__init__.py +4 -4
- django_cfg/apps/knowbase/mixins/config/__init__.py +1 -1
- django_cfg/apps/knowbase/mixins/config/meta_config.py +1 -1
- django_cfg/apps/knowbase/mixins/config.py +19 -18
- django_cfg/apps/knowbase/mixins/creator.py +7 -7
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +29 -28
- django_cfg/apps/knowbase/mixins/external_data_mixin.py +6 -5
- django_cfg/apps/knowbase/mixins/generators/__init__.py +1 -1
- django_cfg/apps/knowbase/mixins/generators/content_generator.py +2 -2
- django_cfg/apps/knowbase/mixins/service.py +47 -45
- django_cfg/apps/knowbase/models/__init__.py +7 -7
- django_cfg/apps/knowbase/models/archive.py +72 -72
- django_cfg/apps/knowbase/models/base.py +12 -13
- django_cfg/apps/knowbase/models/chat.py +20 -19
- django_cfg/apps/knowbase/models/document.py +37 -35
- django_cfg/apps/knowbase/models/external_data.py +41 -42
- django_cfg/apps/knowbase/serializers/__init__.py +7 -7
- django_cfg/apps/knowbase/serializers/archive_serializers.py +50 -42
- django_cfg/apps/knowbase/serializers/chat_serializers.py +16 -15
- django_cfg/apps/knowbase/serializers/document_serializers.py +13 -12
- django_cfg/apps/knowbase/serializers/external_data_serializers.py +31 -31
- django_cfg/apps/knowbase/serializers/public_serializers.py +10 -9
- django_cfg/apps/knowbase/services/__init__.py +7 -7
- django_cfg/apps/knowbase/services/archive/__init__.py +7 -7
- django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +1 -1
- django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +1 -1
- django_cfg/apps/knowbase/services/archive/archive_service.py +109 -112
- django_cfg/apps/knowbase/services/archive/chunking/__init__.py +3 -3
- django_cfg/apps/knowbase/services/archive/chunking/base.py +1 -0
- django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +4 -3
- django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +5 -4
- django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +6 -5
- django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +4 -3
- django_cfg/apps/knowbase/services/archive/chunking_service.py +3 -7
- django_cfg/apps/knowbase/services/archive/context/__init__.py +1 -1
- django_cfg/apps/knowbase/services/archive/context/builders.py +2 -1
- django_cfg/apps/knowbase/services/archive/context/models.py +2 -1
- django_cfg/apps/knowbase/services/archive/exceptions.py +5 -5
- django_cfg/apps/knowbase/services/archive/extraction_service.py +111 -110
- django_cfg/apps/knowbase/services/archive/vectorization_service.py +80 -77
- django_cfg/apps/knowbase/services/base.py +11 -9
- django_cfg/apps/knowbase/services/chat_service.py +40 -39
- django_cfg/apps/knowbase/services/document_service.py +28 -27
- django_cfg/apps/knowbase/services/embedding/__init__.py +9 -9
- django_cfg/apps/knowbase/services/embedding/async_processor.py +38 -40
- django_cfg/apps/knowbase/services/embedding/batch_processor.py +45 -42
- django_cfg/apps/knowbase/services/embedding/batch_result.py +7 -6
- django_cfg/apps/knowbase/services/embedding/models.py +52 -51
- django_cfg/apps/knowbase/services/embedding/processors.py +24 -23
- django_cfg/apps/knowbase/services/embedding/utils.py +17 -17
- django_cfg/apps/knowbase/services/prompt_builder.py +24 -23
- django_cfg/apps/knowbase/services/search_service.py +52 -49
- django_cfg/apps/knowbase/signals/__init__.py +2 -5
- django_cfg/apps/knowbase/signals/archive_signals.py +35 -34
- django_cfg/apps/knowbase/signals/chat_signals.py +6 -5
- django_cfg/apps/knowbase/signals/document_signals.py +22 -22
- django_cfg/apps/knowbase/signals/external_data_signals.py +22 -22
- django_cfg/apps/knowbase/tasks/__init__.py +6 -7
- django_cfg/apps/knowbase/tasks/archive_tasks.py +41 -41
- django_cfg/apps/knowbase/tasks/document_processing.py +49 -44
- django_cfg/apps/knowbase/tasks/external_data_tasks.py +46 -44
- django_cfg/apps/knowbase/tasks/maintenance.py +26 -24
- django_cfg/apps/knowbase/urls.py +3 -2
- django_cfg/apps/knowbase/urls_admin.py +6 -3
- django_cfg/apps/knowbase/urls_system.py +4 -5
- django_cfg/apps/knowbase/utils/chunk_settings.py +22 -20
- django_cfg/apps/knowbase/utils/text_processing.py +76 -75
- django_cfg/apps/knowbase/utils/validation.py +9 -9
- django_cfg/apps/knowbase/views/__init__.py +5 -5
- django_cfg/apps/knowbase/views/archive_views.py +90 -87
- django_cfg/apps/knowbase/views/base.py +9 -12
- django_cfg/apps/knowbase/views/chat_views.py +35 -32
- django_cfg/apps/knowbase/views/document_views.py +27 -28
- django_cfg/apps/knowbase/views/public_views.py +19 -19
- django_cfg/apps/leads/admin/leads_admin.py +41 -45
- django_cfg/apps/leads/admin/resources.py +14 -14
- django_cfg/apps/leads/admin.py +7 -9
- django_cfg/apps/leads/apps.py +1 -1
- django_cfg/apps/leads/models.py +17 -17
- django_cfg/apps/leads/serializers.py +5 -4
- django_cfg/apps/leads/signals.py +7 -7
- django_cfg/apps/leads/tests.py +47 -47
- django_cfg/apps/leads/urls.py +2 -2
- django_cfg/apps/leads/views.py +11 -11
- django_cfg/apps/maintenance/__init__.py +3 -3
- django_cfg/apps/maintenance/admin/__init__.py +1 -1
- django_cfg/apps/maintenance/admin/api_key_admin.py +36 -36
- django_cfg/apps/maintenance/admin/log_admin.py +35 -37
- django_cfg/apps/maintenance/admin/scheduled_admin.py +47 -51
- django_cfg/apps/maintenance/admin/site_admin.py +49 -52
- django_cfg/apps/maintenance/apps.py +2 -2
- django_cfg/apps/maintenance/management/commands/maintenance.py +53 -52
- django_cfg/apps/maintenance/management/commands/process_scheduled_maintenance.py +44 -44
- django_cfg/apps/maintenance/management/commands/sync_cloudflare.py +32 -32
- django_cfg/apps/maintenance/managers/__init__.py +1 -1
- django_cfg/apps/maintenance/managers/cloudflare_site_manager.py +39 -38
- django_cfg/apps/maintenance/managers/maintenance_log_manager.py +32 -31
- django_cfg/apps/maintenance/migrations/0001_initial.py +1 -0
- django_cfg/apps/maintenance/models/__init__.py +2 -2
- django_cfg/apps/maintenance/models/cloudflare_api_key.py +15 -15
- django_cfg/apps/maintenance/models/cloudflare_site.py +24 -22
- django_cfg/apps/maintenance/models/maintenance_log.py +15 -14
- django_cfg/apps/maintenance/models/scheduled_maintenance.py +53 -52
- django_cfg/apps/maintenance/services/__init__.py +3 -3
- django_cfg/apps/maintenance/services/bulk_operations_service.py +68 -68
- django_cfg/apps/maintenance/services/maintenance_service.py +59 -58
- django_cfg/apps/maintenance/services/scheduled_maintenance_service.py +52 -52
- django_cfg/apps/maintenance/services/site_sync_service.py +64 -65
- django_cfg/apps/maintenance/utils/__init__.py +1 -1
- django_cfg/apps/maintenance/utils/retry_utils.py +17 -17
- django_cfg/apps/newsletter/admin/__init__.py +12 -16
- django_cfg/apps/newsletter/admin/newsletter_admin.py +90 -87
- django_cfg/apps/newsletter/admin/resources.py +29 -29
- django_cfg/apps/newsletter/admin.py +39 -32
- django_cfg/apps/newsletter/management/commands/test_newsletter.py +3 -3
- django_cfg/apps/newsletter/managers/__init__.py +1 -1
- django_cfg/apps/newsletter/migrations/0001_initial.py +2 -1
- django_cfg/apps/newsletter/models.py +34 -33
- django_cfg/apps/newsletter/serializers.py +13 -13
- django_cfg/apps/newsletter/services/email_service.py +42 -40
- django_cfg/apps/newsletter/signals.py +4 -3
- django_cfg/apps/newsletter/urls.py +7 -7
- django_cfg/apps/newsletter/views/__init__.py +14 -19
- django_cfg/apps/newsletter/views/campaigns.py +19 -19
- django_cfg/apps/newsletter/views/emails.py +20 -20
- django_cfg/apps/newsletter/views/newsletters.py +5 -5
- django_cfg/apps/newsletter/views/subscriptions.py +24 -24
- django_cfg/apps/newsletter/views/tracking.py +6 -5
- django_cfg/apps/payments/admin/__init__.py +6 -5
- django_cfg/apps/payments/admin/api_keys_admin.py +43 -45
- django_cfg/apps/payments/admin/balance_admin.py +41 -47
- django_cfg/apps/payments/admin/currencies_admin.py +60 -62
- django_cfg/apps/payments/admin/endpoint_groups_admin.py +14 -28
- django_cfg/apps/payments/admin/filters.py +59 -59
- django_cfg/apps/payments/admin/networks_admin.py +36 -50
- django_cfg/apps/payments/admin/payments_admin.py +47 -49
- django_cfg/apps/payments/admin/subscriptions_admin.py +30 -32
- django_cfg/apps/payments/admin/tariffs_admin.py +37 -42
- django_cfg/apps/payments/admin_interface/serializers/__init__.py +12 -13
- django_cfg/apps/payments/admin_interface/serializers/payment_serializers.py +28 -27
- django_cfg/apps/payments/admin_interface/serializers/webhook_serializers.py +4 -5
- django_cfg/apps/payments/admin_interface/templates/payments/base.html +407 -3
- django_cfg/apps/payments/admin_interface/templates/payments/components/ngrok_status.html +13 -13
- django_cfg/apps/payments/admin_interface/templates/payments/payment_dashboard.html +5 -1
- django_cfg/apps/payments/admin_interface/templates/payments/payment_detail.html +105 -49
- django_cfg/apps/payments/admin_interface/templates/payments/payment_form.html +4 -1
- django_cfg/apps/payments/admin_interface/templates/payments/payment_list.html +16 -8
- django_cfg/apps/payments/admin_interface/templates/payments/webhook_dashboard.html +16 -8
- django_cfg/apps/payments/admin_interface/views/__init__.py +8 -9
- django_cfg/apps/payments/admin_interface/views/api/__init__.py +3 -3
- django_cfg/apps/payments/admin_interface/views/api/payments.py +52 -54
- django_cfg/apps/payments/admin_interface/views/api/stats.py +33 -30
- django_cfg/apps/payments/admin_interface/views/api/users.py +10 -11
- django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +46 -51
- django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +9 -9
- django_cfg/apps/payments/admin_interface/views/base.py +17 -19
- django_cfg/apps/payments/admin_interface/views/dashboard.py +10 -10
- django_cfg/apps/payments/admin_interface/views/forms.py +21 -20
- django_cfg/apps/payments/apps.py +7 -6
- django_cfg/apps/payments/config/__init__.py +4 -4
- django_cfg/apps/payments/config/django_cfg_integration.py +22 -21
- django_cfg/apps/payments/config/helpers.py +14 -12
- django_cfg/apps/payments/management/commands/cleanup_expired_data.py +85 -86
- django_cfg/apps/payments/management/commands/currency_stats.py +84 -87
- django_cfg/apps/payments/management/commands/manage_currencies.py +59 -58
- django_cfg/apps/payments/management/commands/manage_providers.py +103 -105
- django_cfg/apps/payments/management/commands/process_pending_payments.py +67 -70
- django_cfg/apps/payments/management/commands/test_providers.py +83 -84
- django_cfg/apps/payments/middleware/__init__.py +1 -1
- django_cfg/apps/payments/middleware/api_access.py +77 -78
- django_cfg/apps/payments/middleware/rate_limiting.py +72 -72
- django_cfg/apps/payments/middleware/usage_tracking.py +66 -64
- django_cfg/apps/payments/migrations/0001_initial.py +2 -1
- django_cfg/apps/payments/models/__init__.py +11 -12
- django_cfg/apps/payments/models/api_keys.py +29 -27
- django_cfg/apps/payments/models/balance.py +38 -38
- django_cfg/apps/payments/models/base.py +12 -11
- django_cfg/apps/payments/models/currencies.py +53 -52
- django_cfg/apps/payments/models/managers/__init__.py +13 -14
- django_cfg/apps/payments/models/managers/api_key_managers.py +55 -53
- django_cfg/apps/payments/models/managers/balance_managers.py +98 -97
- django_cfg/apps/payments/models/managers/currency_managers.py +70 -69
- django_cfg/apps/payments/models/managers/payment_managers.py +113 -111
- django_cfg/apps/payments/models/managers/subscription_managers.py +99 -97
- django_cfg/apps/payments/models/payments.py +167 -73
- django_cfg/apps/payments/models/subscriptions.py +56 -54
- django_cfg/apps/payments/models/tariffs.py +35 -34
- django_cfg/apps/payments/services/__init__.py +33 -36
- django_cfg/apps/payments/services/cache/__init__.py +7 -1
- django_cfg/apps/payments/services/cache_service/__init__.py +22 -20
- django_cfg/apps/payments/services/cache_service/api_key_cache.py +6 -5
- django_cfg/apps/payments/services/cache_service/interfaces.py +5 -5
- django_cfg/apps/payments/services/cache_service/keys.py +8 -8
- django_cfg/apps/payments/services/cache_service/rate_limit_cache.py +8 -7
- django_cfg/apps/payments/services/cache_service/simple_cache.py +17 -14
- django_cfg/apps/payments/services/core/__init__.py +3 -3
- django_cfg/apps/payments/services/core/balance_service.py +69 -65
- django_cfg/apps/payments/services/core/base.py +25 -22
- django_cfg/apps/payments/services/core/currency/__init__.py +1 -1
- django_cfg/apps/payments/services/core/currency/currency_converter.py +2 -0
- django_cfg/apps/payments/services/core/currency_service.py +68 -66
- django_cfg/apps/payments/services/core/operations/__init__.py +1 -1
- django_cfg/apps/payments/services/core/operations/payment_canceller.py +2 -1
- django_cfg/apps/payments/services/core/operations/payment_creator.py +2 -1
- django_cfg/apps/payments/services/core/operations/status_checker.py +2 -1
- django_cfg/apps/payments/services/core/payment_service.py +10 -7
- django_cfg/apps/payments/services/core/providers/provider_client.py +2 -2
- django_cfg/apps/payments/services/core/subscription_service.py +77 -74
- django_cfg/apps/payments/services/core/utils/data_converter.py +1 -0
- django_cfg/apps/payments/services/core/utils/statistics_calculator.py +1 -0
- django_cfg/apps/payments/services/core/webhook_service.py +67 -63
- django_cfg/apps/payments/services/integrations/__init__.py +3 -3
- django_cfg/apps/payments/services/integrations/ngrok_service.py +1 -0
- django_cfg/apps/payments/services/integrations/providers_config.py +3 -2
- django_cfg/apps/payments/services/providers/base.py +59 -57
- django_cfg/apps/payments/services/providers/models/__init__.py +7 -14
- django_cfg/apps/payments/services/providers/models/base.py +15 -15
- django_cfg/apps/payments/services/providers/models/providers.py +13 -12
- django_cfg/apps/payments/services/providers/models/universal.py +6 -5
- django_cfg/apps/payments/services/providers/nowpayments/__init__.py +4 -4
- django_cfg/apps/payments/services/providers/nowpayments/config.py +9 -8
- django_cfg/apps/payments/services/providers/nowpayments/models.py +15 -15
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +2 -2
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +26 -26
- django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +3 -2
- django_cfg/apps/payments/services/providers/nowpayments/provider.py +95 -99
- django_cfg/apps/payments/services/providers/nowpayments/sync.py +41 -40
- django_cfg/apps/payments/services/providers/registry.py +65 -63
- django_cfg/apps/payments/services/providers/sync_service.py +50 -50
- django_cfg/apps/payments/services/types/__init__.py +21 -22
- django_cfg/apps/payments/services/types/data.py +14 -13
- django_cfg/apps/payments/services/types/requests.py +21 -22
- django_cfg/apps/payments/services/types/responses.py +16 -15
- django_cfg/apps/payments/services/types/webhooks.py +30 -30
- django_cfg/apps/payments/signals/__init__.py +4 -6
- django_cfg/apps/payments/signals/api_key_signals.py +36 -35
- django_cfg/apps/payments/signals/balance_signals.py +28 -26
- django_cfg/apps/payments/signals/payment_signals.py +29 -28
- django_cfg/apps/payments/signals/subscription_signals.py +39 -38
- django_cfg/apps/payments/static/payments/js/ngrok-status.js +12 -8
- django_cfg/apps/payments/static/payments/js/payment-detail.js +1 -1
- django_cfg/apps/payments/static/payments/js/payment-form.js +3 -3
- django_cfg/apps/payments/static/payments/js/payment-list.js +13 -6
- django_cfg/apps/payments/static/payments/js/webhook-dashboard-mjs.js +241 -0
- django_cfg/apps/payments/tasks/__init__.py +11 -12
- django_cfg/apps/payments/tasks/types.py +10 -9
- django_cfg/apps/payments/tasks/usage_tracking.py +44 -46
- django_cfg/apps/payments/templatetags/payment_tags.py +27 -27
- django_cfg/apps/payments/urls.py +31 -14
- django_cfg/apps/payments/urls_admin.py +10 -10
- django_cfg/apps/payments/views/api/__init__.py +32 -33
- django_cfg/apps/payments/views/api/api_keys.py +62 -62
- django_cfg/apps/payments/views/api/balances.py +63 -64
- django_cfg/apps/payments/views/api/base.py +52 -52
- django_cfg/apps/payments/views/api/currencies.py +75 -63
- django_cfg/apps/payments/views/api/payments.py +73 -74
- django_cfg/apps/payments/views/api/subscriptions.py +71 -72
- django_cfg/apps/payments/views/api/webhooks.py +85 -84
- django_cfg/apps/payments/views/overview/__init__.py +7 -7
- django_cfg/apps/payments/views/overview/serializers.py +13 -14
- django_cfg/apps/payments/views/overview/services.py +66 -67
- django_cfg/apps/payments/views/overview/urls.py +2 -1
- django_cfg/apps/payments/views/overview/views.py +31 -31
- django_cfg/apps/payments/views/serializers/__init__.py +35 -36
- django_cfg/apps/payments/views/serializers/api_keys.py +59 -57
- django_cfg/apps/payments/views/serializers/balances.py +34 -33
- django_cfg/apps/payments/views/serializers/currencies.py +36 -34
- django_cfg/apps/payments/views/serializers/payments.py +48 -47
- django_cfg/apps/payments/views/serializers/subscriptions.py +50 -45
- django_cfg/apps/payments/views/serializers/webhooks.py +17 -16
- django_cfg/apps/support/admin/__init__.py +3 -3
- django_cfg/apps/support/admin/resources.py +26 -26
- django_cfg/apps/support/admin/support_admin.py +44 -48
- django_cfg/apps/support/admin.py +16 -15
- django_cfg/apps/support/apps.py +1 -1
- django_cfg/apps/support/managers/message_manager.py +4 -4
- django_cfg/apps/support/managers/ticket_manager.py +13 -12
- django_cfg/apps/support/migrations/0001_initial.py +2 -1
- django_cfg/apps/support/models.py +3 -1
- django_cfg/apps/support/serializers.py +4 -2
- django_cfg/apps/support/signals.py +12 -10
- django_cfg/apps/support/urls.py +4 -3
- django_cfg/apps/support/utils/support_email_service.py +11 -9
- django_cfg/apps/support/views/__init__.py +3 -3
- django_cfg/apps/support/views/admin.py +9 -9
- django_cfg/apps/support/views/api.py +12 -13
- django_cfg/apps/support/views/chat.py +14 -14
- django_cfg/apps/tasks/admin/tasks_admin.py +65 -74
- django_cfg/apps/tasks/apps.py +2 -2
- django_cfg/apps/tasks/serializers.py +6 -6
- django_cfg/apps/tasks/static/tasks/js/dashboard/main.mjs +44 -20
- django_cfg/apps/tasks/static/tasks/js/dashboard/overview.mjs +7 -5
- django_cfg/apps/tasks/static/tasks/js/dashboard/queues.mjs +5 -3
- django_cfg/apps/tasks/static/tasks/js/dashboard/tasks.mjs +5 -3
- django_cfg/apps/tasks/static/tasks/js/dashboard/workers.mjs +5 -3
- django_cfg/apps/tasks/tasks/demo_tasks.py +12 -11
- django_cfg/apps/tasks/templates/tasks/components/tasks_mjs_integration.html +269 -0
- django_cfg/apps/tasks/templates/tasks/pages/dashboard-improved.html +168 -0
- django_cfg/apps/tasks/templates/tasks/pages/dashboard.html +21 -2
- django_cfg/apps/tasks/urls.py +3 -2
- django_cfg/apps/tasks/urls_admin.py +1 -0
- django_cfg/apps/tasks/utils/simulator.py +49 -52
- django_cfg/apps/tasks/views/api.py +75 -73
- django_cfg/apps/tasks/views/dashboard.py +5 -4
- django_cfg/apps/urls.py +20 -11
- django_cfg/apps.py +6 -5
- django_cfg/cli/commands/create_project.py +7 -6
- django_cfg/cli/commands/info.py +25 -25
- django_cfg/cli/utils.py +27 -27
- django_cfg/config.py +1 -1
- django_cfg/core/__init__.py +8 -8
- django_cfg/core/base/config_model.py +13 -12
- django_cfg/core/builders/apps_builder.py +2 -2
- django_cfg/core/builders/middleware_builder.py +1 -1
- django_cfg/core/builders/security_builder.py +1 -1
- django_cfg/core/config.py +2 -2
- django_cfg/core/environment/detector.py +27 -28
- django_cfg/core/exceptions.py +1 -1
- django_cfg/core/generation/core_generators/settings.py +1 -1
- django_cfg/core/generation/core_generators/static.py +11 -5
- django_cfg/core/generation/core_generators/templates.py +1 -1
- django_cfg/core/generation/data_generators/__init__.py +1 -1
- django_cfg/core/generation/data_generators/cache.py +1 -1
- django_cfg/core/generation/data_generators/database.py +1 -1
- django_cfg/core/generation/generation.py +1 -3
- django_cfg/core/generation/integration_generators/__init__.py +2 -2
- django_cfg/core/generation/integration_generators/api.py +12 -2
- django_cfg/core/generation/integration_generators/sessions.py +1 -1
- django_cfg/core/generation/integration_generators/tailwind.py +1 -1
- django_cfg/core/generation/integration_generators/tasks.py +1 -1
- django_cfg/core/generation/integration_generators/third_party.py +1 -1
- django_cfg/core/generation/orchestrator.py +1 -1
- django_cfg/core/generation/protocols.py +1 -1
- django_cfg/core/generation/utility_generators/__init__.py +1 -1
- django_cfg/core/generation/utility_generators/email.py +1 -1
- django_cfg/core/generation/utility_generators/i18n.py +1 -1
- django_cfg/core/generation/utility_generators/limits.py +1 -1
- django_cfg/core/generation/utility_generators/logging.py +1 -1
- django_cfg/core/generation/utility_generators/security.py +1 -1
- django_cfg/core/generation/utils/helpers.py +1 -1
- django_cfg/core/integration/__init__.py +5 -5
- django_cfg/core/integration/commands_collector.py +38 -39
- django_cfg/core/integration/display/__init__.py +2 -2
- django_cfg/core/integration/display/base.py +30 -30
- django_cfg/core/integration/display/ngrok.py +35 -36
- django_cfg/core/integration/display/startup.py +149 -139
- django_cfg/core/integration/url_integration.py +10 -10
- django_cfg/core/integration/version_checker.py +20 -19
- django_cfg/core/services/config_service.py +4 -4
- django_cfg/core/state/__init__.py +1 -1
- django_cfg/core/state/registry.py +1 -1
- django_cfg/core/types/__init__.py +8 -1
- django_cfg/core/validation.py +36 -39
- django_cfg/management/commands/check_endpoints.py +3 -1
- django_cfg/management/commands/check_settings.py +3 -1
- django_cfg/management/commands/clear_constance.py +3 -1
- django_cfg/management/commands/create_token.py +3 -1
- django_cfg/management/commands/generate_clients.py +3 -1
- django_cfg/management/commands/migrate_all.py +3 -1
- django_cfg/management/commands/rundramatiq.py +3 -1
- django_cfg/management/commands/rundramatiq_simulator.py +3 -1
- django_cfg/management/commands/runserver_ngrok.py +3 -1
- django_cfg/management/commands/show_config.py +3 -1
- django_cfg/management/commands/superuser.py +3 -1
- django_cfg/management/commands/task_clear.py +3 -1
- django_cfg/management/commands/task_status.py +3 -1
- django_cfg/management/commands/test_email.py +3 -1
- django_cfg/management/commands/test_telegram.py +3 -1
- django_cfg/management/commands/test_twilio.py +3 -1
- django_cfg/management/commands/validate_openapi.py +3 -1
- django_cfg/middleware/pagination.py +8 -8
- django_cfg/middleware/public_endpoints.py +24 -23
- django_cfg/middleware/user_activity.py +27 -25
- django_cfg/models/__init__.py +19 -20
- django_cfg/models/api/__init__.py +4 -4
- django_cfg/models/api/config.py +23 -21
- django_cfg/models/api/cors.py +17 -16
- django_cfg/models/api/drf/__init__.py +1 -1
- django_cfg/models/api/drf/config.py +2 -1
- django_cfg/models/api/drf/redoc.py +2 -1
- django_cfg/models/api/drf/spectacular.py +4 -2
- django_cfg/models/api/drf/swagger.py +2 -1
- django_cfg/models/api/jwt.py +37 -36
- django_cfg/models/api/keys.py +13 -12
- django_cfg/models/api/limits.py +31 -30
- django_cfg/models/base/config.py +40 -41
- django_cfg/models/base/module.py +8 -8
- django_cfg/models/django/__init__.py +1 -1
- django_cfg/models/django/constance.py +8 -7
- django_cfg/models/django/environment.py +5 -3
- django_cfg/models/django/openapi.py +6 -16
- django_cfg/models/django/revolution_legacy.py +17 -16
- django_cfg/models/infrastructure/__init__.py +1 -1
- django_cfg/models/infrastructure/cache.py +46 -45
- django_cfg/models/infrastructure/database/config.py +4 -6
- django_cfg/models/infrastructure/database/converters.py +1 -1
- django_cfg/models/infrastructure/database/parsers.py +1 -1
- django_cfg/models/infrastructure/database/validators.py +1 -1
- django_cfg/models/infrastructure/logging.py +59 -57
- django_cfg/models/infrastructure/security.py +26 -24
- django_cfg/models/ngrok/auth.py +2 -1
- django_cfg/models/ngrok/config.py +3 -2
- django_cfg/models/ngrok/tunnel.py +2 -1
- django_cfg/models/payments/__init__.py +1 -1
- django_cfg/models/payments/api_keys.py +3 -1
- django_cfg/models/payments/config.py +4 -1
- django_cfg/models/payments/providers/base.py +2 -1
- django_cfg/models/payments/providers/nowpayments.py +3 -1
- django_cfg/models/services/__init__.py +1 -1
- django_cfg/models/services/base.py +2 -1
- django_cfg/models/services/email.py +28 -26
- django_cfg/models/services/telegram.py +2 -1
- django_cfg/models/tasks/__init__.py +2 -2
- django_cfg/models/tasks/backends.py +4 -3
- django_cfg/models/tasks/config.py +6 -4
- django_cfg/models/tasks/utils.py +3 -3
- django_cfg/modules/base.py +18 -17
- django_cfg/modules/django_admin/__init__.py +14 -15
- django_cfg/modules/django_admin/decorators/__init__.py +1 -1
- django_cfg/modules/django_admin/decorators/actions.py +8 -7
- django_cfg/modules/django_admin/decorators/display.py +9 -7
- django_cfg/modules/django_admin/icons/__init__.py +1 -1
- django_cfg/modules/django_admin/icons/constants.py +27 -27
- django_cfg/modules/django_admin/icons/generate_icons.py +54 -54
- django_cfg/modules/django_admin/management/commands/check_endpoints.py +5 -3
- django_cfg/modules/django_admin/management/commands/check_settings.py +40 -44
- django_cfg/modules/django_admin/management/commands/clear_constance.py +29 -30
- django_cfg/modules/django_admin/management/commands/create_token.py +42 -42
- django_cfg/modules/django_admin/management/commands/list_urls.py +37 -38
- django_cfg/modules/django_admin/management/commands/migrate_all.py +13 -15
- django_cfg/modules/django_admin/management/commands/migrator.py +17 -17
- django_cfg/modules/django_admin/management/commands/script.py +58 -60
- django_cfg/modules/django_admin/management/commands/show_config.py +32 -30
- django_cfg/modules/django_admin/management/commands/show_urls.py +46 -44
- django_cfg/modules/django_admin/management/commands/superuser.py +47 -48
- django_cfg/modules/django_admin/management/commands/tree.py +50 -54
- django_cfg/modules/django_admin/mixins/display_mixin.py +16 -15
- django_cfg/modules/django_admin/mixins/optimization_mixin.py +9 -8
- django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +25 -24
- django_cfg/modules/django_admin/models/__init__.py +4 -4
- django_cfg/modules/django_admin/models/action_models.py +3 -1
- django_cfg/modules/django_admin/models/badge_models.py +4 -2
- django_cfg/modules/django_admin/models/base.py +3 -3
- django_cfg/modules/django_admin/models/display_models.py +1 -0
- django_cfg/modules/django_admin/utils/badges.py +27 -26
- django_cfg/modules/django_admin/utils/displays.py +49 -49
- django_cfg/modules/django_client/apps.py +21 -3
- django_cfg/modules/django_client/core/__init__.py +9 -10
- django_cfg/modules/django_client/core/archive/manager.py +2 -2
- django_cfg/modules/django_client/core/cli/main.py +1 -3
- django_cfg/modules/django_client/core/config/config.py +3 -1
- django_cfg/modules/django_client/core/config/group.py +1 -0
- django_cfg/modules/django_client/core/config/service.py +2 -1
- django_cfg/modules/django_client/core/generator/__init__.py +1 -1
- django_cfg/modules/django_client/core/generator/base.py +2 -2
- django_cfg/modules/django_client/core/generator/python/async_client_gen.py +1 -1
- django_cfg/modules/django_client/core/generator/python/files_generator.py +1 -1
- django_cfg/modules/django_client/core/generator/python/generator.py +4 -4
- django_cfg/modules/django_client/core/generator/python/models_generator.py +1 -1
- django_cfg/modules/django_client/core/generator/python/operations_generator.py +2 -2
- django_cfg/modules/django_client/core/generator/python/sync_client_gen.py +1 -1
- django_cfg/modules/django_client/core/generator/typescript/client_generator.py +3 -1
- django_cfg/modules/django_client/core/generator/typescript/fetchers_generator.py +14 -13
- django_cfg/modules/django_client/core/generator/typescript/files_generator.py +1 -0
- django_cfg/modules/django_client/core/generator/typescript/generator.py +6 -6
- django_cfg/modules/django_client/core/generator/typescript/hooks_generator.py +12 -10
- django_cfg/modules/django_client/core/generator/typescript/models_generator.py +2 -1
- django_cfg/modules/django_client/core/generator/typescript/naming.py +2 -3
- django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +12 -10
- django_cfg/modules/django_client/core/generator/typescript/schemas_generator.py +3 -2
- django_cfg/modules/django_client/core/generator/typescript/templates/client/client.ts.jinja +14 -6
- django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +4 -10
- django_cfg/modules/django_client/core/groups/__init__.py +1 -1
- django_cfg/modules/django_client/core/groups/detector.py +2 -1
- django_cfg/modules/django_client/core/groups/manager.py +2 -1
- django_cfg/modules/django_client/core/ir/schema.py +1 -1
- django_cfg/modules/django_client/core/parser/base.py +0 -2
- django_cfg/modules/django_client/core/parser/models/schema.py +1 -1
- django_cfg/modules/django_client/core/validation/__init__.py +1 -1
- django_cfg/modules/django_client/core/validation/fixer.py +1 -2
- django_cfg/modules/django_client/core/validation/reporter.py +2 -2
- django_cfg/modules/django_client/core/validation/safety.py +1 -1
- django_cfg/modules/django_client/management/commands/generate_client.py +14 -11
- django_cfg/modules/django_client/management/commands/validate_openapi.py +4 -6
- django_cfg/modules/django_client/spectacular/__init__.py +1 -1
- django_cfg/modules/django_client/spectacular/async_detection.py +3 -2
- django_cfg/modules/django_client/spectacular/enum_naming.py +1 -1
- django_cfg/modules/django_client/spectacular/schema.py +5 -5
- django_cfg/modules/django_client/system/__init__.py +24 -0
- django_cfg/modules/django_client/system/base_generator.py +123 -0
- django_cfg/modules/django_client/system/generate_mjs_clients.py +174 -0
- django_cfg/modules/django_client/system/mjs_generator.py +219 -0
- django_cfg/modules/django_client/system/schema_parser.py +195 -0
- django_cfg/modules/django_client/system/templates/api_client.js.j2 +87 -0
- django_cfg/modules/django_client/system/templates/app_index.js.j2 +13 -0
- django_cfg/modules/django_client/system/templates/base_client.js.j2 +166 -0
- django_cfg/modules/django_client/system/templates/main_index.js.j2 +80 -0
- django_cfg/modules/django_client/system/templates/types.js.j2 +24 -0
- django_cfg/modules/django_client/urls.py +3 -2
- django_cfg/modules/django_currency/__init__.py +17 -18
- django_cfg/modules/django_currency/clients/__init__.py +2 -2
- django_cfg/modules/django_currency/clients/coinpaprika_client.py +48 -48
- django_cfg/modules/django_currency/clients/hybrid_client.py +76 -75
- django_cfg/modules/django_currency/core/__init__.py +7 -13
- django_cfg/modules/django_currency/core/converter.py +25 -24
- django_cfg/modules/django_currency/core/models.py +9 -8
- django_cfg/modules/django_currency/database/__init__.py +4 -4
- django_cfg/modules/django_currency/database/database_loader.py +65 -66
- django_cfg/modules/django_currency/examples/example_database_usage.py +29 -28
- django_cfg/modules/django_currency/utils/cache.py +10 -11
- django_cfg/modules/django_dashboard/__init__.py +4 -5
- django_cfg/modules/django_dashboard/components.py +11 -7
- django_cfg/modules/django_dashboard/debug.py +1 -3
- django_cfg/modules/django_dashboard/management/commands/debug_dashboard.py +3 -3
- django_cfg/modules/django_dashboard/sections/base.py +2 -1
- django_cfg/modules/django_dashboard/sections/commands.py +3 -2
- django_cfg/modules/django_dashboard/sections/documentation.py +8 -6
- django_cfg/modules/django_dashboard/sections/overview.py +13 -9
- django_cfg/modules/django_dashboard/sections/stats.py +2 -2
- django_cfg/modules/django_dashboard/sections/system.py +2 -1
- django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +12 -4
- django_cfg/modules/django_email/management/commands/test_email.py +8 -7
- django_cfg/modules/django_email/service.py +5 -4
- django_cfg/modules/django_health/service.py +46 -44
- django_cfg/modules/django_import_export/__init__.py +7 -3
- django_cfg/modules/django_llm/__init__.py +3 -2
- django_cfg/modules/django_llm/example.py +58 -56
- django_cfg/modules/django_llm/llm/__init__.py +1 -1
- django_cfg/modules/django_llm/llm/cache.py +21 -20
- django_cfg/modules/django_llm/llm/client.py +9 -9
- django_cfg/modules/django_llm/llm/costs.py +14 -14
- django_cfg/modules/django_llm/llm/embeddings/__init__.py +1 -1
- django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +1 -2
- django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +1 -2
- django_cfg/modules/django_llm/llm/extractor.py +8 -8
- django_cfg/modules/django_llm/llm/models.py +5 -5
- django_cfg/modules/django_llm/llm/models_api/models_query.py +2 -2
- django_cfg/modules/django_llm/llm/models_cache.py +91 -92
- django_cfg/modules/django_llm/llm/providers/config_builder.py +1 -1
- django_cfg/modules/django_llm/llm/providers/provider_manager.py +2 -1
- django_cfg/modules/django_llm/llm/requests/cache_manager.py +1 -1
- django_cfg/modules/django_llm/llm/requests/chat_handler.py +2 -2
- django_cfg/modules/django_llm/llm/requests/embedding_handler.py +1 -1
- django_cfg/modules/django_llm/llm/responses/response_builder.py +2 -2
- django_cfg/modules/django_llm/llm/stats/stats_manager.py +1 -1
- django_cfg/modules/django_llm/llm/tokenizer.py +10 -9
- django_cfg/modules/django_llm/translator/__init__.py +1 -1
- django_cfg/modules/django_llm/translator/cache.py +36 -35
- django_cfg/modules/django_llm/translator/detectors/__init__.py +1 -1
- django_cfg/modules/django_llm/translator/detectors/script_detector.py +0 -1
- django_cfg/modules/django_llm/translator/stats/stats_tracker.py +1 -1
- django_cfg/modules/django_llm/translator/translator.py +5 -4
- django_cfg/modules/django_llm/translator/translators/__init__.py +1 -1
- django_cfg/modules/django_llm/translator/translators/json_translator.py +1 -1
- django_cfg/modules/django_llm/translator/utils/__init__.py +1 -1
- django_cfg/modules/django_llm/translator/utils/prompt_builder.py +0 -1
- django_cfg/modules/django_logging/__init__.py +1 -1
- django_cfg/modules/django_logging/django_logger.py +33 -34
- django_cfg/modules/django_logging/logger.py +3 -7
- django_cfg/modules/django_ngrok/__init__.py +7 -7
- django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py +33 -30
- django_cfg/modules/django_ngrok/service.py +33 -32
- django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +4 -36
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +1 -1
- django_cfg/modules/django_tasks/__init__.py +5 -5
- django_cfg/modules/django_tasks/dramatiq_setup.py +1 -1
- django_cfg/modules/django_tasks/factory.py +1 -1
- django_cfg/modules/django_tasks/management/commands/rundramatiq.py +39 -40
- django_cfg/modules/django_tasks/management/commands/rundramatiq_simulator.py +79 -80
- django_cfg/modules/django_tasks/management/commands/task_clear.py +34 -34
- django_cfg/modules/django_tasks/management/commands/task_status.py +34 -34
- django_cfg/modules/django_tasks/service.py +4 -3
- django_cfg/modules/django_tasks/settings.py +1 -1
- django_cfg/modules/django_telegram/__init__.py +4 -4
- django_cfg/modules/django_telegram/management/commands/test_telegram.py +4 -5
- django_cfg/modules/django_telegram/service.py +4 -3
- django_cfg/modules/django_telegram/utils.py +1 -1
- django_cfg/modules/django_twilio/__init__.py +15 -16
- django_cfg/modules/django_twilio/_imports.py +1 -1
- django_cfg/modules/django_twilio/base.py +9 -5
- django_cfg/modules/django_twilio/email_otp.py +4 -3
- django_cfg/modules/django_twilio/exceptions.py +36 -36
- django_cfg/modules/django_twilio/management/commands/test_twilio.py +6 -7
- django_cfg/modules/django_twilio/models.py +54 -53
- django_cfg/modules/django_twilio/sendgrid_service.py +70 -72
- django_cfg/modules/django_twilio/simple_service.py +42 -41
- django_cfg/modules/django_twilio/sms.py +1 -0
- django_cfg/modules/django_twilio/twilio_service.py +79 -83
- django_cfg/modules/django_twilio/unified.py +6 -5
- django_cfg/modules/django_twilio/utils.py +2 -3
- django_cfg/modules/django_twilio/whatsapp.py +3 -2
- django_cfg/modules/django_unfold/__init__.py +7 -6
- django_cfg/modules/django_unfold/callbacks/actions.py +6 -5
- django_cfg/modules/django_unfold/callbacks/apizones.py +122 -0
- django_cfg/modules/django_unfold/callbacks/base.py +9 -8
- django_cfg/modules/django_unfold/callbacks/charts.py +36 -37
- django_cfg/modules/django_unfold/callbacks/commands.py +2 -2
- django_cfg/modules/django_unfold/callbacks/main.py +27 -27
- django_cfg/modules/django_unfold/callbacks/statistics.py +12 -12
- django_cfg/modules/django_unfold/callbacks/system.py +5 -5
- django_cfg/modules/django_unfold/callbacks/users.py +4 -4
- django_cfg/modules/django_unfold/dashboard.py +29 -29
- django_cfg/modules/django_unfold/models/__init__.py +23 -8
- django_cfg/modules/django_unfold/models/config.py +84 -81
- django_cfg/modules/django_unfold/models/dashboard.py +20 -19
- django_cfg/modules/django_unfold/models/dropdown.py +6 -4
- django_cfg/modules/django_unfold/models/navigation.py +6 -4
- django_cfg/modules/django_unfold/models/tabs.py +4 -3
- django_cfg/modules/django_unfold/models.py +2 -3
- django_cfg/modules/django_unfold/system_monitor.py +27 -25
- django_cfg/modules/django_unfold/tailwind.py +12 -14
- django_cfg/modules/django_unfold/utils.py +7 -6
- django_cfg/pyproject.toml +1 -1
- django_cfg/registry/__init__.py +3 -3
- django_cfg/registry/core.py +8 -8
- django_cfg/registry/modules.py +2 -2
- django_cfg/registry/services.py +2 -2
- django_cfg/registry/third_party.py +3 -3
- django_cfg/routing/__init__.py +3 -3
- django_cfg/routing/callbacks.py +27 -26
- django_cfg/routing/routers.py +2 -2
- django_cfg/static/js/api/accounts/client.mjs +69 -0
- django_cfg/static/js/api/accounts/index.mjs +13 -0
- django_cfg/static/js/api/base.mjs +166 -0
- django_cfg/static/js/api/index.mjs +100 -0
- django_cfg/static/js/api/ipc/client.mjs +74 -0
- django_cfg/static/js/api/ipc/index.mjs +13 -0
- django_cfg/static/js/api/leads/client.mjs +71 -0
- django_cfg/static/js/api/leads/index.mjs +13 -0
- django_cfg/static/js/api/newsletter/client.mjs +109 -0
- django_cfg/static/js/api/newsletter/index.mjs +13 -0
- django_cfg/static/js/api/payments/client.mjs +1264 -0
- django_cfg/static/js/api/payments/index.mjs +13 -0
- django_cfg/static/js/api/support/client.mjs +84 -0
- django_cfg/static/js/api/support/index.mjs +13 -0
- django_cfg/static/js/api/tasks/client.mjs +74 -0
- django_cfg/static/js/api/tasks/index.mjs +13 -0
- django_cfg/static/js/api/types.mjs +729 -0
- django_cfg/static/js/api-loader.mjs +169 -0
- django_cfg/templates/admin/snippets/zones/zones_table.html +4 -3
- django_cfg/templatetags/django_cfg.py +4 -4
- django_cfg/utils/path_resolution.py +49 -50
- django_cfg/utils/smart_defaults.py +27 -29
- django_cfg/utils/version_check.py +14 -14
- {django_cfg-1.4.20.dist-info ā django_cfg-1.4.23.dist-info}/METADATA +1 -1
- django_cfg-1.4.23.dist-info/RECORD +1137 -0
- django_cfg/apps/payments/static/payments/js/api-client.js +0 -408
- django_cfg/modules/django_ipc_client/dashboard/README.md +0 -517
- django_cfg/modules/django_ipc_client/dashboard/UNFOLD_INTEGRATION.md +0 -439
- django_cfg/modules/django_ipc_client/dashboard/__init__.py +0 -11
- django_cfg/modules/django_ipc_client/dashboard/apps.py +0 -22
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/dashboard.html +0 -200
- django_cfg/modules/django_ipc_client/dashboard/urls.py +0 -22
- django_cfg/modules/django_ipc_client/dashboard/urls_admin.py +0 -9
- django_cfg/modules/django_ipc_client/dashboard/views.py +0 -251
- django_cfg/modules/django_rpc_old/POETRY.md +0 -344
- django_cfg/modules/django_rpc_old/README.md +0 -397
- django_cfg/modules/django_rpc_old/TESTING.md +0 -358
- django_cfg/modules/django_rpc_old/__init__.py +0 -39
- django_cfg/modules/django_rpc_old/client.py +0 -531
- django_cfg/modules/django_rpc_old/config.py +0 -279
- django_cfg/modules/django_rpc_old/exceptions.py +0 -172
- django_cfg/modules/django_unfold/callbacks/revolution.py +0 -81
- django_cfg-1.4.20.dist-info/RECORD +0 -1110
- /django_cfg/{modules/django_ipc_client ā apps/ipc}/README.md +0 -0
- /django_cfg/{modules/django_ipc_client ā apps/ipc/services/client}/config.py +0 -0
- {django_cfg-1.4.20.dist-info ā django_cfg-1.4.23.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.20.dist-info ā django_cfg-1.4.23.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.20.dist-info ā django_cfg-1.4.23.dist-info}/licenses/LICENSE +0 -0
@@ -3,18 +3,16 @@ Script Command for Django Config Toolkit
|
|
3
3
|
Run custom scripts and manage Django applications.
|
4
4
|
"""
|
5
5
|
|
6
|
-
import os
|
7
|
-
import sys
|
8
6
|
import subprocess
|
9
|
-
import
|
7
|
+
import sys
|
10
8
|
from pathlib import Path
|
11
|
-
|
12
|
-
from django.core.management import call_command
|
13
|
-
from django.conf import settings
|
9
|
+
|
14
10
|
import questionary
|
15
|
-
from
|
16
|
-
from
|
11
|
+
from django.conf import settings
|
12
|
+
from django.core.management import call_command
|
13
|
+
from django.core.management.base import BaseCommand
|
17
14
|
|
15
|
+
from django_cfg.modules.django_logging import get_logger
|
18
16
|
|
19
17
|
logger = get_logger('script')
|
20
18
|
|
@@ -109,14 +107,14 @@ class Command(BaseCommand):
|
|
109
107
|
def list_scripts(self):
|
110
108
|
"""List available scripts"""
|
111
109
|
self.stdout.write(self.style.SUCCESS('š Available Scripts\n'))
|
112
|
-
|
110
|
+
|
113
111
|
# Check for scripts directory
|
114
112
|
scripts_dir = Path('scripts')
|
115
113
|
if not scripts_dir.exists():
|
116
114
|
self.stdout.write(' š No scripts directory found')
|
117
115
|
self.stdout.write(' š” Use --create to create your first script')
|
118
116
|
return
|
119
|
-
|
117
|
+
|
120
118
|
# List Python scripts
|
121
119
|
python_scripts = list(scripts_dir.glob('*.py'))
|
122
120
|
if python_scripts:
|
@@ -126,14 +124,14 @@ class Command(BaseCommand):
|
|
126
124
|
self.stdout.write(f' - {script.stem}')
|
127
125
|
else:
|
128
126
|
self.stdout.write(' š No Python scripts found')
|
129
|
-
|
127
|
+
|
130
128
|
# List shell scripts
|
131
129
|
shell_scripts = list(scripts_dir.glob('*.sh'))
|
132
130
|
if shell_scripts:
|
133
131
|
self.stdout.write(' š Shell Scripts:')
|
134
132
|
for script in shell_scripts:
|
135
133
|
self.stdout.write(f' - {script.stem}')
|
136
|
-
|
134
|
+
|
137
135
|
# List other scripts
|
138
136
|
other_scripts = [s for s in scripts_dir.iterdir() if s.is_file() and s.suffix not in ['.py', '.sh']]
|
139
137
|
if other_scripts:
|
@@ -144,19 +142,19 @@ class Command(BaseCommand):
|
|
144
142
|
def create_script_interactive(self):
|
145
143
|
"""Create script interactively"""
|
146
144
|
self.stdout.write(self.style.SUCCESS('ā Create New Script\n'))
|
147
|
-
|
145
|
+
|
148
146
|
# Get script name
|
149
147
|
script_name = questionary.text('Script name:').ask()
|
150
148
|
if not script_name:
|
151
149
|
self.stdout.write(self.style.ERROR('ā Script name is required'))
|
152
150
|
return
|
153
|
-
|
151
|
+
|
154
152
|
# Get script type
|
155
153
|
script_type = questionary.select(
|
156
154
|
'Script type:',
|
157
155
|
choices=['Python Script', 'Shell Script', 'Django Management Command']
|
158
156
|
).ask()
|
159
|
-
|
157
|
+
|
160
158
|
# Create script
|
161
159
|
if script_type == 'Python Script':
|
162
160
|
self.create_python_script(script_name)
|
@@ -174,15 +172,15 @@ class Command(BaseCommand):
|
|
174
172
|
# Create scripts directory
|
175
173
|
scripts_dir = Path('scripts')
|
176
174
|
scripts_dir.mkdir(exist_ok=True)
|
177
|
-
|
175
|
+
|
178
176
|
# Create __init__.py if it doesn't exist
|
179
177
|
init_file = scripts_dir / '__init__.py'
|
180
178
|
if not init_file.exists():
|
181
179
|
init_file.touch()
|
182
|
-
|
180
|
+
|
183
181
|
# Create script file
|
184
182
|
script_path = scripts_dir / f'{script_name}.py'
|
185
|
-
|
183
|
+
|
186
184
|
script_content = f'''"""
|
187
185
|
{script_name.title()} Script
|
188
186
|
Auto-generated script for Django Config Toolkit.
|
@@ -220,10 +218,10 @@ def main():
|
|
220
218
|
if __name__ == '__main__':
|
221
219
|
main()
|
222
220
|
'''
|
223
|
-
|
221
|
+
|
224
222
|
with open(script_path, 'w') as f:
|
225
223
|
f.write(script_content)
|
226
|
-
|
224
|
+
|
227
225
|
self.stdout.write(f' š Python script created: {script_path}')
|
228
226
|
self.stdout.write(' š” Edit the script to add your custom logic')
|
229
227
|
|
@@ -232,10 +230,10 @@ if __name__ == '__main__':
|
|
232
230
|
# Create scripts directory
|
233
231
|
scripts_dir = Path('scripts')
|
234
232
|
scripts_dir.mkdir(exist_ok=True)
|
235
|
-
|
233
|
+
|
236
234
|
# Create script file
|
237
235
|
script_path = scripts_dir / f'{script_name}.sh'
|
238
|
-
|
236
|
+
|
239
237
|
script_content = f'''#!/bin/bash
|
240
238
|
|
241
239
|
# {script_name.title()} Script
|
@@ -248,13 +246,13 @@ echo "š Running {script_name} script..."
|
|
248
246
|
# Your shell script logic here
|
249
247
|
echo "ā
Script completed successfully!"
|
250
248
|
'''
|
251
|
-
|
249
|
+
|
252
250
|
with open(script_path, 'w') as f:
|
253
251
|
f.write(script_content)
|
254
|
-
|
252
|
+
|
255
253
|
# Make executable
|
256
254
|
script_path.chmod(0o755)
|
257
|
-
|
255
|
+
|
258
256
|
self.stdout.write(f' š Shell script created: {script_path}')
|
259
257
|
self.stdout.write(' š” Edit the script to add your custom logic')
|
260
258
|
|
@@ -263,14 +261,14 @@ echo "ā
Script completed successfully!"
|
|
263
261
|
# Create management commands directory
|
264
262
|
commands_dir = Path('management/commands')
|
265
263
|
commands_dir.mkdir(parents=True, exist_ok=True)
|
266
|
-
|
264
|
+
|
267
265
|
# Create __init__.py files
|
268
266
|
(commands_dir.parent / '__init__.py').touch()
|
269
267
|
(commands_dir / '__init__.py').touch()
|
270
|
-
|
268
|
+
|
271
269
|
# Create command file
|
272
270
|
command_path = commands_dir / f'{command_name}.py'
|
273
|
-
|
271
|
+
|
274
272
|
command_content = f'''"""
|
275
273
|
{command_name.title()} Command
|
276
274
|
Auto-generated Django management command.
|
@@ -297,40 +295,40 @@ class Command(BaseCommand):
|
|
297
295
|
|
298
296
|
self.stdout.write(self.style.SUCCESS('ā
Command completed successfully!'))
|
299
297
|
'''
|
300
|
-
|
298
|
+
|
301
299
|
with open(command_path, 'w') as f:
|
302
300
|
f.write(command_content)
|
303
|
-
|
301
|
+
|
304
302
|
self.stdout.write(f' š Django command created: {command_path}')
|
305
303
|
self.stdout.write(' š” Run with: python manage.py {command_name}')
|
306
304
|
|
307
305
|
def run_script_interactive(self):
|
308
306
|
"""Run script interactively"""
|
309
307
|
self.stdout.write(self.style.SUCCESS('ā¶ļø Run Script\n'))
|
310
|
-
|
308
|
+
|
311
309
|
# List available scripts
|
312
310
|
scripts_dir = Path('scripts')
|
313
311
|
if not scripts_dir.exists():
|
314
312
|
self.stdout.write('ā No scripts directory found')
|
315
313
|
return
|
316
|
-
|
314
|
+
|
317
315
|
# Get available scripts
|
318
316
|
python_scripts = [s.stem for s in scripts_dir.glob('*.py') if s.name != '__init__.py']
|
319
317
|
shell_scripts = [s.stem for s in scripts_dir.glob('*.sh')]
|
320
|
-
|
318
|
+
|
321
319
|
if not python_scripts and not shell_scripts:
|
322
320
|
self.stdout.write('ā No scripts found')
|
323
321
|
return
|
324
|
-
|
322
|
+
|
325
323
|
# Create choices
|
326
324
|
choices = []
|
327
325
|
if python_scripts:
|
328
326
|
choices.append(questionary.Choice('š Python Scripts', value='python'))
|
329
327
|
if shell_scripts:
|
330
328
|
choices.append(questionary.Choice('š Shell Scripts', value='shell'))
|
331
|
-
|
329
|
+
|
332
330
|
script_type = questionary.select('Script type:', choices=choices).ask()
|
333
|
-
|
331
|
+
|
334
332
|
if script_type == 'python':
|
335
333
|
script_name = questionary.select('Select script:', choices=python_scripts).ask()
|
336
334
|
self.run_python_script(script_name)
|
@@ -342,7 +340,7 @@ class Command(BaseCommand):
|
|
342
340
|
"""Run specific script"""
|
343
341
|
script_path = Path('scripts') / f'{script_name}.py'
|
344
342
|
shell_script_path = Path('scripts') / f'{script_name}.sh'
|
345
|
-
|
343
|
+
|
346
344
|
if script_path.exists():
|
347
345
|
self.run_python_script(script_name)
|
348
346
|
elif shell_script_path.exists():
|
@@ -353,64 +351,64 @@ class Command(BaseCommand):
|
|
353
351
|
def run_python_script(self, script_name):
|
354
352
|
"""Run Python script"""
|
355
353
|
script_path = Path('scripts') / f'{script_name}.py'
|
356
|
-
|
354
|
+
|
357
355
|
if not script_path.exists():
|
358
356
|
self.stdout.write(self.style.ERROR(f'ā Script {script_name} not found'))
|
359
357
|
return
|
360
|
-
|
358
|
+
|
361
359
|
self.stdout.write(self.style.SUCCESS(f'š Running Python script: {script_name}'))
|
362
|
-
|
360
|
+
|
363
361
|
try:
|
364
362
|
# Run script in Django context
|
365
363
|
result = subprocess.run([
|
366
364
|
sys.executable, str(script_path)
|
367
365
|
], capture_output=True, text=True, cwd=Path.cwd())
|
368
|
-
|
366
|
+
|
369
367
|
if result.stdout:
|
370
368
|
self.stdout.write(result.stdout)
|
371
369
|
if result.stderr:
|
372
370
|
self.stdout.write(self.style.WARNING(result.stderr))
|
373
|
-
|
371
|
+
|
374
372
|
if result.returncode == 0:
|
375
373
|
self.stdout.write(self.style.SUCCESS('ā
Script completed successfully!'))
|
376
374
|
else:
|
377
375
|
self.stdout.write(self.style.ERROR('ā Script failed'))
|
378
|
-
|
376
|
+
|
379
377
|
except Exception as e:
|
380
378
|
self.stdout.write(self.style.ERROR(f'ā Error running script: {e}'))
|
381
379
|
|
382
380
|
def run_shell_script(self, script_name):
|
383
381
|
"""Run shell script"""
|
384
382
|
script_path = Path('scripts') / f'{script_name}.sh'
|
385
|
-
|
383
|
+
|
386
384
|
if not script_path.exists():
|
387
385
|
self.stdout.write(self.style.ERROR(f'ā Script {script_name} not found'))
|
388
386
|
return
|
389
|
-
|
387
|
+
|
390
388
|
self.stdout.write(self.style.SUCCESS(f'š Running shell script: {script_name}'))
|
391
|
-
|
389
|
+
|
392
390
|
try:
|
393
391
|
result = subprocess.run([
|
394
392
|
'bash', str(script_path)
|
395
393
|
], capture_output=True, text=True, cwd=Path.cwd())
|
396
|
-
|
394
|
+
|
397
395
|
if result.stdout:
|
398
396
|
self.stdout.write(result.stdout)
|
399
397
|
if result.stderr:
|
400
398
|
self.stdout.write(self.style.WARNING(result.stderr))
|
401
|
-
|
399
|
+
|
402
400
|
if result.returncode == 0:
|
403
401
|
self.stdout.write(self.style.SUCCESS('ā
Script completed successfully!'))
|
404
402
|
else:
|
405
403
|
self.stdout.write(self.style.ERROR('ā Script failed'))
|
406
|
-
|
404
|
+
|
407
405
|
except Exception as e:
|
408
406
|
self.stdout.write(self.style.ERROR(f'ā Error running script: {e}'))
|
409
407
|
|
410
408
|
def open_django_shell(self):
|
411
409
|
"""Open Django shell"""
|
412
410
|
self.stdout.write(self.style.SUCCESS('š Opening Django Shell...'))
|
413
|
-
|
411
|
+
|
414
412
|
try:
|
415
413
|
call_command('shell')
|
416
414
|
except Exception as e:
|
@@ -419,7 +417,7 @@ class Command(BaseCommand):
|
|
419
417
|
def run_django_check(self):
|
420
418
|
"""Run Django system check"""
|
421
419
|
self.stdout.write(self.style.SUCCESS('š Running Django System Check...'))
|
422
|
-
|
420
|
+
|
423
421
|
try:
|
424
422
|
call_command('check', verbosity=2)
|
425
423
|
self.stdout.write(self.style.SUCCESS('ā
System check completed'))
|
@@ -429,7 +427,7 @@ class Command(BaseCommand):
|
|
429
427
|
def clean_project(self):
|
430
428
|
"""Clean project files"""
|
431
429
|
self.stdout.write(self.style.SUCCESS('š§¹ Cleaning Project...'))
|
432
|
-
|
430
|
+
|
433
431
|
# Files to clean
|
434
432
|
files_to_clean = [
|
435
433
|
'*.pyc',
|
@@ -440,7 +438,7 @@ class Command(BaseCommand):
|
|
440
438
|
'media/',
|
441
439
|
'staticfiles/',
|
442
440
|
]
|
443
|
-
|
441
|
+
|
444
442
|
for pattern in files_to_clean:
|
445
443
|
if '*' in pattern:
|
446
444
|
# Handle glob patterns
|
@@ -455,26 +453,26 @@ class Command(BaseCommand):
|
|
455
453
|
import shutil
|
456
454
|
shutil.rmtree(dir_path)
|
457
455
|
self.stdout.write(f' šļø Deleted directory: {dir_path}')
|
458
|
-
|
456
|
+
|
459
457
|
self.stdout.write(self.style.SUCCESS('ā
Project cleaned'))
|
460
458
|
|
461
459
|
def show_project_info(self):
|
462
460
|
"""Show project information"""
|
463
461
|
self.stdout.write(self.style.SUCCESS('š Project Information\n'))
|
464
|
-
|
462
|
+
|
465
463
|
# Django version
|
466
464
|
import django
|
467
465
|
self.stdout.write(f'š Python: {sys.version}')
|
468
466
|
self.stdout.write(f'šÆ Django: {django.get_version()}')
|
469
|
-
|
467
|
+
|
470
468
|
# Project settings
|
471
469
|
self.stdout.write(f'š Project: {settings.SETTINGS_MODULE}')
|
472
470
|
self.stdout.write(f'š§ Debug: {settings.DEBUG}')
|
473
471
|
self.stdout.write(f'š Allowed Hosts: {settings.ALLOWED_HOSTS}')
|
474
|
-
|
472
|
+
|
475
473
|
# Installed apps count
|
476
474
|
self.stdout.write(f'š¦ Installed Apps: {len(settings.INSTALLED_APPS)}')
|
477
|
-
|
475
|
+
|
478
476
|
# Database info
|
479
477
|
if hasattr(settings, 'DATABASES'):
|
480
478
|
self.stdout.write(f'šļø Databases: {len(settings.DATABASES)}')
|
@@ -487,10 +485,10 @@ class Command(BaseCommand):
|
|
487
485
|
from django_cfg.core.state import get_current_config
|
488
486
|
config = get_current_config()
|
489
487
|
if config:
|
490
|
-
self.stdout.write(
|
488
|
+
self.stdout.write('āļø Django-CFG: Loaded')
|
491
489
|
if hasattr(config, 'project_name'):
|
492
490
|
self.stdout.write(f' - Project: {config.project_name}')
|
493
491
|
else:
|
494
|
-
self.stdout.write(
|
492
|
+
self.stdout.write('ā ļø Django-CFG: No config loaded')
|
495
493
|
except Exception as e:
|
496
494
|
self.stdout.write(f'ā Django-CFG: Error - {e}')
|
@@ -8,8 +8,10 @@ Usage:
|
|
8
8
|
|
9
9
|
import json
|
10
10
|
import os
|
11
|
-
|
11
|
+
|
12
12
|
from django.conf import settings
|
13
|
+
from django.core.management.base import BaseCommand
|
14
|
+
|
13
15
|
from django_cfg.modules.django_logging import get_logger
|
14
16
|
|
15
17
|
logger = get_logger('show_config')
|
@@ -43,14 +45,14 @@ class Command(BaseCommand):
|
|
43
45
|
# Get the config instance from Django settings
|
44
46
|
config = self._get_config_instance()
|
45
47
|
logger.info("Successfully retrieved configuration instance")
|
46
|
-
|
48
|
+
|
47
49
|
if options['format'] == 'json':
|
48
50
|
logger.info("Displaying configuration in JSON format")
|
49
51
|
self._show_json_format(config, options['include_secrets'])
|
50
52
|
else:
|
51
53
|
logger.info("Displaying configuration in table format")
|
52
54
|
self._show_table_format(config, options['include_secrets'])
|
53
|
-
|
55
|
+
|
54
56
|
logger.info("show_config command completed successfully")
|
55
57
|
except Exception as e:
|
56
58
|
error_msg = f'Failed to show configuration: {e}'
|
@@ -65,11 +67,11 @@ class Command(BaseCommand):
|
|
65
67
|
settings_module = os.environ.get('DJANGO_SETTINGS_MODULE')
|
66
68
|
if not settings_module:
|
67
69
|
raise ValueError("DJANGO_SETTINGS_MODULE environment variable not set")
|
68
|
-
|
70
|
+
|
69
71
|
# Import the settings module and get the config
|
70
72
|
import importlib
|
71
73
|
settings_mod = importlib.import_module(settings_module)
|
72
|
-
|
74
|
+
|
73
75
|
if hasattr(settings_mod, 'config'):
|
74
76
|
return settings_mod.config
|
75
77
|
else:
|
@@ -88,7 +90,7 @@ class Command(BaseCommand):
|
|
88
90
|
self.style.HTTP_INFO('š Django Config - Current Configuration')
|
89
91
|
)
|
90
92
|
self.stdout.write('=' * 80)
|
91
|
-
|
93
|
+
|
92
94
|
# Project section
|
93
95
|
self.stdout.write(self.style.SUCCESS('\nš Project'))
|
94
96
|
self.stdout.write('-' * 40)
|
@@ -97,10 +99,10 @@ class Command(BaseCommand):
|
|
97
99
|
('Version', getattr(config, 'project_version', 'N/A')),
|
98
100
|
('Description', getattr(config, 'project_description', 'N/A')),
|
99
101
|
]
|
100
|
-
|
102
|
+
|
101
103
|
for key, value in project_data:
|
102
104
|
self.stdout.write(f' {key:<20}: {value}')
|
103
|
-
|
105
|
+
|
104
106
|
# Environment section
|
105
107
|
self.stdout.write(self.style.SUCCESS('\nš Environment'))
|
106
108
|
self.stdout.write('-' * 40)
|
@@ -109,19 +111,19 @@ class Command(BaseCommand):
|
|
109
111
|
('Debug Mode', config.debug),
|
110
112
|
('Security Domains', ', '.join(config.security_domains) if config.security_domains else 'None'),
|
111
113
|
]
|
112
|
-
|
114
|
+
|
113
115
|
if include_secrets:
|
114
116
|
env_data.append(('Secret Key', config.secret_key[:20] + '...'))
|
115
117
|
else:
|
116
118
|
env_data.append(('Secret Key', '[HIDDEN]'))
|
117
|
-
|
119
|
+
|
118
120
|
for key, value in env_data:
|
119
121
|
self.stdout.write(f' {key:<20}: {value}')
|
120
|
-
|
122
|
+
|
121
123
|
# Database section
|
122
124
|
self.stdout.write(self.style.SUCCESS('\nšļø Databases'))
|
123
125
|
self.stdout.write('-' * 40)
|
124
|
-
|
126
|
+
|
125
127
|
for db_name, db_config in config.databases.items():
|
126
128
|
self.stdout.write(f' {db_name}:')
|
127
129
|
self.stdout.write(f' Engine: {db_config.engine}')
|
@@ -130,15 +132,15 @@ class Command(BaseCommand):
|
|
130
132
|
self.stdout.write(f' Host: {db_config.host}')
|
131
133
|
self.stdout.write(f' Port: {db_config.port}')
|
132
134
|
else:
|
133
|
-
self.stdout.write(
|
134
|
-
self.stdout.write(
|
135
|
-
self.stdout.write(
|
136
|
-
|
135
|
+
self.stdout.write(' Name: [HIDDEN]')
|
136
|
+
self.stdout.write(' Host: [HIDDEN]')
|
137
|
+
self.stdout.write(' Port: [HIDDEN]')
|
138
|
+
|
137
139
|
# Cache section
|
138
140
|
cache_configured = False
|
139
141
|
if hasattr(config, 'cache_default') and config.cache_default:
|
140
142
|
cache_configured = True
|
141
|
-
|
143
|
+
|
142
144
|
if cache_configured:
|
143
145
|
self.stdout.write(self.style.SUCCESS('\nā” Cache'))
|
144
146
|
self.stdout.write('-' * 40)
|
@@ -146,40 +148,40 @@ class Command(BaseCommand):
|
|
146
148
|
('Default Cache', 'Configured'),
|
147
149
|
('Sessions Cache', 'Configured' if hasattr(config, 'cache_sessions') and config.cache_sessions else 'Not configured'),
|
148
150
|
]
|
149
|
-
|
151
|
+
|
150
152
|
for key, value in cache_data:
|
151
153
|
self.stdout.write(f' {key:<20}: {value}')
|
152
|
-
|
154
|
+
|
153
155
|
# Services section
|
154
156
|
services_configured = []
|
155
157
|
if hasattr(config, 'email') and config.email:
|
156
158
|
services_configured.append(('Email', 'Configured'))
|
157
159
|
if hasattr(config, 'telegram') and config.telegram:
|
158
160
|
services_configured.append(('Telegram', 'Configured'))
|
159
|
-
|
161
|
+
|
160
162
|
if services_configured:
|
161
163
|
self.stdout.write(self.style.SUCCESS('\nš§ Services'))
|
162
164
|
self.stdout.write('-' * 40)
|
163
|
-
|
165
|
+
|
164
166
|
for key, value in services_configured:
|
165
167
|
self.stdout.write(f' {key:<20}: {value}')
|
166
|
-
|
168
|
+
|
167
169
|
# Apps section
|
168
170
|
if hasattr(config, 'project_apps') and config.project_apps:
|
169
171
|
self.stdout.write(self.style.SUCCESS('\nš¦ Project Apps'))
|
170
172
|
self.stdout.write('-' * 40)
|
171
|
-
|
173
|
+
|
172
174
|
for app in config.project_apps:
|
173
175
|
self.stdout.write(f' ⢠{app}')
|
174
|
-
|
176
|
+
|
175
177
|
# Custom Middleware section
|
176
178
|
if hasattr(config, 'custom_middleware') and config.custom_middleware:
|
177
179
|
self.stdout.write(self.style.SUCCESS('\nš”ļø Custom Middleware'))
|
178
180
|
self.stdout.write('-' * 40)
|
179
|
-
|
181
|
+
|
180
182
|
for middleware in config.custom_middleware:
|
181
183
|
self.stdout.write(f' ⢠{middleware}')
|
182
|
-
|
184
|
+
|
183
185
|
self.stdout.write('\n' + '=' * 80)
|
184
186
|
|
185
187
|
def _show_json_format(self, config, include_secrets=False):
|
@@ -209,7 +211,7 @@ class Command(BaseCommand):
|
|
209
211
|
'custom_middleware': getattr(config, 'custom_middleware', []),
|
210
212
|
}
|
211
213
|
}
|
212
|
-
|
214
|
+
|
213
215
|
# Add database info
|
214
216
|
for db_name, db_config in config.databases.items():
|
215
217
|
config_data['databases'][db_name] = {
|
@@ -218,8 +220,8 @@ class Command(BaseCommand):
|
|
218
220
|
'host': db_config.host if include_secrets else '[HIDDEN]',
|
219
221
|
'port': db_config.port if include_secrets else '[HIDDEN]',
|
220
222
|
}
|
221
|
-
|
223
|
+
|
222
224
|
if include_secrets:
|
223
225
|
config_data['environment']['secret_key'] = config.secret_key
|
224
|
-
|
225
|
-
self.stdout.write(json.dumps(config_data, indent=2, default=str))
|
226
|
+
|
227
|
+
self.stdout.write(json.dumps(config_data, indent=2, default=str))
|