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
django_cfg/routing/callbacks.py
CHANGED
@@ -4,13 +4,15 @@ Dashboard Callback System
|
|
4
4
|
Provides callback utilities for Unfold dashboard integration.
|
5
5
|
"""
|
6
6
|
|
7
|
-
from typing import Dict, Any, List, Optional, Callable
|
8
7
|
from datetime import datetime, timedelta
|
9
|
-
from
|
8
|
+
from typing import Any, Dict, List
|
9
|
+
|
10
|
+
from django.conf import settings
|
10
11
|
from django.contrib.auth import get_user_model
|
11
12
|
from django.contrib.contenttypes.models import ContentType
|
12
13
|
from django.db import connection
|
13
|
-
from django.
|
14
|
+
from django.http import HttpRequest
|
15
|
+
|
14
16
|
from ..modules.base import BaseCfgModule
|
15
17
|
|
16
18
|
|
@@ -21,15 +23,15 @@ def dashboard_callback(request: HttpRequest, context: Dict[str, Any]) -> Dict[st
|
|
21
23
|
Returns enhanced context with dashboard data.
|
22
24
|
"""
|
23
25
|
User = get_user_model()
|
24
|
-
|
26
|
+
|
25
27
|
# Get basic stats
|
26
28
|
user_count = User.objects.count()
|
27
|
-
|
29
|
+
|
28
30
|
# Database info
|
29
31
|
with connection.cursor() as cursor:
|
30
32
|
cursor.execute("SELECT COUNT(*) FROM django_session")
|
31
33
|
session_count = cursor.fetchone()[0]
|
32
|
-
|
34
|
+
|
33
35
|
# Add dashboard data to context
|
34
36
|
context.update({
|
35
37
|
"dashboard": [
|
@@ -50,7 +52,7 @@ def dashboard_callback(request: HttpRequest, context: Dict[str, Any]) -> Dict[st
|
|
50
52
|
}
|
51
53
|
]
|
52
54
|
})
|
53
|
-
|
55
|
+
|
54
56
|
return context
|
55
57
|
|
56
58
|
|
@@ -61,11 +63,11 @@ def environment_callback(request: HttpRequest) -> Dict[str, Any]:
|
|
61
63
|
Returns environment information and system status.
|
62
64
|
"""
|
63
65
|
|
64
|
-
|
66
|
+
|
65
67
|
# Use BaseCfgModule to get config
|
66
68
|
base_module = BaseCfgModule()
|
67
69
|
config = base_module.get_config()
|
68
|
-
|
70
|
+
|
69
71
|
return {
|
70
72
|
"environment": getattr(config, 'environment', 'development'),
|
71
73
|
"debug": getattr(config, 'debug', False),
|
@@ -93,10 +95,10 @@ def permission_callback(request: HttpRequest) -> Dict[str, Any]:
|
|
93
95
|
"""
|
94
96
|
if not request.user.is_authenticated:
|
95
97
|
return {"permissions": [], "groups": []}
|
96
|
-
|
98
|
+
|
97
99
|
user_permissions = list(request.user.get_all_permissions())
|
98
100
|
user_groups = list(request.user.groups.values_list('name', flat=True))
|
99
|
-
|
101
|
+
|
100
102
|
return {
|
101
103
|
"permissions": user_permissions,
|
102
104
|
"groups": user_groups,
|
@@ -112,37 +114,37 @@ def search_callback(request: HttpRequest, query: str) -> List[Dict[str, Any]]:
|
|
112
114
|
Provides search functionality across models.
|
113
115
|
"""
|
114
116
|
|
115
|
-
|
117
|
+
|
116
118
|
results = []
|
117
|
-
|
119
|
+
|
118
120
|
if len(query) < 2:
|
119
121
|
return results
|
120
|
-
|
122
|
+
|
121
123
|
# Search users
|
122
124
|
User = get_user_model()
|
123
125
|
users = User.objects.filter(
|
124
126
|
username__icontains=query
|
125
127
|
).values('id', 'username', 'email')[:5]
|
126
|
-
|
128
|
+
|
127
129
|
for user in users:
|
128
130
|
results.append({
|
129
131
|
"title": f"User: {user['username']}",
|
130
132
|
"url": f"/admin/auth/user/{user['id']}/change/",
|
131
133
|
"description": user.get('email', ''),
|
132
134
|
})
|
133
|
-
|
135
|
+
|
134
136
|
# Search content types (as a proxy for apps/models)
|
135
137
|
content_types = ContentType.objects.filter(
|
136
138
|
model__icontains=query
|
137
139
|
).values('app_label', 'model')[:5]
|
138
|
-
|
140
|
+
|
139
141
|
for ct in content_types:
|
140
142
|
results.append({
|
141
143
|
"title": f"Model: {ct['app_label']}.{ct['model']}",
|
142
144
|
"url": f"/admin/{ct['app_label']}/{ct['model']}/",
|
143
145
|
"description": f"Manage {ct['model']} objects",
|
144
146
|
})
|
145
|
-
|
147
|
+
|
146
148
|
return results
|
147
149
|
|
148
150
|
|
@@ -153,16 +155,15 @@ def badge_callback(request: HttpRequest) -> List[Dict[str, Any]]:
|
|
153
155
|
Returns notification badges and counters.
|
154
156
|
"""
|
155
157
|
from django.contrib.auth import get_user_model
|
156
|
-
|
158
|
+
|
157
159
|
User = get_user_model()
|
158
|
-
|
160
|
+
|
159
161
|
# Count new users in last 24 hours
|
160
|
-
from datetime import datetime, timedelta
|
161
162
|
yesterday = datetime.now() - timedelta(days=1)
|
162
163
|
new_users = User.objects.filter(date_joined__gte=yesterday).count()
|
163
|
-
|
164
|
+
|
164
165
|
badges = []
|
165
|
-
|
166
|
+
|
166
167
|
if new_users > 0:
|
167
168
|
badges.append({
|
168
169
|
"title": "New Users",
|
@@ -170,7 +171,7 @@ def badge_callback(request: HttpRequest) -> List[Dict[str, Any]]:
|
|
170
171
|
"color": "primary",
|
171
172
|
"url": "/admin/auth/user/?date_joined__gte=" + yesterday.strftime('%Y-%m-%d'),
|
172
173
|
})
|
173
|
-
|
174
|
+
|
174
175
|
# Add system health badge
|
175
176
|
badges.append({
|
176
177
|
"title": "System",
|
@@ -178,7 +179,7 @@ def badge_callback(request: HttpRequest) -> List[Dict[str, Any]]:
|
|
178
179
|
"color": "success",
|
179
180
|
"url": "/admin/",
|
180
181
|
})
|
181
|
-
|
182
|
+
|
182
183
|
return badges
|
183
184
|
|
184
185
|
|
@@ -191,7 +192,7 @@ def get_unfold_callbacks() -> Dict[str, str]:
|
|
191
192
|
"""
|
192
193
|
return {
|
193
194
|
"dashboard_callback": "django_cfg.routing.callbacks.dashboard_callback",
|
194
|
-
"environment_callback": "django_cfg.routing.callbacks.environment_callback",
|
195
|
+
"environment_callback": "django_cfg.routing.callbacks.environment_callback",
|
195
196
|
"permission_callback": "django_cfg.routing.callbacks.permission_callback",
|
196
197
|
"search_callback": "django_cfg.routing.callbacks.search_callback",
|
197
198
|
"badge_callback": "django_cfg.routing.callbacks.badge_callback",
|
django_cfg/routing/routers.py
CHANGED
@@ -21,7 +21,7 @@ class DatabaseRouter:
|
|
21
21
|
return rules.get(model._meta.app_label)
|
22
22
|
|
23
23
|
def db_for_write(self, model, **hints):
|
24
|
-
"""Route writes to correct database."""
|
24
|
+
"""Route writes to correct database."""
|
25
25
|
rules = getattr(settings, 'DATABASE_ROUTING_RULES', {})
|
26
26
|
return rules.get(model._meta.app_label)
|
27
27
|
|
@@ -56,6 +56,6 @@ class DatabaseRouter:
|
|
56
56
|
elif db in rules.values():
|
57
57
|
# This app is NOT configured, but the target DB is used by other apps
|
58
58
|
return db == 'default'
|
59
|
-
|
59
|
+
|
60
60
|
# Allow migration to default
|
61
61
|
return None
|
@@ -0,0 +1,69 @@
|
|
1
|
+
import { BaseAPIClient } from '../base.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Accounts API Client
|
5
|
+
* Auto-generated from OpenAPI schema
|
6
|
+
* @module accounts
|
7
|
+
* @extends BaseAPIClient
|
8
|
+
*/
|
9
|
+
export class AccountsAPI extends BaseAPIClient {
|
10
|
+
/**
|
11
|
+
* Initialize accounts API client
|
12
|
+
* @param {string} [baseURL] - Optional base URL
|
13
|
+
*/
|
14
|
+
constructor(baseURL) {
|
15
|
+
super(baseURL);
|
16
|
+
}
|
17
|
+
|
18
|
+
/**
|
19
|
+
* accountsOtpRequestCreate * Request OTP code to email or phone. * @param {OTPRequestRequest} data - Request body * @returns {Promise<OTPRequestResponse>} Response data
|
20
|
+
*/
|
21
|
+
async accountsOtpRequestCreate(data) {
|
22
|
+
const path = `/cfg/accounts/otp/request/`; return this.post(path, data); }
|
23
|
+
/**
|
24
|
+
* accountsOtpVerifyCreate * Verify OTP code and return JWT tokens. * @param {OTPVerifyRequest} data - Request body * @returns {Promise<OTPVerifyResponse>} Response data
|
25
|
+
*/
|
26
|
+
async accountsOtpVerifyCreate(data) {
|
27
|
+
const path = `/cfg/accounts/otp/verify/`; return this.post(path, data); }
|
28
|
+
/**
|
29
|
+
* Get current user profile * Retrieve the current authenticated user's profile information. * @returns {Promise<User>} Response data
|
30
|
+
*/
|
31
|
+
async accountsProfileRetrieve() {
|
32
|
+
const path = `/cfg/accounts/profile/`; return this.get(path); }
|
33
|
+
/**
|
34
|
+
* Upload user avatar * Upload avatar image for the current authenticated user. Accepts multipart/form-data with 'avatar' field. * @param {any} data - Request body * @returns {Promise<User>} Response data
|
35
|
+
*/
|
36
|
+
async accountsProfileAvatarCreate(data) {
|
37
|
+
const path = `/cfg/accounts/profile/avatar/`; return this.post(path, data); }
|
38
|
+
/**
|
39
|
+
* Partial update user profile * Partially update the current authenticated user's profile information. Supports avatar upload. * @param {UserProfileUpdateRequest} data - Request body * @returns {Promise<User>} Response data
|
40
|
+
*/
|
41
|
+
async accountsProfilePartialUpdate(data) {
|
42
|
+
const path = `/cfg/accounts/profile/partial/`; return this.put(path, data); }
|
43
|
+
/**
|
44
|
+
* Partial update user profile * Partially update the current authenticated user's profile information. Supports avatar upload. * @param {PatchedUserProfileUpdateRequest} data - Request body * @returns {Promise<User>} Response data
|
45
|
+
*/
|
46
|
+
async accountsProfilePartialPartialUpdate(data) {
|
47
|
+
const path = `/cfg/accounts/profile/partial/`; return this.patch(path, data); }
|
48
|
+
/**
|
49
|
+
* Update user profile * Update the current authenticated user's profile information. * @param {UserProfileUpdateRequest} data - Request body * @returns {Promise<User>} Response data
|
50
|
+
*/
|
51
|
+
async accountsProfileUpdateUpdate(data) {
|
52
|
+
const path = `/cfg/accounts/profile/update/`; return this.put(path, data); }
|
53
|
+
/**
|
54
|
+
* Update user profile * Update the current authenticated user's profile information. * @param {PatchedUserProfileUpdateRequest} data - Request body * @returns {Promise<User>} Response data
|
55
|
+
*/
|
56
|
+
async accountsProfileUpdatePartialUpdate(data) {
|
57
|
+
const path = `/cfg/accounts/profile/update/`; return this.patch(path, data); }
|
58
|
+
/**
|
59
|
+
* accountsTokenRefreshCreate * Refresh JWT token. * @param {TokenRefreshRequest} data - Request body * @returns {Promise<TokenRefresh>} Response data
|
60
|
+
*/
|
61
|
+
async accountsTokenRefreshCreate(data) {
|
62
|
+
const path = `/cfg/accounts/token/refresh/`; return this.post(path, data); }
|
63
|
+
}
|
64
|
+
|
65
|
+
// Default instance for convenience
|
66
|
+
export const accountsAPI = new AccountsAPI();
|
67
|
+
|
68
|
+
// Default export
|
69
|
+
export default AccountsAPI;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/**
|
2
|
+
* Accounts API Module
|
3
|
+
* Re-exports the API client for convenient importing
|
4
|
+
* @module accounts
|
5
|
+
*/
|
6
|
+
|
7
|
+
import { AccountsAPI, accountsAPI } from './client.mjs';
|
8
|
+
|
9
|
+
// Re-export the class and instance
|
10
|
+
export { AccountsAPI, accountsAPI };
|
11
|
+
|
12
|
+
// Default export is the instance for convenience
|
13
|
+
export default accountsAPI;
|
@@ -0,0 +1,166 @@
|
|
1
|
+
/**
|
2
|
+
* Base API Client for django-cfg
|
3
|
+
* Lightweight ES Module with JSDoc type annotations
|
4
|
+
* @module base
|
5
|
+
*/
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Custom error class for API errors
|
9
|
+
* @class APIError
|
10
|
+
* @extends Error
|
11
|
+
*/
|
12
|
+
class APIError extends Error {
|
13
|
+
/**
|
14
|
+
* @param {string} message - Error message
|
15
|
+
* @param {number} status - HTTP status code
|
16
|
+
* @param {any} data - Additional error data
|
17
|
+
*/
|
18
|
+
constructor(message, status, data) {
|
19
|
+
super(message);
|
20
|
+
this.name = 'APIError';
|
21
|
+
this.status = status;
|
22
|
+
this.data = data;
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
/**
|
27
|
+
* Get Django CSRF token from cookies
|
28
|
+
* @returns {string} CSRF token value
|
29
|
+
*/
|
30
|
+
function getCsrfToken() {
|
31
|
+
const cookie = document.cookie.split('; ')
|
32
|
+
.find(row => row.startsWith('csrftoken='));
|
33
|
+
return cookie ? cookie.split('=')[1] : '';
|
34
|
+
}
|
35
|
+
|
36
|
+
/**
|
37
|
+
* @typedef {Object} RequestOptions
|
38
|
+
* @property {string} [method='GET'] - HTTP method
|
39
|
+
* @property {Object} [headers={}] - Request headers
|
40
|
+
* @property {any} [body] - Request body
|
41
|
+
* @property {string} [credentials='same-origin'] - Credentials mode
|
42
|
+
*/
|
43
|
+
|
44
|
+
/**
|
45
|
+
* Base API client class with built-in Django CSRF support
|
46
|
+
* @class BaseAPIClient
|
47
|
+
*/
|
48
|
+
export class BaseAPIClient {
|
49
|
+
/**
|
50
|
+
* Initialize the API client
|
51
|
+
* @param {string} [baseURL=''] - Base URL for API requests (defaults to current origin)
|
52
|
+
*/
|
53
|
+
constructor(baseURL = '') {
|
54
|
+
this.baseURL = baseURL || window.location.origin;
|
55
|
+
}
|
56
|
+
|
57
|
+
/**
|
58
|
+
* Make an API request
|
59
|
+
* @param {string} path - API endpoint path
|
60
|
+
* @param {RequestOptions} [options={}] - Request options
|
61
|
+
* @returns {Promise<any>} Response data
|
62
|
+
* @throws {APIError} When request fails
|
63
|
+
*/
|
64
|
+
async request(path, options = {}) {
|
65
|
+
const url = `${this.baseURL}${path}`;
|
66
|
+
|
67
|
+
// Default headers with CSRF token
|
68
|
+
const headers = {
|
69
|
+
'Content-Type': 'application/json',
|
70
|
+
'X-CSRFToken': getCsrfToken(),
|
71
|
+
...options.headers
|
72
|
+
};
|
73
|
+
|
74
|
+
try {
|
75
|
+
const response = await fetch(url, {
|
76
|
+
...options,
|
77
|
+
headers,
|
78
|
+
credentials: 'same-origin'
|
79
|
+
});
|
80
|
+
|
81
|
+
if (!response.ok) {
|
82
|
+
const error = await response.json().catch(() => ({}));
|
83
|
+
throw new APIError(
|
84
|
+
error.detail || `HTTP ${response.status}`,
|
85
|
+
response.status,
|
86
|
+
error
|
87
|
+
);
|
88
|
+
}
|
89
|
+
|
90
|
+
// Handle empty responses
|
91
|
+
if (response.status === 204) {
|
92
|
+
return null;
|
93
|
+
}
|
94
|
+
|
95
|
+
return await response.json();
|
96
|
+
} catch (error) {
|
97
|
+
if (error instanceof APIError) {
|
98
|
+
throw error;
|
99
|
+
}
|
100
|
+
throw new APIError(error.message, 0, null);
|
101
|
+
}
|
102
|
+
}
|
103
|
+
|
104
|
+
/**
|
105
|
+
* Make a GET request
|
106
|
+
* @param {string} path - API endpoint path
|
107
|
+
* @param {Object} [params={}] - Query parameters
|
108
|
+
* @returns {Promise<any>} Response data
|
109
|
+
*/
|
110
|
+
async get(path, params = {}) {
|
111
|
+
const queryString = new URLSearchParams(params).toString();
|
112
|
+
const fullPath = queryString ? `${path}?${queryString}` : path;
|
113
|
+
return this.request(fullPath, { method: 'GET' });
|
114
|
+
}
|
115
|
+
|
116
|
+
/**
|
117
|
+
* Make a POST request
|
118
|
+
* @param {string} path - API endpoint path
|
119
|
+
* @param {any} [data={}] - Request body data
|
120
|
+
* @returns {Promise<any>} Response data
|
121
|
+
*/
|
122
|
+
async post(path, data = {}) {
|
123
|
+
return this.request(path, {
|
124
|
+
method: 'POST',
|
125
|
+
body: JSON.stringify(data)
|
126
|
+
});
|
127
|
+
}
|
128
|
+
|
129
|
+
/**
|
130
|
+
* Make a PUT request
|
131
|
+
* @param {string} path - API endpoint path
|
132
|
+
* @param {any} [data={}] - Request body data
|
133
|
+
* @returns {Promise<any>} Response data
|
134
|
+
*/
|
135
|
+
async put(path, data = {}) {
|
136
|
+
return this.request(path, {
|
137
|
+
method: 'PUT',
|
138
|
+
body: JSON.stringify(data)
|
139
|
+
});
|
140
|
+
}
|
141
|
+
|
142
|
+
/**
|
143
|
+
* Make a PATCH request
|
144
|
+
* @param {string} path - API endpoint path
|
145
|
+
* @param {any} [data={}] - Request body data
|
146
|
+
* @returns {Promise<any>} Response data
|
147
|
+
*/
|
148
|
+
async patch(path, data = {}) {
|
149
|
+
return this.request(path, {
|
150
|
+
method: 'PATCH',
|
151
|
+
body: JSON.stringify(data)
|
152
|
+
});
|
153
|
+
}
|
154
|
+
|
155
|
+
/**
|
156
|
+
* Make a DELETE request
|
157
|
+
* @param {string} path - API endpoint path
|
158
|
+
* @returns {Promise<any>} Response data
|
159
|
+
*/
|
160
|
+
async delete(path) {
|
161
|
+
return this.request(path, { method: 'DELETE' });
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
// Export the error class as well
|
166
|
+
export { APIError };
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/**
|
2
|
+
* Django CFG API Clients
|
3
|
+
* Lightweight ES Modules with JSDoc type annotations
|
4
|
+
* Organized by Django apps
|
5
|
+
*
|
6
|
+
* @module django-cfg-api
|
7
|
+
*
|
8
|
+
* @example
|
9
|
+
* // Import specific app API
|
10
|
+
* import { tasksAPI } from '/static/js/api/tasks/index.mjs';
|
11
|
+
* const stats = await tasksAPI.cfgTasksApiTasksStatsRetrieve();
|
12
|
+
*
|
13
|
+
* @example
|
14
|
+
* // Import multiple APIs from main index
|
15
|
+
* import { tasksAPI, paymentsAPI } from '/static/js/api/index.mjs';
|
16
|
+
*
|
17
|
+
* @example
|
18
|
+
* // Import with custom base URL
|
19
|
+
* import { TasksAPI } from '/static/js/api/tasks/index.mjs';
|
20
|
+
* const api = new TasksAPI('https://api.example.com');
|
21
|
+
*/
|
22
|
+
|
23
|
+
import { BaseAPIClient } from './base.mjs';
|
24
|
+
import { AccountsAPI, accountsAPI } from './accounts/index.mjs';
|
25
|
+
import { IpcAPI, ipcAPI } from './ipc/index.mjs';
|
26
|
+
import { LeadsAPI, leadsAPI } from './leads/index.mjs';
|
27
|
+
import { NewsletterAPI, newsletterAPI } from './newsletter/index.mjs';
|
28
|
+
import { PaymentsAPI, paymentsAPI } from './payments/index.mjs';
|
29
|
+
import { SupportAPI, supportAPI } from './support/index.mjs';
|
30
|
+
import { TasksAPI, tasksAPI } from './tasks/index.mjs';
|
31
|
+
|
32
|
+
/**
|
33
|
+
* Export all API classes for custom instantiation
|
34
|
+
* @exports
|
35
|
+
*/
|
36
|
+
export {
|
37
|
+
BaseAPIClient,
|
38
|
+
AccountsAPI,
|
39
|
+
IpcAPI,
|
40
|
+
LeadsAPI,
|
41
|
+
NewsletterAPI,
|
42
|
+
PaymentsAPI,
|
43
|
+
SupportAPI,
|
44
|
+
TasksAPI,
|
45
|
+
};
|
46
|
+
|
47
|
+
/**
|
48
|
+
* Export all default instances for convenience
|
49
|
+
* These instances use the current origin as base URL
|
50
|
+
* @exports
|
51
|
+
*/
|
52
|
+
export {
|
53
|
+
accountsAPI,
|
54
|
+
ipcAPI,
|
55
|
+
leadsAPI,
|
56
|
+
newsletterAPI,
|
57
|
+
paymentsAPI,
|
58
|
+
supportAPI,
|
59
|
+
tasksAPI,
|
60
|
+
};
|
61
|
+
|
62
|
+
/**
|
63
|
+
* Grouped exports by functionality
|
64
|
+
* Access APIs by app name: apis.tasks, apis.payments, etc.
|
65
|
+
* @type {Object.<string, BaseAPIClient>}
|
66
|
+
*/
|
67
|
+
export const apis = {
|
68
|
+
accounts: accountsAPI,
|
69
|
+
ipc: ipcAPI,
|
70
|
+
leads: leadsAPI,
|
71
|
+
newsletter: newsletterAPI,
|
72
|
+
payments: paymentsAPI,
|
73
|
+
support: supportAPI,
|
74
|
+
tasks: tasksAPI,
|
75
|
+
};
|
76
|
+
|
77
|
+
/**
|
78
|
+
* Helper function to get API by app name
|
79
|
+
* @param {string} appName - Name of the Django app
|
80
|
+
* @returns {BaseAPIClient|undefined} API instance for the app
|
81
|
+
* @example
|
82
|
+
* const tasksAPI = getAPI('tasks');
|
83
|
+
*/
|
84
|
+
export function getAPI(appName) {
|
85
|
+
return apis[appName];
|
86
|
+
}
|
87
|
+
|
88
|
+
/**
|
89
|
+
* List of all available apps
|
90
|
+
* @type {string[]}
|
91
|
+
*/
|
92
|
+
export const availableApps = [
|
93
|
+
'accounts',
|
94
|
+
'ipc',
|
95
|
+
'leads',
|
96
|
+
'newsletter',
|
97
|
+
'payments',
|
98
|
+
'support',
|
99
|
+
'tasks',
|
100
|
+
];
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import { BaseAPIClient } from '../base.mjs';
|
2
|
+
|
3
|
+
/**
|
4
|
+
* Ipc API Client
|
5
|
+
* Auto-generated from OpenAPI schema
|
6
|
+
* @module ipc
|
7
|
+
* @extends BaseAPIClient
|
8
|
+
*/
|
9
|
+
export class IpcAPI extends BaseAPIClient {
|
10
|
+
/**
|
11
|
+
* Initialize ipc API client
|
12
|
+
* @param {string} [baseURL] - Optional base URL
|
13
|
+
*/
|
14
|
+
constructor(baseURL) {
|
15
|
+
super(baseURL);
|
16
|
+
}
|
17
|
+
|
18
|
+
/**
|
19
|
+
* Get RPC health status * Returns the current health status of the RPC monitoring system. * @returns {Promise<HealthCheck>} Response data
|
20
|
+
*/
|
21
|
+
async ipcAdminApiMonitorHealthRetrieve() {
|
22
|
+
const path = `/cfg/ipc/admin/api/monitor/health/`; return this.get(path); }
|
23
|
+
/**
|
24
|
+
* Get method statistics * Returns statistics grouped by RPC method. * @returns {Promise<MethodStats>} Response data
|
25
|
+
*/
|
26
|
+
async ipcAdminApiMonitorMethodsRetrieve() {
|
27
|
+
const path = `/cfg/ipc/admin/api/monitor/methods/`; return this.get(path); }
|
28
|
+
/**
|
29
|
+
* Get notification statistics * Returns statistics about RPC notifications. * @returns {Promise<NotificationStats>} Response data
|
30
|
+
*/
|
31
|
+
async ipcAdminApiMonitorNotificationsRetrieve() {
|
32
|
+
const path = `/cfg/ipc/admin/api/monitor/notifications/`; return this.get(path); }
|
33
|
+
/**
|
34
|
+
* Get overview statistics * Returns overview statistics for RPC monitoring. * @returns {Promise<OverviewStats>} Response data
|
35
|
+
*/
|
36
|
+
async ipcAdminApiMonitorOverviewRetrieve() {
|
37
|
+
const path = `/cfg/ipc/admin/api/monitor/overview/`; return this.get(path); }
|
38
|
+
/**
|
39
|
+
* Get recent RPC requests * Returns a list of recent RPC requests with their details. * @param {Object} [params={}] - Query parameters * @param {number} [params.count] - Number of requests to return (default: 50, max: 200) * @returns {Promise<RecentRequests>} Response data
|
40
|
+
*/
|
41
|
+
async ipcAdminApiMonitorRequestsRetrieve(params = {}) {
|
42
|
+
const path = `/cfg/ipc/admin/api/monitor/requests/`; return this.get(path, params); }
|
43
|
+
/**
|
44
|
+
* Get RPC health status * Returns the current health status of the RPC monitoring system. * @returns {Promise<HealthCheck>} Response data
|
45
|
+
*/
|
46
|
+
async ipcMonitorHealthRetrieve() {
|
47
|
+
const path = `/cfg/ipc/monitor/health/`; return this.get(path); }
|
48
|
+
/**
|
49
|
+
* Get method statistics * Returns statistics grouped by RPC method. * @returns {Promise<MethodStats>} Response data
|
50
|
+
*/
|
51
|
+
async ipcMonitorMethodsRetrieve() {
|
52
|
+
const path = `/cfg/ipc/monitor/methods/`; return this.get(path); }
|
53
|
+
/**
|
54
|
+
* Get notification statistics * Returns statistics about RPC notifications. * @returns {Promise<NotificationStats>} Response data
|
55
|
+
*/
|
56
|
+
async ipcMonitorNotificationsRetrieve() {
|
57
|
+
const path = `/cfg/ipc/monitor/notifications/`; return this.get(path); }
|
58
|
+
/**
|
59
|
+
* Get overview statistics * Returns overview statistics for RPC monitoring. * @returns {Promise<OverviewStats>} Response data
|
60
|
+
*/
|
61
|
+
async ipcMonitorOverviewRetrieve() {
|
62
|
+
const path = `/cfg/ipc/monitor/overview/`; return this.get(path); }
|
63
|
+
/**
|
64
|
+
* Get recent RPC requests * Returns a list of recent RPC requests with their details. * @param {Object} [params={}] - Query parameters * @param {number} [params.count] - Number of requests to return (default: 50, max: 200) * @returns {Promise<RecentRequests>} Response data
|
65
|
+
*/
|
66
|
+
async ipcMonitorRequestsRetrieve(params = {}) {
|
67
|
+
const path = `/cfg/ipc/monitor/requests/`; return this.get(path, params); }
|
68
|
+
}
|
69
|
+
|
70
|
+
// Default instance for convenience
|
71
|
+
export const ipcAPI = new IpcAPI();
|
72
|
+
|
73
|
+
// Default export
|
74
|
+
export default IpcAPI;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
/**
|
2
|
+
* Ipc API Module
|
3
|
+
* Re-exports the API client for convenient importing
|
4
|
+
* @module ipc
|
5
|
+
*/
|
6
|
+
|
7
|
+
import { IpcAPI, ipcAPI } from './client.mjs';
|
8
|
+
|
9
|
+
// Re-export the class and instance
|
10
|
+
export { IpcAPI, ipcAPI };
|
11
|
+
|
12
|
+
// Default export is the instance for convenience
|
13
|
+
export default ipcAPI;
|