django-cfg 1.4.116__py3-none-any.whl → 1.5.14__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.
Potentially problematic release.
This version of django-cfg might be problematic. Click here for more details.
- django_cfg/__init__.py +6 -1
- django_cfg/apps/api/commands/serializers.py +152 -0
- django_cfg/apps/api/commands/views.py +32 -0
- django_cfg/apps/{accounts → business/accounts}/admin/inlines.py +2 -2
- django_cfg/apps/{accounts → business/accounts}/admin/user_admin.py +2 -2
- django_cfg/apps/{accounts → business/accounts}/apps.py +2 -2
- django_cfg/apps/{accounts → business/accounts}/management/commands/otp_test.py +5 -2
- django_cfg/apps/{accounts → business/accounts}/managers/user_manager.py +2 -2
- django_cfg/apps/{accounts → business/accounts}/migrations/0001_initial.py +4 -4
- django_cfg/apps/{agents → business/agents}/__init__.py +1 -1
- django_cfg/apps/{agents → business/agents}/apps.py +1 -1
- django_cfg/apps/business/agents/management/commands/create_agent.py +177 -0
- django_cfg/apps/{agents/management/commands/create_agent.py → business/agents/management/commands/load_agent_templates.py} +6 -167
- django_cfg/apps/{agents → business/agents}/management/commands/orchestrator_status.py +7 -5
- django_cfg/apps/{knowbase → business/knowbase}/__init__.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/apps.py +3 -3
- django_cfg/apps/business/knowbase/examples/__init__.py +3 -0
- django_cfg/apps/{knowbase → business/knowbase}/examples/external_data_usage.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/management/commands/knowbase_stats.py +4 -2
- django_cfg/apps/{knowbase → business/knowbase}/management/commands/setup_knowbase.py +4 -2
- django_cfg/apps/{knowbase → business/knowbase}/mixins/examples/vehicle_model_example.py +2 -2
- django_cfg/apps/{knowbase → business/knowbase}/mixins/service.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/models/external_data.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/services/archive/vectorization_service.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/services/embedding/async_processor.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/services/embedding/batch_processor.py +2 -2
- django_cfg/apps/{knowbase → business/knowbase}/services/embedding/processors.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/services/embedding/utils.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/tasks/document_processing.py +1 -1
- django_cfg/apps/{knowbase → business/knowbase}/utils/chunk_settings.py +6 -5
- django_cfg/apps/{knowbase → business/knowbase}/views/archive_views.py +2 -2
- django_cfg/apps/{leads → business/leads}/apps.py +2 -2
- django_cfg/apps/{newsletter → business/newsletter}/admin/newsletter_admin.py +12 -11
- django_cfg/apps/{newsletter → business/newsletter}/apps.py +2 -2
- django_cfg/apps/{newsletter → business/newsletter}/management/commands/test_newsletter.py +7 -4
- django_cfg/apps/{payments → business/payments}/__init__.py +2 -2
- django_cfg/apps/{payments → business/payments}/admin/balance_admin.py +26 -36
- django_cfg/apps/{payments → business/payments}/admin/payment_admin.py +65 -85
- django_cfg/apps/{payments → business/payments}/admin/withdrawal_admin.py +65 -100
- django_cfg/apps/{payments → business/payments}/apps.py +1 -1
- django_cfg/apps/{payments → business/payments}/management/commands/check_payment_status.py +8 -6
- django_cfg/apps/{payments → business/payments}/management/commands/create_payment.py +7 -5
- django_cfg/apps/{payments → business/payments}/management/commands/sync_currencies.py +6 -4
- django_cfg/apps/{payments → business/payments}/urls.py +1 -1
- django_cfg/apps/{support → business/support}/apps.py +1 -1
- django_cfg/apps/{support → business/support}/managers/message_manager.py +1 -1
- django_cfg/apps/{support → business/support}/managers/ticket_manager.py +1 -1
- django_cfg/apps/{centrifugo → integrations/centrifugo}/__init__.py +2 -2
- django_cfg/apps/integrations/centrifugo/_cfg/README_DEPENDENCIES.md +260 -0
- django_cfg/apps/integrations/centrifugo/_cfg/__init__.py +25 -0
- django_cfg/apps/integrations/centrifugo/_cfg/check_deps.py +34 -0
- django_cfg/apps/integrations/centrifugo/_cfg/dependencies.py +309 -0
- django_cfg/apps/{centrifugo → integrations/centrifugo}/admin/centrifugo_log.py +33 -71
- django_cfg/apps/integrations/centrifugo/apps.py +100 -0
- django_cfg/apps/{centrifugo → integrations/centrifugo}/management/commands/generate_centrifugo_clients.py +9 -9
- django_cfg/apps/{centrifugo → integrations/centrifugo}/serializers/__init__.py +4 -3
- django_cfg/apps/integrations/centrifugo/serializers/publishes.py +38 -0
- django_cfg/apps/{centrifugo → integrations/centrifugo}/serializers/stats.py +2 -2
- django_cfg/apps/{centrifugo → integrations/centrifugo}/services/client/client.py +2 -2
- django_cfg/apps/{centrifugo → integrations/centrifugo}/services/client/config.py +1 -1
- django_cfg/apps/{centrifugo → integrations/centrifugo}/views/monitoring.py +28 -43
- django_cfg/apps/integrations/grpc/__init__.py +9 -0
- django_cfg/apps/integrations/grpc/_cfg/README_DEPENDENCIES.md +307 -0
- django_cfg/apps/integrations/grpc/_cfg/__init__.py +25 -0
- django_cfg/apps/integrations/grpc/_cfg/check_deps.py +34 -0
- django_cfg/apps/integrations/grpc/_cfg/dependencies.py +484 -0
- django_cfg/apps/integrations/grpc/admin/__init__.py +17 -0
- django_cfg/apps/integrations/grpc/admin/config.py +261 -0
- django_cfg/apps/integrations/grpc/admin/grpc_api_key.py +129 -0
- django_cfg/apps/integrations/grpc/admin/grpc_request_log.py +261 -0
- django_cfg/apps/integrations/grpc/admin/grpc_server_status.py +236 -0
- django_cfg/apps/integrations/grpc/apps.py +108 -0
- django_cfg/apps/integrations/grpc/auth/__init__.py +17 -0
- django_cfg/apps/integrations/grpc/auth/api_key_auth.py +320 -0
- django_cfg/apps/integrations/grpc/interceptors/__init__.py +19 -0
- django_cfg/apps/integrations/grpc/interceptors/errors.py +241 -0
- django_cfg/apps/integrations/grpc/interceptors/logging.py +267 -0
- django_cfg/apps/integrations/grpc/interceptors/metrics.py +307 -0
- django_cfg/apps/integrations/grpc/interceptors/request_logger.py +535 -0
- django_cfg/apps/integrations/grpc/management/__init__.py +1 -0
- django_cfg/apps/integrations/grpc/management/commands/generate_protos.py +130 -0
- django_cfg/apps/integrations/grpc/management/commands/rungrpc.py +518 -0
- django_cfg/apps/integrations/grpc/management/commands/test_grpc_integration.py +75 -0
- django_cfg/apps/integrations/grpc/managers/__init__.py +14 -0
- django_cfg/apps/integrations/grpc/managers/grpc_api_key.py +192 -0
- django_cfg/apps/integrations/grpc/managers/grpc_request_log.py +310 -0
- django_cfg/apps/integrations/grpc/managers/grpc_server_status.py +296 -0
- django_cfg/apps/integrations/grpc/migrations/0001_initial.py +69 -0
- django_cfg/apps/integrations/grpc/migrations/0002_rename_django_cfg__service_4c4a8e_idx_django_cfg__service_584308_idx_and_more.py +38 -0
- django_cfg/apps/integrations/grpc/migrations/0003_grpcserverstatus.py +119 -0
- django_cfg/apps/integrations/grpc/migrations/0004_grpcserverstatus_registered_services.py +22 -0
- django_cfg/apps/integrations/grpc/migrations/0005_grpcapikey.py +143 -0
- django_cfg/apps/integrations/grpc/migrations/0006_grpcrequestlog_api_key_and_more.py +34 -0
- django_cfg/apps/integrations/grpc/models/__init__.py +13 -0
- django_cfg/apps/integrations/grpc/models/grpc_api_key.py +198 -0
- django_cfg/apps/integrations/grpc/models/grpc_request_log.py +230 -0
- django_cfg/apps/integrations/grpc/models/grpc_server_status.py +305 -0
- django_cfg/apps/integrations/grpc/serializers/__init__.py +83 -0
- django_cfg/apps/integrations/grpc/serializers/api_keys.py +63 -0
- django_cfg/apps/integrations/grpc/serializers/charts.py +216 -0
- django_cfg/apps/integrations/grpc/serializers/config.py +120 -0
- django_cfg/apps/integrations/grpc/serializers/health.py +18 -0
- django_cfg/apps/integrations/grpc/serializers/proto_files.py +74 -0
- django_cfg/apps/integrations/grpc/serializers/requests.py +24 -0
- django_cfg/apps/integrations/grpc/serializers/service_registry.py +260 -0
- django_cfg/apps/integrations/grpc/serializers/services.py +32 -0
- django_cfg/apps/integrations/grpc/serializers/stats.py +60 -0
- django_cfg/apps/integrations/grpc/serializers/testing.py +113 -0
- django_cfg/apps/integrations/grpc/services/__init__.py +41 -0
- django_cfg/apps/integrations/grpc/services/base.py +375 -0
- django_cfg/apps/integrations/grpc/services/chart_generator.py +475 -0
- django_cfg/apps/integrations/grpc/services/config_helper.py +146 -0
- django_cfg/apps/integrations/grpc/services/discovery.py +571 -0
- django_cfg/apps/integrations/grpc/services/grpc_client.py +590 -0
- django_cfg/apps/integrations/grpc/services/monitoring_service.py +397 -0
- django_cfg/apps/integrations/grpc/services/proto_files_manager.py +268 -0
- django_cfg/apps/integrations/grpc/services/service_registry.py +330 -0
- django_cfg/apps/integrations/grpc/services/testing_service.py +321 -0
- django_cfg/apps/integrations/grpc/testing/__init__.py +12 -0
- django_cfg/apps/integrations/grpc/testing/examples.py +263 -0
- django_cfg/apps/integrations/grpc/urls.py +47 -0
- django_cfg/apps/integrations/grpc/utils/__init__.py +9 -0
- django_cfg/apps/integrations/grpc/utils/integration_test.py +334 -0
- django_cfg/apps/integrations/grpc/utils/proto_gen.py +463 -0
- django_cfg/apps/integrations/grpc/utils/streaming_logger.py +177 -0
- django_cfg/apps/integrations/grpc/views/__init__.py +19 -0
- django_cfg/apps/integrations/grpc/views/api_keys.py +255 -0
- django_cfg/apps/integrations/grpc/views/charts.py +224 -0
- django_cfg/apps/integrations/grpc/views/config.py +193 -0
- django_cfg/apps/integrations/grpc/views/monitoring.py +360 -0
- django_cfg/apps/integrations/grpc/views/proto_files.py +214 -0
- django_cfg/apps/integrations/grpc/views/services.py +298 -0
- django_cfg/apps/integrations/grpc/views/testing.py +308 -0
- django_cfg/apps/integrations/rq/__init__.py +9 -0
- django_cfg/apps/integrations/rq/_cfg/__init__.py +28 -0
- django_cfg/apps/integrations/rq/_cfg/dependencies.py +313 -0
- django_cfg/apps/integrations/rq/apps.py +157 -0
- django_cfg/apps/integrations/rq/management/__init__.py +1 -0
- django_cfg/apps/integrations/rq/management/commands/__init__.py +1 -0
- django_cfg/apps/integrations/rq/management/commands/rqscheduler.py +31 -0
- django_cfg/apps/integrations/rq/management/commands/rqstats.py +33 -0
- django_cfg/apps/integrations/rq/management/commands/rqworker.py +31 -0
- django_cfg/apps/integrations/rq/management/commands/rqworker_pool.py +27 -0
- django_cfg/apps/integrations/rq/serializers/__init__.py +40 -0
- django_cfg/apps/integrations/rq/serializers/health.py +60 -0
- django_cfg/apps/integrations/rq/serializers/job.py +100 -0
- django_cfg/apps/integrations/rq/serializers/queue.py +80 -0
- django_cfg/apps/integrations/rq/serializers/schedule.py +178 -0
- django_cfg/apps/integrations/rq/serializers/testing.py +139 -0
- django_cfg/apps/integrations/rq/serializers/worker.py +58 -0
- django_cfg/apps/integrations/rq/services/__init__.py +25 -0
- django_cfg/apps/integrations/rq/services/config_helper.py +233 -0
- django_cfg/apps/integrations/rq/services/models/README.md +417 -0
- django_cfg/apps/integrations/rq/services/models/__init__.py +30 -0
- django_cfg/apps/integrations/rq/services/models/event.py +123 -0
- django_cfg/apps/integrations/rq/services/models/job.py +99 -0
- django_cfg/apps/integrations/rq/services/models/queue.py +92 -0
- django_cfg/apps/integrations/rq/services/models/worker.py +104 -0
- django_cfg/apps/integrations/rq/services/rq_converters.py +183 -0
- django_cfg/apps/integrations/rq/tasks/__init__.py +23 -0
- django_cfg/apps/integrations/rq/tasks/demo_tasks.py +284 -0
- django_cfg/apps/integrations/rq/urls.py +54 -0
- django_cfg/apps/integrations/rq/views/__init__.py +19 -0
- django_cfg/apps/integrations/rq/views/jobs.py +892 -0
- django_cfg/apps/integrations/rq/views/monitoring.py +248 -0
- django_cfg/apps/integrations/rq/views/queues.py +261 -0
- django_cfg/apps/integrations/rq/views/schedule.py +404 -0
- django_cfg/apps/integrations/rq/views/testing.py +761 -0
- django_cfg/apps/integrations/rq/views/workers.py +195 -0
- django_cfg/apps/system/__init__.py +0 -0
- django_cfg/apps/system/dashboard/TRANSACTION_FIX.md +73 -0
- django_cfg/apps/{dashboard → system/dashboard}/__init__.py +1 -1
- django_cfg/apps/{dashboard → system/dashboard}/apps.py +1 -1
- django_cfg/apps/{dashboard → system/dashboard}/serializers/__init__.py +4 -11
- django_cfg/apps/{dashboard → system/dashboard}/serializers/activity.py +1 -1
- django_cfg/apps/{dashboard → system/dashboard}/serializers/commands.py +25 -1
- django_cfg/apps/system/dashboard/serializers/config.py +245 -0
- django_cfg/apps/{dashboard → system/dashboard}/services/__init__.py +2 -2
- django_cfg/apps/{dashboard → system/dashboard}/services/charts_service.py +4 -3
- django_cfg/apps/{dashboard → system/dashboard}/services/commands_service.py +12 -1
- django_cfg/apps/system/dashboard/services/config_service.py +393 -0
- django_cfg/apps/{dashboard → system/dashboard}/services/statistics_service.py +11 -2
- django_cfg/apps/{dashboard → system/dashboard}/services/system_health_service.py +64 -106
- django_cfg/apps/{dashboard → system/dashboard}/urls.py +3 -2
- django_cfg/apps/{dashboard → system/dashboard}/views/__init__.py +2 -2
- django_cfg/apps/{dashboard → system/dashboard}/views/commands_views.py +3 -6
- django_cfg/apps/system/dashboard/views/config_views.py +69 -0
- django_cfg/apps/{dashboard → system/dashboard}/views/overview_views.py +14 -13
- django_cfg/apps/{frontend → system/frontend}/__init__.py +1 -1
- django_cfg/apps/{frontend → system/frontend}/apps.py +1 -1
- django_cfg/apps/{frontend → system/frontend}/setup.py +5 -5
- django_cfg/apps/{frontend → system/frontend}/views.py +18 -3
- django_cfg/apps/system/maintenance/__init__.py +56 -0
- django_cfg/apps/{maintenance → system/maintenance}/admin/api_key_admin.py +10 -12
- django_cfg/apps/{maintenance → system/maintenance}/admin/scheduled_admin.py +3 -3
- django_cfg/apps/{maintenance → system/maintenance}/admin/site_admin.py +10 -9
- django_cfg/apps/{maintenance → system/maintenance}/apps.py +1 -1
- django_cfg/apps/system/maintenance/management/__init__.py +0 -0
- django_cfg/apps/system/maintenance/management/commands/__init__.py +0 -0
- django_cfg/apps/{maintenance → system/maintenance}/management/commands/maintenance.py +5 -2
- django_cfg/apps/{maintenance → system/maintenance}/management/commands/process_scheduled_maintenance.py +4 -2
- django_cfg/apps/{maintenance → system/maintenance}/management/commands/sync_cloudflare.py +5 -2
- django_cfg/apps/system/maintenance/migrations/__init__.py +0 -0
- django_cfg/apps/{maintenance → system/maintenance}/models/__init__.py +4 -4
- django_cfg/apps/system/maintenance/services/__init__.py +42 -0
- django_cfg/apps/urls.py +54 -115
- django_cfg/config.py +36 -0
- django_cfg/core/base/config_model.py +27 -28
- django_cfg/core/builders/apps_builder.py +19 -21
- django_cfg/core/constants.py +1 -0
- django_cfg/core/debug/README.md +116 -0
- django_cfg/core/debug/__init__.py +7 -0
- django_cfg/core/debug/example_config.py +63 -0
- django_cfg/core/debug/warnings_helper.py +121 -0
- django_cfg/core/generation/integration_generators/__init__.py +3 -6
- django_cfg/core/generation/integration_generators/django_rq.py +80 -0
- django_cfg/core/generation/integration_generators/grpc_generator.py +316 -0
- django_cfg/core/generation/orchestrator.py +15 -15
- django_cfg/core/integration/display/__init__.py +2 -0
- django_cfg/core/integration/display/base.py +51 -0
- django_cfg/core/integration/display/grpc_display.py +144 -0
- django_cfg/core/integration/display/startup.py +24 -58
- django_cfg/management/commands/check_endpoints.py +2 -2
- django_cfg/management/commands/check_settings.py +3 -10
- django_cfg/management/commands/clear_constance.py +3 -10
- django_cfg/management/commands/create_token.py +4 -11
- django_cfg/management/commands/list_urls.py +4 -10
- django_cfg/management/commands/migrate_all.py +18 -12
- django_cfg/management/commands/migrator.py +4 -11
- django_cfg/management/commands/script.py +4 -10
- django_cfg/management/commands/show_config.py +8 -16
- django_cfg/management/commands/show_urls.py +5 -11
- django_cfg/management/commands/superuser.py +4 -11
- django_cfg/management/commands/tree.py +5 -10
- django_cfg/management/utils/README.md +402 -0
- django_cfg/management/utils/__init__.py +29 -0
- django_cfg/management/utils/mixins.py +176 -0
- django_cfg/middleware/authentication.py +1 -1
- django_cfg/middleware/pagination.py +53 -54
- django_cfg/mixins/__init__.py +2 -0
- django_cfg/mixins/superadmin_api.py +59 -0
- django_cfg/models/__init__.py +3 -3
- django_cfg/models/api/grpc/__init__.py +53 -0
- django_cfg/models/api/grpc/config.py +446 -0
- django_cfg/models/django/__init__.py +3 -3
- django_cfg/models/django/constance.py +1 -1
- django_cfg/models/django/django_rq.py +632 -0
- django_cfg/models/django/revolution_legacy.py +8 -8
- django_cfg/models/ngrok/config.py +7 -6
- django_cfg/modules/base.py +19 -6
- django_cfg/modules/django_admin/__init__.py +2 -0
- django_cfg/modules/django_admin/apps.py +19 -0
- django_cfg/modules/django_admin/base/pydantic_admin.py +23 -12
- django_cfg/modules/django_admin/config/__init__.py +2 -0
- django_cfg/modules/django_admin/config/admin_config.py +7 -0
- django_cfg/modules/django_admin/config/background_task_config.py +4 -4
- django_cfg/modules/django_admin/config/field_config.py +24 -0
- django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_field.html +80 -0
- django_cfg/modules/django_admin/templates/django_admin/widgets/encrypted_password.html +62 -0
- django_cfg/modules/django_admin/utils/__init__.py +41 -3
- django_cfg/modules/django_admin/utils/badges/__init__.py +13 -0
- django_cfg/modules/django_admin/utils/{badges.py → badges/status_badges.py} +3 -3
- django_cfg/modules/django_admin/utils/displays/__init__.py +13 -0
- django_cfg/modules/django_admin/utils/{displays.py → displays/data_displays.py} +2 -2
- django_cfg/modules/django_admin/utils/html/__init__.py +26 -0
- django_cfg/modules/django_admin/utils/html/badges.py +55 -0
- django_cfg/modules/django_admin/utils/html/base.py +167 -0
- django_cfg/modules/django_admin/utils/html/code.py +87 -0
- django_cfg/modules/django_admin/utils/html/composition.py +205 -0
- django_cfg/modules/django_admin/utils/html/formatting.py +231 -0
- django_cfg/modules/django_admin/utils/html/keyvalue.py +219 -0
- django_cfg/modules/django_admin/utils/html/markdown_integration.py +108 -0
- django_cfg/modules/django_admin/utils/html/progress.py +127 -0
- django_cfg/modules/django_admin/utils/html_builder.py +55 -408
- django_cfg/modules/django_admin/utils/markdown/__init__.py +21 -0
- django_cfg/modules/django_admin/widgets/__init__.py +3 -0
- django_cfg/modules/django_admin/widgets/encrypted_field_widget.py +66 -0
- django_cfg/modules/django_admin/widgets/registry.py +42 -0
- django_cfg/modules/django_client/core/generator/python/files_generator.py +5 -13
- django_cfg/modules/django_client/core/generator/python/templates/api_wrapper.py.jinja +16 -4
- django_cfg/modules/django_client/core/generator/python/templates/main_init.py.jinja +2 -3
- django_cfg/modules/django_client/core/generator/typescript/files_generator.py +6 -5
- django_cfg/modules/django_client/core/generator/typescript/operations_generator.py +13 -4
- django_cfg/modules/django_client/core/generator/typescript/templates/main_index.ts.jinja +12 -8
- django_cfg/modules/django_client/core/parser/base.py +135 -2
- django_cfg/modules/django_client/management/commands/generate_client.py +5 -2
- django_cfg/modules/django_client/management/commands/validate_openapi.py +5 -2
- django_cfg/modules/django_currency/examples/example_database_usage.py +1 -1
- django_cfg/modules/django_email/management/commands/test_email.py +4 -10
- django_cfg/modules/django_logging/__init__.py +2 -0
- django_cfg/modules/django_logging/django_logger.py +78 -8
- django_cfg/modules/django_ngrok/management/commands/runserver_ngrok.py +16 -13
- django_cfg/modules/django_telegram/management/commands/test_telegram.py +4 -11
- django_cfg/modules/django_twilio/management/commands/test_twilio.py +4 -11
- django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
- django_cfg/modules/django_unfold/navigation.py +15 -24
- django_cfg/modules/nextjs_admin/views.py +1 -1
- django_cfg/pyproject.toml +10 -10
- django_cfg/registry/core.py +4 -7
- django_cfg/registry/modules.py +4 -1
- django_cfg/requirements.txt +52 -0
- django_cfg/static/frontend/admin.zip +0 -0
- django_cfg/templates/admin/constance/includes/results_list.html +73 -0
- django_cfg/templates/admin/index.html +187 -62
- django_cfg/templatetags/django_cfg.py +61 -1
- {django_cfg-1.4.116.dist-info → django_cfg-1.5.14.dist-info}/METADATA +106 -60
- django_cfg-1.5.14.dist-info/RECORD +1182 -0
- django_cfg/apps/centrifugo/apps.py +0 -31
- django_cfg/apps/centrifugo/serializers/publishes.py +0 -18
- django_cfg/apps/dashboard/permissions.py +0 -48
- django_cfg/apps/dashboard/serializers/django_q2.py +0 -50
- django_cfg/apps/dashboard/services/django_q2_service.py +0 -159
- django_cfg/apps/dashboard/views/django_q2_views.py +0 -79
- django_cfg/apps/knowbase/examples/__init__.py +0 -3
- django_cfg/apps/maintenance/__init__.py +0 -56
- django_cfg/apps/maintenance/services/__init__.py +0 -42
- django_cfg/apps/tasks/__init__.py +0 -64
- django_cfg/apps/tasks/admin/__init__.py +0 -4
- django_cfg/apps/tasks/admin/config.py +0 -98
- django_cfg/apps/tasks/admin/task_log.py +0 -265
- django_cfg/apps/tasks/apps.py +0 -15
- django_cfg/apps/tasks/filters/__init__.py +0 -10
- django_cfg/apps/tasks/filters/task_log.py +0 -121
- django_cfg/apps/tasks/migrations/0001_initial.py +0 -196
- django_cfg/apps/tasks/migrations/0002_delete_tasklog.py +0 -16
- django_cfg/apps/tasks/models/__init__.py +0 -4
- django_cfg/apps/tasks/models/task_log.py +0 -246
- django_cfg/apps/tasks/serializers/__init__.py +0 -28
- django_cfg/apps/tasks/serializers/task_log.py +0 -249
- django_cfg/apps/tasks/services/__init__.py +0 -10
- django_cfg/apps/tasks/services/client/__init__.py +0 -7
- django_cfg/apps/tasks/services/client/client.py +0 -234
- django_cfg/apps/tasks/services/config_helper.py +0 -63
- django_cfg/apps/tasks/services/sync.py +0 -204
- django_cfg/apps/tasks/urls.py +0 -16
- django_cfg/apps/tasks/views/__init__.py +0 -10
- django_cfg/apps/tasks/views/task_log.py +0 -41
- django_cfg/apps/tasks/views/task_log_base.py +0 -41
- django_cfg/apps/tasks/views/task_log_overview.py +0 -100
- django_cfg/apps/tasks/views/task_log_related.py +0 -41
- django_cfg/apps/tasks/views/task_log_stats.py +0 -91
- django_cfg/apps/tasks/views/task_log_timeline.py +0 -81
- django_cfg/core/generation/integration_generators/django_q2.py +0 -133
- django_cfg/core/generation/integration_generators/tasks.py +0 -88
- django_cfg/models/django/django_q2.py +0 -496
- django_cfg/models/tasks/__init__.py +0 -49
- django_cfg/models/tasks/backends.py +0 -122
- django_cfg/models/tasks/config.py +0 -209
- django_cfg/models/tasks/utils.py +0 -162
- django_cfg/modules/django_admin/utils/CODE_BLOCK_DOCS.md +0 -396
- django_cfg/modules/django_logging/FIXES_SUMMARY.md +0 -276
- django_cfg/modules/django_logging/LOGGING_GUIDE.md +0 -504
- django_cfg-1.4.116.dist-info/RECORD +0 -1068
- /django_cfg/apps/{accounts/migrations → business}/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/README.md +0 -0
- /django_cfg/apps/{accounts → business/accounts}/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/__models.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/activity_admin.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/filters.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/group_admin.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/otp_admin.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/registration_admin.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/resources.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/admin/twilio_admin.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/managers/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/migrations/0002_add_phone_otp_clean.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/migrations/0003_twilioresponse.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/migrations/0004_delete_twilioresponse.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/migrations/0005_twilioresponse.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/migrations/0006_remove_twilioresponse_otp_secret_and_more.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/migrations/0007_twilioresponse.py +0 -0
- /django_cfg/apps/{knowbase/management → business/accounts/migrations}/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/activity.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/auth.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/base.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/choices.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/integrations.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/registration.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/models/user.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/serializers/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/serializers/otp.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/serializers/profile.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/serializers/webhook.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/services/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/services/activity_service.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/services/otp_service.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/signals.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/templates/emails/base_email.html +0 -0
- /django_cfg/apps/{accounts → business/accounts}/templates/emails/base_email.txt +0 -0
- /django_cfg/apps/{accounts → business/accounts}/templates/emails/otp_email.html +0 -0
- /django_cfg/apps/{accounts → business/accounts}/templates/emails/otp_email.txt +0 -0
- /django_cfg/apps/{accounts → business/accounts}/templates/emails/welcome_email.html +0 -0
- /django_cfg/apps/{accounts → business/accounts}/templates/emails/welcome_email.txt +0 -0
- /django_cfg/apps/{accounts → business/accounts}/urls.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/urls_admin.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/utils/notifications.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/views/__init__.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/views/otp.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/views/profile.py +0 -0
- /django_cfg/apps/{accounts → business/accounts}/views/webhook.py +0 -0
- /django_cfg/apps/{agents → business/agents}/README.md +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/execution_actions.py +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/execution_admin.py +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/registry_actions.py +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/registry_admin.py +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/toolsets_actions.py +0 -0
- /django_cfg/apps/{agents → business/agents}/admin/toolsets_admin.py +0 -0
- /django_cfg/apps/{agents → business/agents}/core/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/core/dependencies.py +0 -0
- /django_cfg/apps/{agents → business/agents}/core/django_agent.py +0 -0
- /django_cfg/apps/{agents → business/agents}/core/exceptions.py +0 -0
- /django_cfg/apps/{agents → business/agents}/core/models.py +0 -0
- /django_cfg/apps/{agents → business/agents}/core/orchestrator.py +0 -0
- /django_cfg/apps/{agents → business/agents}/examples/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/examples/simple_example.py +0 -0
- /django_cfg/apps/{agents → business/agents}/integration/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/integration/middleware.py +0 -0
- /django_cfg/apps/{agents → business/agents}/integration/registry.py +0 -0
- /django_cfg/apps/{agents → business/agents}/integration/signals.py +0 -0
- /django_cfg/apps/{agents → business/agents}/management/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/management/commands/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/managers/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/managers/execution.py +0 -0
- /django_cfg/apps/{agents → business/agents}/managers/registry.py +0 -0
- /django_cfg/apps/{agents → business/agents}/managers/toolsets.py +0 -0
- /django_cfg/apps/{agents → business/agents}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{agents → business/agents}/migrations/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/models/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/models/execution.py +0 -0
- /django_cfg/apps/{agents → business/agents}/models/registry.py +0 -0
- /django_cfg/apps/{agents → business/agents}/models/toolsets.py +0 -0
- /django_cfg/apps/{agents → business/agents}/patterns/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/patterns/content_agents.py +0 -0
- /django_cfg/apps/{agents → business/agents}/toolsets/__init__.py +0 -0
- /django_cfg/apps/{agents → business/agents}/toolsets/cache_toolset.py +0 -0
- /django_cfg/apps/{agents → business/agents}/toolsets/django_toolset.py +0 -0
- /django_cfg/apps/{agents → business/agents}/toolsets/file_toolset.py +0 -0
- /django_cfg/apps/{agents → business/agents}/toolsets/orm_toolset.py +0 -0
- /django_cfg/apps/{agents → business/agents}/urls.py +0 -0
- /django_cfg/apps/{agents → business/agents}/urls_admin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/README.md +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/archive_actions.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/archive_admin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/chat_actions.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/chat_admin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/document_actions.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/document_admin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/external_data_actions.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/admin/external_data_admin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/config/README.md +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/config/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/config/constance_fields.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/config/constance_settings.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/config/settings.py +0 -0
- /django_cfg/apps/{knowbase/management/commands → business/knowbase/management}/__init__.py +0 -0
- /django_cfg/apps/{leads → business/knowbase/management/commands}/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/managers/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/managers/archive.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/managers/base.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/managers/chat.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/managers/document.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/managers/external_data.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/migrations/0002_archiveitem_archiveitemchunk_documentarchive_and_more.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/migrations/0003_alter_documentarchive_archive_type.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/migrations/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/config/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/config/defaults.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/config/meta_config.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/config.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/creator.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/external_data_mixin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/content_generator.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/field_analyzer.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/mixins/generators/metadata_generator.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/models/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/models/archive.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/models/base.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/models/chat.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/models/document.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/serializers/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/serializers/archive_serializers.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/serializers/chat_serializers.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/serializers/document_serializers.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/serializers/external_data_serializers.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/serializers/public_serializers.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/complexity_analyzer.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/purpose_detector.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/quality_analyzer.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/analyzers/tag_generator.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/archive_service.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/base.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/json_chunker.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/markdown_chunker.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/python_chunker.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking/text_chunker.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/chunking_service.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/context/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/context/builders.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/context/models.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/exceptions.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/archive/extraction_service.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/base.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/chat_service.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/document_service.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/embedding/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/embedding/batch_result.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/embedding/models.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/prompt_builder.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/services/search_service.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/signals/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/signals/archive_signals.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/signals/chat_signals.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/signals/document_signals.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/signals/external_data_signals.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/tasks/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/tasks/archive_tasks.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/tasks/external_data_tasks.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/tasks/maintenance.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/urls.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/urls_admin.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/urls_system.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/utils/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/utils/text_processing.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/utils/validation.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/views/__init__.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/views/base.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/views/chat_views.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/views/document_views.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/views/public_views.py +0 -0
- /django_cfg/apps/{leads → business/leads}/README.md +0 -0
- /django_cfg/apps/{leads/migrations → business/leads}/__init__.py +0 -0
- /django_cfg/apps/{leads → business/leads}/admin/__init__.py +0 -0
- /django_cfg/apps/{leads → business/leads}/admin/actions.py +0 -0
- /django_cfg/apps/{leads → business/leads}/admin/leads_admin.py +0 -0
- /django_cfg/apps/{leads → business/leads}/admin/resources.py +0 -0
- /django_cfg/apps/{leads → business/leads}/admin.py +0 -0
- /django_cfg/apps/{leads → business/leads}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{maintenance/management → business/leads/migrations}/__init__.py +0 -0
- /django_cfg/apps/{leads → business/leads}/models.py +0 -0
- /django_cfg/apps/{leads → business/leads}/serializers.py +0 -0
- /django_cfg/apps/{leads → business/leads}/signals.py +0 -0
- /django_cfg/apps/{leads → business/leads}/tests.py +0 -0
- /django_cfg/apps/{leads → business/leads}/urls.py +0 -0
- /django_cfg/apps/{leads → business/leads}/urls_admin.py +0 -0
- /django_cfg/apps/{leads → business/leads}/views.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/README.md +0 -0
- /django_cfg/apps/{maintenance/management/commands → business/newsletter}/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/admin/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/admin/actions.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/admin/filters.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/admin/resources.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/admin.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/admin_filters.py +0 -0
- /django_cfg/apps/{maintenance/migrations → business/newsletter/management}/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter/management/commands}/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/managers/README.md +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/managers/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{newsletter/management → business/newsletter/migrations}/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/models.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/serializers.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/services/email_service.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/signals.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/urls.py +0 -0
- /django_cfg/apps/{maintenance → business/newsletter}/urls_admin.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/utils/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/views/__init__.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/views/campaigns.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/views/emails.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/views/newsletters.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/views/subscriptions.py +0 -0
- /django_cfg/apps/{newsletter → business/newsletter}/views/tracking.py +0 -0
- /django_cfg/apps/{payments → business/payments}/CONFIGURATION.md +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/actions.py +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/balance_actions.py +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/currency_admin.py +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/filters.py +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/payment_actions.py +0 -0
- /django_cfg/apps/{payments → business/payments}/admin/withdrawal_actions.py +0 -0
- /django_cfg/apps/{payments → business/payments}/api/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/api/serializers.py +0 -0
- /django_cfg/apps/{payments → business/payments}/api/urls.py +0 -0
- /django_cfg/apps/{payments → business/payments}/api/views.py +0 -0
- /django_cfg/apps/{payments → business/payments}/config.py +0 -0
- /django_cfg/apps/{payments → business/payments}/management/README.md +0 -0
- /django_cfg/apps/{newsletter/management/commands → business/payments/management}/__init__.py +0 -0
- /django_cfg/apps/{newsletter/migrations → business/payments/management/commands}/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{payments/management → business/payments/migrations}/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/balance.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/base.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/currency.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/managers/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/managers/balance_managers.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/managers/payment_managers.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/payment.py +0 -0
- /django_cfg/apps/{payments → business/payments}/models/withdrawal.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/balance_service.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/payment_service.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/providers/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/providers/models.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/__init__.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/config.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/parser.py +0 -0
- /django_cfg/apps/{payments → business/payments}/services/providers/nowpayments/provider.py +0 -0
- /django_cfg/apps/{payments/management/commands → business/support}/__init__.py +0 -0
- /django_cfg/apps/{support → business/support}/admin/__init__.py +0 -0
- /django_cfg/apps/{support → business/support}/admin/actions.py +0 -0
- /django_cfg/apps/{support → business/support}/admin/filters.py +0 -0
- /django_cfg/apps/{support → business/support}/admin/resources.py +0 -0
- /django_cfg/apps/{support → business/support}/admin/support_admin.py +0 -0
- /django_cfg/apps/{support → business/support}/admin.py +0 -0
- /django_cfg/apps/{support → business/support}/admin_filters.py +0 -0
- /django_cfg/apps/{support → business/support}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{support → business/support}/migrations/0002_alter_message_ticket.py +0 -0
- /django_cfg/apps/{payments → business/support}/migrations/__init__.py +0 -0
- /django_cfg/apps/{support → business/support}/models.py +0 -0
- /django_cfg/apps/{support → business/support}/serializers.py +0 -0
- /django_cfg/apps/{support → business/support}/signals.py +0 -0
- /django_cfg/apps/{support → business/support}/templates/support/chat/access_denied.html +0 -0
- /django_cfg/apps/{support → business/support}/templates/support/chat/ticket_chat.html +0 -0
- /django_cfg/apps/{support → business/support}/urls.py +0 -0
- /django_cfg/apps/{newsletter → business/support}/urls_admin.py +0 -0
- /django_cfg/apps/{support → business/support/utils}/__init__.py +0 -0
- /django_cfg/apps/{support → business/support}/utils/support_email_service.py +0 -0
- /django_cfg/apps/{support → business/support}/views/__init__.py +0 -0
- /django_cfg/apps/{support → business/support}/views/admin.py +0 -0
- /django_cfg/apps/{support → business/support}/views/api.py +0 -0
- /django_cfg/apps/{support → business/support}/views/chat.py +0 -0
- /django_cfg/apps/{support/migrations → integrations}/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/admin/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/admin/config.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/IMPLEMENTATION_SUMMARY.md +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/README.md +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/USAGE.md +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/discovery.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/generator.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/templates/README.md.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/templates/client.go.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/templates/go.mod.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/templates/rpc_client.go.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/templates/rpc_client.go.j2.old +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/go_thin/templates/types.go.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/generator.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/templates/README.md.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/templates/__init__.py.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/templates/client.py.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/templates/models.py.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/templates/requirements.txt.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/python_thin/templates/rpc_client.py.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/generator.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/README.md.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/client.ts.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/index.ts.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/package.json.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/rpc-client.ts.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/tsconfig.json.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/generators/typescript_thin/templates/types.ts.j2 +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/utils/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/utils/naming.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/codegen/utils/type_converter.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/decorators.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/management/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/management/commands/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/managers/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/managers/centrifugo_log.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/migrations/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/models/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/models/centrifugo_log.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/registry.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/router.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/serializers/admin_api.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/serializers/channels.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/serializers/health.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/services/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/services/client/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/services/client/exceptions.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/services/config_helper.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/services/dashboard_notifier.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/services/logging.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/urls.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/views/__init__.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/views/admin_api.py +0 -0
- /django_cfg/apps/{centrifugo → integrations/centrifugo}/views/testing_api.py +0 -0
- /django_cfg/apps/{support/utils → integrations/grpc/management/commands}/__init__.py +0 -0
- /django_cfg/apps/{tasks → integrations/grpc}/migrations/__init__.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/serializers/apizones.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/serializers/base.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/serializers/charts.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/serializers/overview.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/serializers/statistics.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/serializers/system.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/services/apizones_service.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/services/commands_security.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/services/overview_service.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/views/activity_views.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/views/apizones_views.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/views/charts_views.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/views/statistics_views.py +0 -0
- /django_cfg/apps/{dashboard → system/dashboard}/views/system_views.py +0 -0
- /django_cfg/apps/{frontend → system/frontend}/JWT_AUTO_INJECTION.md +0 -0
- /django_cfg/apps/{frontend → system/frontend}/templates/frontend/404.html +0 -0
- /django_cfg/apps/{frontend → system/frontend}/test_routing.py +0 -0
- /django_cfg/apps/{frontend → system/frontend}/urls.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/admin/__init__.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/admin/actions.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/admin/log_admin.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/managers/__init__.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/managers/cloudflare_site_manager.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/managers/maintenance_log_manager.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/migrations/0001_initial.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/migrations/0002_cloudflaresite_maintenance_url.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/migrations/0003_cloudflaresite_include_subdomains_and_more.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/models/cloudflare_api_key.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/models/cloudflare_site.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/models/maintenance_log.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/models/scheduled_maintenance.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/services/bulk_operations_service.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/services/maintenance_service.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/services/scheduled_maintenance_service.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/services/site_sync_service.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/urls.py +0 -0
- /django_cfg/apps/{support → system/maintenance}/urls_admin.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/utils/__init__.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/utils/retry_utils.py +0 -0
- /django_cfg/modules/django_admin/utils/{mermaid_plugin.py → markdown/mermaid_plugin.py} +0 -0
- /django_cfg/modules/django_admin/utils/{markdown_renderer.py → markdown/renderer.py} +0 -0
- {django_cfg-1.4.116.dist-info → django_cfg-1.5.14.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.116.dist-info → django_cfg-1.5.14.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.116.dist-info → django_cfg-1.5.14.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
# Centrifugo Dependency Checker
|
|
2
|
+
|
|
3
|
+
Automatic dependency checking for Centrifugo integration in django-cfg.
|
|
4
|
+
|
|
5
|
+
## 🎯 Purpose
|
|
6
|
+
|
|
7
|
+
Checks for all required libraries before using the Centrifugo integration and provides clear messages with installation instructions if anything is missing.
|
|
8
|
+
|
|
9
|
+
## 📦 Dependencies Checked
|
|
10
|
+
|
|
11
|
+
### Required
|
|
12
|
+
- `cent` - Python Centrifugo client library
|
|
13
|
+
- `httpx` - HTTP client for async requests *(included in django-cfg core)*
|
|
14
|
+
|
|
15
|
+
### Optional (Recommended)
|
|
16
|
+
- `redis` - Redis backend for real-time messaging
|
|
17
|
+
- `websockets` - WebSocket protocol implementation
|
|
18
|
+
|
|
19
|
+
**Note:** `httpx` is already included in django-cfg core dependencies, but we verify it's available for Centrifugo integration.
|
|
20
|
+
|
|
21
|
+
## 🚀 Usage
|
|
22
|
+
|
|
23
|
+
### Automatic check on import
|
|
24
|
+
|
|
25
|
+
The check happens automatically when you try to use Centrifugo features.
|
|
26
|
+
|
|
27
|
+
If dependencies are missing, you will see a detailed message:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
================================================================================
|
|
31
|
+
❌ MISSING CENTRIFUGO DEPENDENCIES
|
|
32
|
+
================================================================================
|
|
33
|
+
|
|
34
|
+
Django-CFG's Centrifugo integration requires additional dependencies.
|
|
35
|
+
|
|
36
|
+
📦 REQUIRED (missing):
|
|
37
|
+
|
|
38
|
+
❌ cent - Python Centrifugo client library
|
|
39
|
+
|
|
40
|
+
================================================================================
|
|
41
|
+
🔧 HOW TO FIX
|
|
42
|
+
================================================================================
|
|
43
|
+
|
|
44
|
+
Install all Centrifugo dependencies at once (RECOMMENDED):
|
|
45
|
+
|
|
46
|
+
pip install django-cfg[centrifugo]
|
|
47
|
+
|
|
48
|
+
# or with poetry:
|
|
49
|
+
poetry add django-cfg[centrifugo]
|
|
50
|
+
|
|
51
|
+
Or install manually:
|
|
52
|
+
|
|
53
|
+
pip install cent
|
|
54
|
+
|
|
55
|
+
================================================================================
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Manual check
|
|
59
|
+
|
|
60
|
+
#### In Python code:
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from django_cfg.apps.centrifugo._cfg import check_centrifugo_dependencies
|
|
64
|
+
|
|
65
|
+
# Check with error on missing
|
|
66
|
+
try:
|
|
67
|
+
check_centrifugo_dependencies()
|
|
68
|
+
print("✅ All dependencies installed")
|
|
69
|
+
except Exception as e:
|
|
70
|
+
print(f"❌ Error: {e}")
|
|
71
|
+
|
|
72
|
+
# Check without raising error
|
|
73
|
+
status = check_centrifugo_dependencies(raise_on_missing=False)
|
|
74
|
+
print(status) # {'cent': True, 'httpx': True, 'redis': False, ...}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
#### Print status of all dependencies:
|
|
78
|
+
|
|
79
|
+
```python
|
|
80
|
+
from django_cfg.apps.centrifugo._cfg import print_dependency_status
|
|
81
|
+
|
|
82
|
+
print_dependency_status()
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Output:
|
|
86
|
+
```
|
|
87
|
+
Centrifugo Dependencies Status:
|
|
88
|
+
============================================================
|
|
89
|
+
|
|
90
|
+
Required:
|
|
91
|
+
✅ cent 5.0.0 - Python Centrifugo client library
|
|
92
|
+
✅ httpx 0.28.1 - HTTP client for async requests
|
|
93
|
+
|
|
94
|
+
Optional (recommended):
|
|
95
|
+
✅ redis 6.4.0 - Redis backend for real-time messaging
|
|
96
|
+
⚠️ websockets not installed - WebSocket protocol implementation
|
|
97
|
+
|
|
98
|
+
============================================================
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### Standalone script:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
# From project root
|
|
105
|
+
poetry run python -m django_cfg.apps.centrifugo._cfg.check_deps
|
|
106
|
+
|
|
107
|
+
# Or directly
|
|
108
|
+
poetry run python src/django_cfg/apps/centrifugo/_cfg/check_deps.py
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Get library versions
|
|
112
|
+
|
|
113
|
+
```python
|
|
114
|
+
from django_cfg.apps.centrifugo._cfg import DependencyChecker
|
|
115
|
+
|
|
116
|
+
versions = DependencyChecker.get_version_info()
|
|
117
|
+
print(f"Cent version: {versions['cent']}")
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## ⚙️ Configuration
|
|
121
|
+
|
|
122
|
+
### Disable checking
|
|
123
|
+
|
|
124
|
+
If you need to temporarily disable checking (for example, for testing):
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
export DJANGO_SKIP_CENTRIFUGO_CHECK=1
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Or in code:
|
|
131
|
+
```python
|
|
132
|
+
import os
|
|
133
|
+
os.environ['DJANGO_SKIP_CENTRIFUGO_CHECK'] = '1'
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 🔧 Integration in your code
|
|
137
|
+
|
|
138
|
+
### In Django AppConfig
|
|
139
|
+
|
|
140
|
+
```python
|
|
141
|
+
from django.apps import AppConfig
|
|
142
|
+
from django_cfg.apps.centrifugo._cfg import check_centrifugo_dependencies
|
|
143
|
+
|
|
144
|
+
class MyAppConfig(AppConfig):
|
|
145
|
+
name = 'myapp'
|
|
146
|
+
|
|
147
|
+
def ready(self):
|
|
148
|
+
# Check dependencies on app startup
|
|
149
|
+
try:
|
|
150
|
+
check_centrifugo_dependencies(raise_on_missing=True)
|
|
151
|
+
except Exception as e:
|
|
152
|
+
print(e)
|
|
153
|
+
import sys
|
|
154
|
+
sys.exit(1)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
## 🎯 Benefits
|
|
158
|
+
|
|
159
|
+
1. **Clear error messages** - user immediately sees what's missing and how to fix it
|
|
160
|
+
2. **Automatic checking** - no need to remember to check manually
|
|
161
|
+
3. **Flexibility** - can be disabled for tests or other scenarios
|
|
162
|
+
4. **Doesn't break other commands** - checking is performed only where needed
|
|
163
|
+
5. **Library versions** - can find out installed versions for debugging
|
|
164
|
+
|
|
165
|
+
## 📚 API Reference
|
|
166
|
+
|
|
167
|
+
### `check_centrifugo_dependencies(raise_on_missing=True)`
|
|
168
|
+
Checks all Centrifugo dependencies.
|
|
169
|
+
|
|
170
|
+
**Parameters:**
|
|
171
|
+
- `raise_on_missing` (bool): Raise `CentrifugoDependencyError` when dependencies are missing
|
|
172
|
+
|
|
173
|
+
**Returns:** `Dict[str, bool]` - status of each dependency
|
|
174
|
+
|
|
175
|
+
**Raises:** `CentrifugoDependencyError` if `raise_on_missing=True` and dependencies are missing
|
|
176
|
+
|
|
177
|
+
### `print_dependency_status()`
|
|
178
|
+
Prints a formatted report of all dependency statuses.
|
|
179
|
+
|
|
180
|
+
### `DependencyChecker.check_all(raise_on_missing=True)`
|
|
181
|
+
Checks all dependencies (static method).
|
|
182
|
+
|
|
183
|
+
### `DependencyChecker.get_version_info()`
|
|
184
|
+
Returns a dictionary with versions of all installed libraries.
|
|
185
|
+
|
|
186
|
+
### `CentrifugoDependencyError`
|
|
187
|
+
Exception that is raised when required dependencies are missing.
|
|
188
|
+
|
|
189
|
+
## 🧪 Testing
|
|
190
|
+
|
|
191
|
+
```python
|
|
192
|
+
import pytest
|
|
193
|
+
from django_cfg.apps.centrifugo._cfg import (
|
|
194
|
+
check_centrifugo_dependencies,
|
|
195
|
+
CentrifugoDependencyError
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
def test_centrifugo_dependencies_installed():
|
|
199
|
+
"""Test: all dependencies installed"""
|
|
200
|
+
status = check_centrifugo_dependencies(raise_on_missing=False)
|
|
201
|
+
assert status['cent'] is True
|
|
202
|
+
assert status['httpx'] is True
|
|
203
|
+
|
|
204
|
+
def test_missing_dependencies_raises_error():
|
|
205
|
+
"""Test: error is raised when dependencies are missing"""
|
|
206
|
+
# This test should run in an environment without centrifugo
|
|
207
|
+
with pytest.raises(CentrifugoDependencyError):
|
|
208
|
+
check_centrifugo_dependencies(raise_on_missing=True)
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## 📖 Usage Examples
|
|
212
|
+
|
|
213
|
+
### Example 1: Check in CI/CD
|
|
214
|
+
|
|
215
|
+
```yaml
|
|
216
|
+
# .github/workflows/test.yml
|
|
217
|
+
- name: Check Centrifugo dependencies
|
|
218
|
+
run: |
|
|
219
|
+
poetry run python -m django_cfg.apps.centrifugo._cfg.check_deps
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Example 2: Pre-commit hook
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
#!/bin/bash
|
|
226
|
+
# .git/hooks/pre-commit
|
|
227
|
+
|
|
228
|
+
# Check dependencies before commit
|
|
229
|
+
poetry run python -m django_cfg.apps.centrifugo._cfg.check_deps
|
|
230
|
+
if [ $? -ne 0 ]; then
|
|
231
|
+
echo "❌ Centrifugo dependencies missing. Run: pip install django-cfg[centrifugo]"
|
|
232
|
+
exit 1
|
|
233
|
+
fi
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## 🐛 Troubleshooting
|
|
237
|
+
|
|
238
|
+
### False positives
|
|
239
|
+
|
|
240
|
+
If the check shows libraries are missing but they are installed:
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Check current environment
|
|
244
|
+
which python
|
|
245
|
+
pip list | grep -E '(cent|httpx)'
|
|
246
|
+
|
|
247
|
+
# Make sure you're using the correct interpreter
|
|
248
|
+
poetry env info
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### Check not triggering
|
|
252
|
+
|
|
253
|
+
Make sure that:
|
|
254
|
+
1. `django_cfg.apps.centrifugo` is added to `INSTALLED_APPS`
|
|
255
|
+
2. The `DJANGO_SKIP_CENTRIFUGO_CHECK` variable is not set
|
|
256
|
+
|
|
257
|
+
## 🔗 See also
|
|
258
|
+
|
|
259
|
+
- [Centrifugo Integration Overview](../../../@docs/overview.md)
|
|
260
|
+
- [Django-CFG Documentation](https://djangocfg.com/docs)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Centrifugo System Configuration.
|
|
3
|
+
|
|
4
|
+
Internal system utilities for configuration, dependency checking, and validation.
|
|
5
|
+
This module is for system/internal use. For public API, use other modules instead.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .dependencies import (
|
|
9
|
+
CentrifugoDependencyError,
|
|
10
|
+
DependencyChecker,
|
|
11
|
+
check_centrifugo_available,
|
|
12
|
+
check_centrifugo_dependencies,
|
|
13
|
+
print_dependency_status,
|
|
14
|
+
require_centrifugo_feature,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
# Dependency checking
|
|
19
|
+
"DependencyChecker",
|
|
20
|
+
"CentrifugoDependencyError",
|
|
21
|
+
"check_centrifugo_available",
|
|
22
|
+
"check_centrifugo_dependencies",
|
|
23
|
+
"require_centrifugo_feature",
|
|
24
|
+
"print_dependency_status",
|
|
25
|
+
]
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
Standalone script to check Centrifugo dependencies.
|
|
4
|
+
|
|
5
|
+
Usage:
|
|
6
|
+
python -m django_cfg.apps.integrations.centrifugo._cfg.check_deps
|
|
7
|
+
python src/django_cfg/apps/centrifugo/_cfg/check_deps.py
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
import sys
|
|
13
|
+
|
|
14
|
+
from .dependencies import print_dependency_status
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def main():
|
|
18
|
+
"""Run dependency check and print status."""
|
|
19
|
+
print("\n" + "=" * 80)
|
|
20
|
+
print("Django-CFG Centrifugo Dependency Checker")
|
|
21
|
+
print("=" * 80)
|
|
22
|
+
|
|
23
|
+
try:
|
|
24
|
+
print_dependency_status()
|
|
25
|
+
print("✅ All required dependencies are installed!")
|
|
26
|
+
print("\nYou can now use Centrifugo integration in your Django project.")
|
|
27
|
+
return 0
|
|
28
|
+
except Exception as e:
|
|
29
|
+
print(f"\n❌ Dependency check failed:\n{e}")
|
|
30
|
+
return 1
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
if __name__ == "__main__":
|
|
34
|
+
sys.exit(main())
|
|
@@ -0,0 +1,309 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
"""
|
|
3
|
+
Centrifugo dependency checker.
|
|
4
|
+
|
|
5
|
+
Validates that all required dependencies for Centrifugo are installed.
|
|
6
|
+
Provides beautiful Rich-formatted error messages with installation instructions.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import importlib.util
|
|
12
|
+
import os
|
|
13
|
+
from typing import Dict
|
|
14
|
+
|
|
15
|
+
from rich.console import Console
|
|
16
|
+
from rich.panel import Panel
|
|
17
|
+
from rich.table import Table
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class CentrifugoDependencyError(ImportError):
|
|
21
|
+
"""Raised when required Centrifugo dependencies are missing."""
|
|
22
|
+
pass
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
class DependencyChecker:
|
|
26
|
+
"""
|
|
27
|
+
Check and validate Centrifugo dependencies.
|
|
28
|
+
|
|
29
|
+
Required dependencies:
|
|
30
|
+
- cent: Python client for Centrifugo
|
|
31
|
+
- httpx: HTTP client for async requests (included in django-cfg core)
|
|
32
|
+
|
|
33
|
+
Optional dependencies:
|
|
34
|
+
- redis: Redis backend for real-time messaging
|
|
35
|
+
- websockets: WebSocket protocol implementation
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
# Required dependencies (httpx is already in django-cfg core dependencies)
|
|
39
|
+
REQUIRED_DEPS = {
|
|
40
|
+
"cent": "cent>=5.0.0",
|
|
41
|
+
"httpx": "httpx>=0.28.0", # Already in core, but verify it's available
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
# Optional dependencies
|
|
45
|
+
OPTIONAL_DEPS = {
|
|
46
|
+
"redis": "redis>=6.4.0",
|
|
47
|
+
"websockets": "websockets>=13.0",
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# Package descriptions
|
|
51
|
+
DESCRIPTIONS = {
|
|
52
|
+
"cent": "Python client for Centrifugo",
|
|
53
|
+
"httpx": "HTTP client for async requests (included in django-cfg)",
|
|
54
|
+
"redis": "Redis backend for real-time messaging",
|
|
55
|
+
"websockets": "WebSocket protocol implementation",
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@classmethod
|
|
59
|
+
def check_package(cls, package_name: str) -> bool:
|
|
60
|
+
"""
|
|
61
|
+
Check if a package is installed.
|
|
62
|
+
|
|
63
|
+
Args:
|
|
64
|
+
package_name: Python package name (import name)
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
True if installed, False otherwise
|
|
68
|
+
"""
|
|
69
|
+
return importlib.util.find_spec(package_name) is not None
|
|
70
|
+
|
|
71
|
+
@classmethod
|
|
72
|
+
def check_all(cls, raise_on_missing: bool = True) -> Dict[str, bool]:
|
|
73
|
+
"""
|
|
74
|
+
Check all Centrifugo dependencies.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
raise_on_missing: If True, raise exception when required deps missing
|
|
78
|
+
|
|
79
|
+
Returns:
|
|
80
|
+
Dictionary mapping package names to availability status
|
|
81
|
+
|
|
82
|
+
Raises:
|
|
83
|
+
CentrifugoDependencyError: If required dependencies are missing and raise_on_missing=True
|
|
84
|
+
"""
|
|
85
|
+
status = {}
|
|
86
|
+
|
|
87
|
+
# Check required dependencies
|
|
88
|
+
for package_name in cls.REQUIRED_DEPS:
|
|
89
|
+
status[package_name] = cls.check_package(package_name)
|
|
90
|
+
|
|
91
|
+
# Check optional dependencies
|
|
92
|
+
for package_name in cls.OPTIONAL_DEPS:
|
|
93
|
+
status[package_name] = cls.check_package(package_name)
|
|
94
|
+
|
|
95
|
+
# Check if any required dependencies are missing
|
|
96
|
+
missing_required = [
|
|
97
|
+
pkg for pkg in cls.REQUIRED_DEPS if not status.get(pkg, False)
|
|
98
|
+
]
|
|
99
|
+
|
|
100
|
+
missing_optional = [
|
|
101
|
+
pkg for pkg in cls.OPTIONAL_DEPS if not status.get(pkg, False)
|
|
102
|
+
]
|
|
103
|
+
|
|
104
|
+
if missing_required and raise_on_missing:
|
|
105
|
+
cls._raise_missing_error(missing_required, missing_optional)
|
|
106
|
+
|
|
107
|
+
return status
|
|
108
|
+
|
|
109
|
+
@classmethod
|
|
110
|
+
def _raise_missing_error(
|
|
111
|
+
cls,
|
|
112
|
+
missing_required: list[str],
|
|
113
|
+
missing_optional: list[str],
|
|
114
|
+
) -> None:
|
|
115
|
+
"""
|
|
116
|
+
Raise a formatted error for missing dependencies.
|
|
117
|
+
|
|
118
|
+
Args:
|
|
119
|
+
missing_required: List of missing required packages
|
|
120
|
+
missing_optional: List of missing optional packages
|
|
121
|
+
"""
|
|
122
|
+
console = Console()
|
|
123
|
+
|
|
124
|
+
# Header
|
|
125
|
+
console.print()
|
|
126
|
+
console.print(Panel(
|
|
127
|
+
"[bold red]MISSING CENTRIFUGO DEPENDENCIES[/bold red]",
|
|
128
|
+
expand=True,
|
|
129
|
+
))
|
|
130
|
+
console.print()
|
|
131
|
+
console.print("Django-CFG's Centrifugo integration requires additional dependencies")
|
|
132
|
+
console.print()
|
|
133
|
+
|
|
134
|
+
# Required dependencies table
|
|
135
|
+
if missing_required:
|
|
136
|
+
table = Table(title="📦 REQUIRED Dependencies (Missing)", show_header=True)
|
|
137
|
+
table.add_column("Package", style="cyan")
|
|
138
|
+
table.add_column("Description", style="white")
|
|
139
|
+
|
|
140
|
+
for pkg in missing_required:
|
|
141
|
+
pip_name = cls.REQUIRED_DEPS[pkg].split(">=")[0]
|
|
142
|
+
desc = cls.DESCRIPTIONS.get(pkg, "")
|
|
143
|
+
table.add_row(f"❌ {pip_name}", desc)
|
|
144
|
+
|
|
145
|
+
console.print(table)
|
|
146
|
+
console.print()
|
|
147
|
+
|
|
148
|
+
# Optional dependencies table
|
|
149
|
+
if missing_optional:
|
|
150
|
+
table = Table(title="📦 OPTIONAL Dependencies (Recommended)", show_header=True)
|
|
151
|
+
table.add_column("Package", style="cyan")
|
|
152
|
+
table.add_column("Description", style="white")
|
|
153
|
+
|
|
154
|
+
for pkg in missing_optional:
|
|
155
|
+
pip_name = cls.OPTIONAL_DEPS[pkg].split(">=")[0]
|
|
156
|
+
desc = cls.DESCRIPTIONS.get(pkg, "")
|
|
157
|
+
table.add_row(f"⚠️ {pip_name}", desc)
|
|
158
|
+
|
|
159
|
+
console.print(table)
|
|
160
|
+
console.print()
|
|
161
|
+
|
|
162
|
+
# Installation instructions
|
|
163
|
+
pkg_manager = _detect_package_manager()
|
|
164
|
+
|
|
165
|
+
if pkg_manager == "poetry":
|
|
166
|
+
console.print(Panel(
|
|
167
|
+
"[bold green]🔧 HOW TO FIX (POETRY)[/bold green]\n\n"
|
|
168
|
+
"Install all dependencies (RECOMMENDED)\n\n"
|
|
169
|
+
"[cyan]poetry add django-cfg[centrifugo][/cyan]",
|
|
170
|
+
expand=False,
|
|
171
|
+
))
|
|
172
|
+
console.print()
|
|
173
|
+
console.print(Panel(
|
|
174
|
+
"Or install manually:\n\n"
|
|
175
|
+
"[cyan]poetry add cent httpx[/cyan]\n\n"
|
|
176
|
+
"Optional:\n"
|
|
177
|
+
"[dim]poetry add redis websockets[/dim]",
|
|
178
|
+
expand=False,
|
|
179
|
+
))
|
|
180
|
+
else: # pip
|
|
181
|
+
console.print(Panel(
|
|
182
|
+
"[bold green]🔧 HOW TO FIX (PIP)[/bold green]\n\n"
|
|
183
|
+
"Install all dependencies (RECOMMENDED)\n\n"
|
|
184
|
+
"[cyan]pip install django-cfg[centrifugo][/cyan]",
|
|
185
|
+
expand=False,
|
|
186
|
+
))
|
|
187
|
+
console.print()
|
|
188
|
+
console.print(Panel(
|
|
189
|
+
"Or install manually:\n\n"
|
|
190
|
+
"[cyan]pip install cent httpx[/cyan]\n\n"
|
|
191
|
+
"Optional:\n"
|
|
192
|
+
"[dim]pip install redis websockets[/dim]",
|
|
193
|
+
expand=False,
|
|
194
|
+
))
|
|
195
|
+
|
|
196
|
+
console.print()
|
|
197
|
+
console.print(Panel(
|
|
198
|
+
"[bold]📚 MORE INFORMATION[/bold]\n\n"
|
|
199
|
+
"Documentation: https://djangocfg.com/centrifugo\n"
|
|
200
|
+
"Report Issues: https://github.com/django-cfg/django-cfg/issues",
|
|
201
|
+
title="📚 MORE INFORMATION",
|
|
202
|
+
expand=False,
|
|
203
|
+
))
|
|
204
|
+
console.print()
|
|
205
|
+
|
|
206
|
+
raise CentrifugoDependencyError("Centrifugo dependencies are missing. See details above.")
|
|
207
|
+
|
|
208
|
+
@classmethod
|
|
209
|
+
def print_status(cls) -> None:
|
|
210
|
+
"""Print dependency status in a nice table."""
|
|
211
|
+
console = Console()
|
|
212
|
+
status = cls.check_all(raise_on_missing=False)
|
|
213
|
+
|
|
214
|
+
table = Table(title="Centrifugo Dependency Status", show_header=True)
|
|
215
|
+
table.add_column("Package", style="cyan")
|
|
216
|
+
table.add_column("Status", style="white")
|
|
217
|
+
table.add_column("Type", style="white")
|
|
218
|
+
|
|
219
|
+
# Required dependencies
|
|
220
|
+
for pkg, spec in cls.REQUIRED_DEPS.items():
|
|
221
|
+
pip_name = spec.split(">=")[0]
|
|
222
|
+
status_str = "✅ Installed" if status.get(pkg, False) else "❌ Missing"
|
|
223
|
+
table.add_row(pip_name, status_str, "Required")
|
|
224
|
+
|
|
225
|
+
# Optional dependencies
|
|
226
|
+
for pkg, spec in cls.OPTIONAL_DEPS.items():
|
|
227
|
+
pip_name = spec.split(">=")[0]
|
|
228
|
+
status_str = "✅ Installed" if status.get(pkg, False) else "⚠️ Missing"
|
|
229
|
+
table.add_row(pip_name, status_str, "Optional")
|
|
230
|
+
|
|
231
|
+
console.print(table)
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
def _detect_package_manager() -> str:
|
|
235
|
+
"""
|
|
236
|
+
Detect which package manager is being used.
|
|
237
|
+
|
|
238
|
+
Returns:
|
|
239
|
+
'poetry' if poetry.lock exists, 'pip' otherwise
|
|
240
|
+
"""
|
|
241
|
+
current = os.getcwd()
|
|
242
|
+
|
|
243
|
+
# Check up to 5 parent directories for poetry.lock
|
|
244
|
+
for _ in range(5):
|
|
245
|
+
if os.path.exists(os.path.join(current, 'poetry.lock')):
|
|
246
|
+
return 'poetry'
|
|
247
|
+
|
|
248
|
+
parent = os.path.dirname(current)
|
|
249
|
+
if parent == current: # Reached root
|
|
250
|
+
break
|
|
251
|
+
current = parent
|
|
252
|
+
|
|
253
|
+
return 'pip'
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
def check_centrifugo_available() -> bool:
|
|
257
|
+
"""
|
|
258
|
+
Lightweight check if Centrifugo is available.
|
|
259
|
+
|
|
260
|
+
Returns:
|
|
261
|
+
True if all required Centrifugo dependencies are installed
|
|
262
|
+
"""
|
|
263
|
+
try:
|
|
264
|
+
status = DependencyChecker.check_all(raise_on_missing=False)
|
|
265
|
+
required_deps = ['cent', 'httpx']
|
|
266
|
+
return all(status.get(dep, False) for dep in required_deps)
|
|
267
|
+
except Exception:
|
|
268
|
+
# Fallback to simple import check
|
|
269
|
+
try:
|
|
270
|
+
import cent # noqa: F401
|
|
271
|
+
import httpx # noqa: F401
|
|
272
|
+
return True
|
|
273
|
+
except ImportError:
|
|
274
|
+
return False
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
def require_centrifugo_feature() -> None:
|
|
278
|
+
"""
|
|
279
|
+
Require Centrifugo dependencies with detailed error message.
|
|
280
|
+
|
|
281
|
+
Raises:
|
|
282
|
+
ImportError: If required dependencies are missing
|
|
283
|
+
"""
|
|
284
|
+
try:
|
|
285
|
+
if not check_centrifugo_available():
|
|
286
|
+
DependencyChecker.check_all(raise_on_missing=True)
|
|
287
|
+
except CentrifugoDependencyError as e:
|
|
288
|
+
raise ImportError(str(e)) from e
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
def check_centrifugo_dependencies(raise_on_missing: bool = True) -> Dict[str, bool]:
|
|
292
|
+
"""
|
|
293
|
+
Check Centrifugo dependencies and optionally raise if missing.
|
|
294
|
+
|
|
295
|
+
Args:
|
|
296
|
+
raise_on_missing: If True, raise exception when required deps missing
|
|
297
|
+
|
|
298
|
+
Returns:
|
|
299
|
+
Dictionary mapping package names to availability status
|
|
300
|
+
|
|
301
|
+
Raises:
|
|
302
|
+
CentrifugoDependencyError: If dependencies missing and raise_on_missing=True
|
|
303
|
+
"""
|
|
304
|
+
return DependencyChecker.check_all(raise_on_missing=raise_on_missing)
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
def print_dependency_status() -> None:
|
|
308
|
+
"""Print Centrifugo dependency status table."""
|
|
309
|
+
DependencyChecker.print_status()
|