django-cfg 1.4.116__py3-none-any.whl → 1.5.8__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/{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}/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/{agents → business/agents}/management/commands/create_agent.py +1 -1
- django_cfg/apps/{agents → business/agents}/management/commands/orchestrator_status.py +3 -3
- 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}/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 +2 -2
- 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 +4 -4
- django_cfg/apps/{payments → business/payments}/management/commands/create_payment.py +3 -3
- django_cfg/apps/{payments → business/payments}/management/commands/sync_currencies.py +2 -2
- 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 +5 -5
- django_cfg/apps/{centrifugo → integrations/centrifugo}/serializers/__init__.py +2 -2
- 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 +3 -3
- 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 +11 -0
- django_cfg/apps/integrations/grpc/admin/config.py +157 -0
- django_cfg/apps/integrations/grpc/admin/grpc_request_log.py +252 -0
- django_cfg/apps/integrations/grpc/apps.py +108 -0
- django_cfg/apps/integrations/grpc/auth/__init__.py +9 -0
- django_cfg/apps/integrations/grpc/auth/jwt_auth.py +295 -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 +270 -0
- django_cfg/apps/integrations/grpc/interceptors/metrics.py +306 -0
- django_cfg/apps/integrations/grpc/interceptors/request_logger.py +515 -0
- django_cfg/apps/integrations/grpc/management/__init__.py +1 -0
- django_cfg/apps/integrations/grpc/management/commands/rungrpc.py +443 -0
- django_cfg/apps/integrations/grpc/managers/__init__.py +12 -0
- django_cfg/apps/integrations/grpc/managers/grpc_request_log.py +310 -0
- django_cfg/apps/integrations/grpc/managers/grpc_server_status.py +288 -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/models/__init__.py +11 -0
- django_cfg/apps/integrations/grpc/models/grpc_request_log.py +219 -0
- django_cfg/apps/integrations/grpc/models/grpc_server_status.py +270 -0
- django_cfg/apps/integrations/grpc/serializers/__init__.py +67 -0
- django_cfg/apps/integrations/grpc/serializers/charts.py +218 -0
- django_cfg/apps/integrations/grpc/serializers/config.py +106 -0
- django_cfg/apps/integrations/grpc/serializers/health.py +18 -0
- django_cfg/apps/integrations/grpc/serializers/requests.py +18 -0
- django_cfg/apps/integrations/grpc/serializers/service_registry.py +191 -0
- django_cfg/apps/integrations/grpc/serializers/services.py +50 -0
- django_cfg/apps/integrations/grpc/serializers/stats.py +22 -0
- django_cfg/apps/integrations/grpc/serializers/testing.py +105 -0
- django_cfg/apps/integrations/grpc/services/__init__.py +39 -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 +291 -0
- django_cfg/apps/integrations/grpc/services/service_registry.py +328 -0
- django_cfg/apps/integrations/grpc/services/testing_service.py +326 -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 +39 -0
- django_cfg/apps/integrations/grpc/utils/__init__.py +18 -0
- django_cfg/apps/integrations/grpc/utils/proto_gen.py +423 -0
- django_cfg/apps/integrations/grpc/views/__init__.py +15 -0
- django_cfg/apps/integrations/grpc/views/charts.py +217 -0
- django_cfg/apps/integrations/grpc/views/config.py +191 -0
- django_cfg/apps/integrations/grpc/views/monitoring.py +388 -0
- django_cfg/apps/integrations/grpc/views/services.py +289 -0
- django_cfg/apps/integrations/grpc/views/testing.py +306 -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 +882 -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 +400 -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/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/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/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 +3 -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 +318 -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/middleware/authentication.py +1 -1
- 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 +59 -0
- django_cfg/models/api/grpc/config.py +364 -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/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/typescript/operations_generator.py +13 -4
- django_cfg/modules/django_client/core/parser/base.py +49 -0
- django_cfg/modules/django_currency/examples/example_database_usage.py +1 -1
- django_cfg/modules/django_logging/__init__.py +2 -0
- django_cfg/modules/django_logging/django_logger.py +78 -8
- django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
- django_cfg/modules/django_unfold/navigation.py +21 -18
- 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 +7 -1
- 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.8.dist-info}/METADATA +106 -60
- django_cfg-1.5.8.dist-info/RECORD +1161 -0
- django_cfg/apps/centrifugo/apps.py +0 -31
- 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}/management/commands/otp_test.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}/management/commands/knowbase_stats.py +0 -0
- /django_cfg/apps/{knowbase → business/knowbase}/management/commands/setup_knowbase.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}/serializers/publishes.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/commands.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/commands_service.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}/management/commands/maintenance.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/management/commands/process_scheduled_maintenance.py +0 -0
- /django_cfg/apps/{maintenance → system/maintenance}/management/commands/sync_cloudflare.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.8.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.116.dist-info → django_cfg-1.5.8.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.116.dist-info → django_cfg-1.5.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -96,7 +96,7 @@ class CentrifugoLogAdmin(PydanticAdmin):
|
|
|
96
96
|
|
|
97
97
|
try:
|
|
98
98
|
formatted = json.dumps(obj.data, indent=2)
|
|
99
|
-
return
|
|
99
|
+
return self.html.code_block(formatted, language="json", max_height="400px")
|
|
100
100
|
except Exception:
|
|
101
101
|
return str(obj.data)
|
|
102
102
|
|
|
@@ -106,37 +106,22 @@ class CentrifugoLogAdmin(PydanticAdmin):
|
|
|
106
106
|
"""Display error information if publish failed."""
|
|
107
107
|
if obj.is_successful or obj.status == "pending":
|
|
108
108
|
return self.html.inline(
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
]
|
|
109
|
+
self.html.icon(Icons.CHECK_CIRCLE, size="sm"),
|
|
110
|
+
self.html.text("No errors", variant="success"),
|
|
111
|
+
separator=" "
|
|
113
112
|
)
|
|
114
113
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
self.html.inline(
|
|
120
|
-
[
|
|
121
|
-
self.html.span("Error Code:", "font-semibold"),
|
|
122
|
-
self.html.badge(obj.error_code, variant="danger", icon=Icons.ERROR),
|
|
123
|
-
],
|
|
124
|
-
separator=" ",
|
|
125
|
-
)
|
|
126
|
-
)
|
|
114
|
+
error_code_line = self.html.key_value(
|
|
115
|
+
"Error Code",
|
|
116
|
+
self.html.badge(obj.error_code, variant="danger", icon=Icons.ERROR)
|
|
117
|
+
) if obj.error_code else None
|
|
127
118
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
self.html.span("Message:", "font-semibold"),
|
|
133
|
-
self.html.span(obj.error_message, "text-red-600"),
|
|
134
|
-
],
|
|
135
|
-
separator=" ",
|
|
136
|
-
)
|
|
137
|
-
)
|
|
119
|
+
error_msg_line = self.html.key_value(
|
|
120
|
+
"Message",
|
|
121
|
+
self.html.text(obj.error_message, variant="danger")
|
|
122
|
+
) if obj.error_message else None
|
|
138
123
|
|
|
139
|
-
return
|
|
124
|
+
return self.html.breakdown(error_code_line, error_msg_line) if (error_code_line or error_msg_line) else self.html.empty()
|
|
140
125
|
|
|
141
126
|
error_details_display.short_description = "Error Details"
|
|
142
127
|
|
|
@@ -145,57 +130,34 @@ class CentrifugoLogAdmin(PydanticAdmin):
|
|
|
145
130
|
if not obj.wait_for_ack:
|
|
146
131
|
return self.html.empty("No ACK tracking")
|
|
147
132
|
|
|
148
|
-
stats = []
|
|
149
|
-
|
|
150
133
|
# ACK timeout
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
self.html.span("Timeout:", "font-semibold"),
|
|
156
|
-
self.html.span(f"{obj.ack_timeout}s", "text-gray-600"),
|
|
157
|
-
],
|
|
158
|
-
separator=" ",
|
|
159
|
-
)
|
|
160
|
-
)
|
|
134
|
+
timeout_line = self.html.key_value(
|
|
135
|
+
"Timeout",
|
|
136
|
+
f"{obj.ack_timeout}s"
|
|
137
|
+
) if obj.ack_timeout else None
|
|
161
138
|
|
|
162
139
|
# ACKs received
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
self.html.span("ACKs Received:", "font-semibold"),
|
|
167
|
-
self.html.badge(str(obj.acks_received), variant="info"),
|
|
168
|
-
],
|
|
169
|
-
separator=" ",
|
|
170
|
-
)
|
|
140
|
+
received_line = self.html.key_value(
|
|
141
|
+
"ACKs Received",
|
|
142
|
+
self.html.badge(str(obj.acks_received), variant="info")
|
|
171
143
|
)
|
|
172
144
|
|
|
173
145
|
# ACKs expected (if known)
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
146
|
+
expected_line = self.html.key_value(
|
|
147
|
+
"ACKs Expected",
|
|
148
|
+
str(obj.acks_expected)
|
|
149
|
+
) if obj.acks_expected else None
|
|
150
|
+
|
|
151
|
+
# Delivery rate
|
|
152
|
+
rate_line = None
|
|
153
|
+
if obj.acks_expected and obj.delivery_rate is not None:
|
|
154
|
+
rate_pct = obj.delivery_rate * 100
|
|
155
|
+
rate_line = self.html.key_value(
|
|
156
|
+
"Delivery Rate",
|
|
157
|
+
self.html.number(rate_pct, precision=1, suffix="%")
|
|
183
158
|
)
|
|
184
159
|
|
|
185
|
-
|
|
186
|
-
if obj.delivery_rate is not None:
|
|
187
|
-
rate_pct = obj.delivery_rate * 100
|
|
188
|
-
stats.append(
|
|
189
|
-
self.html.inline(
|
|
190
|
-
[
|
|
191
|
-
self.html.span("Delivery Rate:", "font-semibold"),
|
|
192
|
-
self.html.span(f"{rate_pct:.1f}%", "text-blue-600"),
|
|
193
|
-
],
|
|
194
|
-
separator=" ",
|
|
195
|
-
)
|
|
196
|
-
)
|
|
197
|
-
|
|
198
|
-
return "<br>".join(stats) if stats else self.html.empty()
|
|
160
|
+
return self.html.breakdown(timeout_line, received_line, expected_line, rate_line)
|
|
199
161
|
|
|
200
162
|
delivery_stats_display.short_description = "Delivery Statistics"
|
|
201
163
|
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Django app configuration for Centrifugo module.
|
|
3
|
+
|
|
4
|
+
Provides Centrifugo pub/sub client with ACK tracking.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import os
|
|
10
|
+
|
|
11
|
+
from django.apps import AppConfig
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class CentrifugoConfig(AppConfig):
|
|
15
|
+
"""
|
|
16
|
+
Centrifugo application configuration.
|
|
17
|
+
|
|
18
|
+
Provides:
|
|
19
|
+
- Async client for publishing messages to Centrifugo
|
|
20
|
+
- ACK tracking for delivery confirmation
|
|
21
|
+
- Logging of all publish operations
|
|
22
|
+
- Migration-friendly API (mirrors legacy WebSocket solution patterns)
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
default_auto_field = "django.db.models.BigAutoField"
|
|
26
|
+
name = "django_cfg.apps.integrations.centrifugo"
|
|
27
|
+
label = "django_cfg_centrifugo"
|
|
28
|
+
verbose_name = "Centrifugo WebSocket"
|
|
29
|
+
|
|
30
|
+
def ready(self):
|
|
31
|
+
"""
|
|
32
|
+
Initialize app when Django starts.
|
|
33
|
+
|
|
34
|
+
Validates that all required Centrifugo dependencies are installed.
|
|
35
|
+
"""
|
|
36
|
+
from django_cfg.modules.django_logging import get_logger
|
|
37
|
+
|
|
38
|
+
logger = get_logger("centrifugo.apps")
|
|
39
|
+
|
|
40
|
+
# Check dependencies if needed (only when using Centrifugo features)
|
|
41
|
+
self._check_dependencies_if_needed()
|
|
42
|
+
|
|
43
|
+
logger.info("Centrifugo app initialized")
|
|
44
|
+
|
|
45
|
+
def _check_dependencies_if_needed(self):
|
|
46
|
+
"""
|
|
47
|
+
Check Centrifugo dependencies only when needed.
|
|
48
|
+
|
|
49
|
+
Skips check for:
|
|
50
|
+
- Migrations (makemigrations, migrate)
|
|
51
|
+
- Shell commands (shell, shell_plus)
|
|
52
|
+
- Test discovery (test --help)
|
|
53
|
+
- Django checks (check)
|
|
54
|
+
- Management command listing (help)
|
|
55
|
+
"""
|
|
56
|
+
import sys
|
|
57
|
+
|
|
58
|
+
# Get command name from sys.argv
|
|
59
|
+
if len(sys.argv) < 2:
|
|
60
|
+
return
|
|
61
|
+
|
|
62
|
+
command = sys.argv[1]
|
|
63
|
+
|
|
64
|
+
# Commands that don't need Centrifugo dependencies
|
|
65
|
+
skip_commands = [
|
|
66
|
+
'makemigrations',
|
|
67
|
+
'migrate',
|
|
68
|
+
'shell',
|
|
69
|
+
'shell_plus',
|
|
70
|
+
'check',
|
|
71
|
+
'help',
|
|
72
|
+
'test',
|
|
73
|
+
'collectstatic',
|
|
74
|
+
'createsuperuser',
|
|
75
|
+
'changepassword',
|
|
76
|
+
'showmigrations',
|
|
77
|
+
'sqlmigrate',
|
|
78
|
+
'inspectdb',
|
|
79
|
+
]
|
|
80
|
+
|
|
81
|
+
# Skip check for these commands
|
|
82
|
+
if command in skip_commands:
|
|
83
|
+
return
|
|
84
|
+
|
|
85
|
+
# Also skip if running tests (pytest, nose, etc.)
|
|
86
|
+
if 'test' in sys.argv or 'pytest' in sys.argv[0]:
|
|
87
|
+
return
|
|
88
|
+
|
|
89
|
+
# Skip if DJANGO_SKIP_CENTRIFUGO_CHECK environment variable is set
|
|
90
|
+
if os.environ.get('DJANGO_SKIP_CENTRIFUGO_CHECK', '').lower() in ('1', 'true', 'yes'):
|
|
91
|
+
return
|
|
92
|
+
|
|
93
|
+
# For commands that may use Centrifugo, perform silent check
|
|
94
|
+
from ._cfg import check_centrifugo_dependencies
|
|
95
|
+
try:
|
|
96
|
+
# Silent check - only validates that checker itself works
|
|
97
|
+
check_centrifugo_dependencies(raise_on_missing=False)
|
|
98
|
+
except Exception:
|
|
99
|
+
# Silently ignore - don't break other commands
|
|
100
|
+
pass
|
|
@@ -13,11 +13,11 @@ from typing import List
|
|
|
13
13
|
from django.core.management.base import BaseCommand, CommandError
|
|
14
14
|
from django.utils.termcolors import colorize
|
|
15
15
|
|
|
16
|
-
from django_cfg.apps.centrifugo.codegen.discovery import discover_rpc_methods_from_router
|
|
17
|
-
from django_cfg.apps.centrifugo.codegen.generators.python_thin import PythonThinGenerator
|
|
18
|
-
from django_cfg.apps.centrifugo.codegen.generators.typescript_thin import TypeScriptThinGenerator
|
|
19
|
-
from django_cfg.apps.centrifugo.codegen.generators.go_thin import GoThinGenerator
|
|
20
|
-
from django_cfg.apps.centrifugo.router import get_global_router
|
|
16
|
+
from django_cfg.apps.integrations.centrifugo.codegen.discovery import discover_rpc_methods_from_router
|
|
17
|
+
from django_cfg.apps.integrations.centrifugo.codegen.generators.python_thin import PythonThinGenerator
|
|
18
|
+
from django_cfg.apps.integrations.centrifugo.codegen.generators.typescript_thin import TypeScriptThinGenerator
|
|
19
|
+
from django_cfg.apps.integrations.centrifugo.codegen.generators.go_thin import GoThinGenerator
|
|
20
|
+
from django_cfg.apps.integrations.centrifugo.router import get_global_router
|
|
21
21
|
|
|
22
22
|
logger = logging.getLogger(__name__)
|
|
23
23
|
|
|
@@ -17,12 +17,12 @@ from .admin_api import (
|
|
|
17
17
|
from .channels import ChannelListSerializer, ChannelStatsSerializer
|
|
18
18
|
from .health import HealthCheckSerializer
|
|
19
19
|
from .publishes import RecentPublishesSerializer
|
|
20
|
-
from .stats import
|
|
20
|
+
from .stats import CentrifugoOverviewStatsSerializer
|
|
21
21
|
|
|
22
22
|
__all__ = [
|
|
23
23
|
# Monitoring API (Django logs)
|
|
24
24
|
"HealthCheckSerializer",
|
|
25
|
-
"
|
|
25
|
+
"CentrifugoOverviewStatsSerializer",
|
|
26
26
|
"RecentPublishesSerializer",
|
|
27
27
|
"ChannelStatsSerializer",
|
|
28
28
|
"ChannelListSerializer",
|
|
@@ -5,7 +5,7 @@ Statistics serializers for Centrifugo monitoring API.
|
|
|
5
5
|
from pydantic import BaseModel, Field
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
class
|
|
8
|
+
class CentrifugoOverviewStatsSerializer(BaseModel):
|
|
9
9
|
"""Overview statistics for Centrifugo publishes."""
|
|
10
10
|
|
|
11
11
|
total: int = Field(description="Total publishes in period")
|
|
@@ -18,4 +18,4 @@ class OverviewStatsSerializer(BaseModel):
|
|
|
18
18
|
period_hours: int = Field(description="Statistics period in hours")
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
__all__ = ["
|
|
21
|
+
__all__ = ["CentrifugoOverviewStatsSerializer"]
|
|
@@ -54,7 +54,7 @@ class CentrifugoClient:
|
|
|
54
54
|
- Mirrors DjangoCfgRPCClient interface for migration
|
|
55
55
|
|
|
56
56
|
Example:
|
|
57
|
-
>>> from django_cfg.apps.centrifugo import get_centrifugo_client
|
|
57
|
+
>>> from django_cfg.apps.integrations.centrifugo import get_centrifugo_client
|
|
58
58
|
>>>
|
|
59
59
|
>>> client = get_centrifugo_client()
|
|
60
60
|
>>>
|
|
@@ -525,7 +525,7 @@ def get_centrifugo_client(force_new: bool = False) -> CentrifugoClient:
|
|
|
525
525
|
CentrifugoClient instance
|
|
526
526
|
|
|
527
527
|
Example:
|
|
528
|
-
>>> from django_cfg.apps.centrifugo import get_centrifugo_client
|
|
528
|
+
>>> from django_cfg.apps.integrations.centrifugo import get_centrifugo_client
|
|
529
529
|
>>> client = get_centrifugo_client()
|
|
530
530
|
>>> result = await client.publish_with_ack(...)
|
|
531
531
|
"""
|
|
@@ -17,7 +17,7 @@ class DjangoCfgCentrifugoConfig(BaseModel):
|
|
|
17
17
|
|
|
18
18
|
Example:
|
|
19
19
|
>>> from django_cfg import DjangoConfig
|
|
20
|
-
>>> from django_cfg.apps.centrifugo import DjangoCfgCentrifugoConfig
|
|
20
|
+
>>> from django_cfg.apps.integrations.centrifugo import DjangoCfgCentrifugoConfig
|
|
21
21
|
>>>
|
|
22
22
|
>>> config = DjangoConfig(
|
|
23
23
|
... centrifugo=DjangoCfgCentrifugoConfig(
|
|
@@ -19,10 +19,10 @@ from rest_framework.response import Response
|
|
|
19
19
|
from django_cfg.mixins import AdminAPIMixin
|
|
20
20
|
from ..models import CentrifugoLog
|
|
21
21
|
from ..serializers import (
|
|
22
|
+
CentrifugoOverviewStatsSerializer,
|
|
22
23
|
ChannelListSerializer,
|
|
23
24
|
ChannelStatsSerializer,
|
|
24
25
|
HealthCheckSerializer,
|
|
25
|
-
OverviewStatsSerializer,
|
|
26
26
|
RecentPublishesSerializer,
|
|
27
27
|
)
|
|
28
28
|
from ..services import get_centrifugo_config
|
|
@@ -94,7 +94,7 @@ class CentrifugoMonitorViewSet(AdminAPIMixin, viewsets.ViewSet):
|
|
|
94
94
|
),
|
|
95
95
|
],
|
|
96
96
|
responses={
|
|
97
|
-
200:
|
|
97
|
+
200: CentrifugoOverviewStatsSerializer,
|
|
98
98
|
400: {"description": "Invalid parameters"},
|
|
99
99
|
},
|
|
100
100
|
)
|
|
@@ -108,7 +108,7 @@ class CentrifugoMonitorViewSet(AdminAPIMixin, viewsets.ViewSet):
|
|
|
108
108
|
stats = CentrifugoLog.objects.get_statistics(hours=hours)
|
|
109
109
|
stats["period_hours"] = hours
|
|
110
110
|
|
|
111
|
-
serializer =
|
|
111
|
+
serializer = CentrifugoOverviewStatsSerializer(**stats)
|
|
112
112
|
return Response(serializer.model_dump())
|
|
113
113
|
|
|
114
114
|
except ValueError as e:
|
|
@@ -0,0 +1,307 @@
|
|
|
1
|
+
# gRPC Dependency Checker
|
|
2
|
+
|
|
3
|
+
Automatic dependency checking for gRPC integration in django-cfg.
|
|
4
|
+
|
|
5
|
+
## 🎯 Purpose
|
|
6
|
+
|
|
7
|
+
Checks for all required libraries before starting the gRPC server and provides a clear message with installation instructions if anything is missing.
|
|
8
|
+
|
|
9
|
+
## 📦 Dependencies Checked
|
|
10
|
+
|
|
11
|
+
### Required
|
|
12
|
+
- `grpcio` - Core gRPC framework
|
|
13
|
+
- `grpcio-tools` - Protocol Buffer compiler and tools
|
|
14
|
+
- `protobuf` - Protocol Buffers runtime
|
|
15
|
+
|
|
16
|
+
### Optional (Recommended)
|
|
17
|
+
- `grpcio-reflection` - Server reflection API (for grpcurl/grpcui)
|
|
18
|
+
- `grpcio-health-checking` - Health check service
|
|
19
|
+
|
|
20
|
+
## 🚀 Usage
|
|
21
|
+
|
|
22
|
+
### Automatic check on startup
|
|
23
|
+
|
|
24
|
+
The check happens automatically when running the command:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
python manage.py rungrpc
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If dependencies are missing, you will see a detailed message:
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
================================================================================
|
|
34
|
+
❌ MISSING gRPC DEPENDENCIES
|
|
35
|
+
================================================================================
|
|
36
|
+
|
|
37
|
+
Django-CFG's gRPC integration requires additional dependencies that are not installed.
|
|
38
|
+
|
|
39
|
+
📦 REQUIRED (missing):
|
|
40
|
+
|
|
41
|
+
❌ grpcio - Core gRPC framework
|
|
42
|
+
❌ grpcio-tools - Protocol Buffer compiler and tools
|
|
43
|
+
❌ protobuf - Protocol Buffers runtime
|
|
44
|
+
|
|
45
|
+
================================================================================
|
|
46
|
+
🔧 HOW TO FIX
|
|
47
|
+
================================================================================
|
|
48
|
+
|
|
49
|
+
Option 1: Install all gRPC dependencies at once (RECOMMENDED):
|
|
50
|
+
|
|
51
|
+
pip install django-cfg[grpc]
|
|
52
|
+
|
|
53
|
+
# or with poetry:
|
|
54
|
+
poetry add django-cfg[grpc]
|
|
55
|
+
|
|
56
|
+
Option 2: Install dependencies manually:
|
|
57
|
+
|
|
58
|
+
pip install grpcio grpcio-tools protobuf
|
|
59
|
+
|
|
60
|
+
================================================================================
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Manual check
|
|
64
|
+
|
|
65
|
+
#### In Python code:
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
from django_cfg.apps.grpc.utils.dependencies import check_grpc_dependencies
|
|
69
|
+
|
|
70
|
+
# Check with error on missing
|
|
71
|
+
try:
|
|
72
|
+
check_grpc_dependencies(raise_on_missing=True)
|
|
73
|
+
print("✅ All dependencies installed")
|
|
74
|
+
except Exception as e:
|
|
75
|
+
print(f"❌ Error: {e}")
|
|
76
|
+
|
|
77
|
+
# Check without raising error
|
|
78
|
+
status = check_grpc_dependencies(raise_on_missing=False)
|
|
79
|
+
print(status) # {'grpcio': True, 'grpcio-tools': True, ...}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### Print status of all dependencies:
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
from django_cfg.apps.grpc.utils.dependencies import print_dependency_status
|
|
86
|
+
|
|
87
|
+
print_dependency_status()
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Output:
|
|
91
|
+
```
|
|
92
|
+
gRPC Dependencies Status:
|
|
93
|
+
============================================================
|
|
94
|
+
|
|
95
|
+
Required:
|
|
96
|
+
✅ grpcio 1.60.0 - Core gRPC framework
|
|
97
|
+
✅ grpcio-tools 1.60.0 - Protocol Buffer compiler and tools
|
|
98
|
+
✅ protobuf 5.27.0 - Protocol Buffers runtime
|
|
99
|
+
|
|
100
|
+
Optional (recommended):
|
|
101
|
+
✅ grpcio-reflection 1.60.0 - Server reflection API (for grpcurl/grpcui)
|
|
102
|
+
✅ grpcio-health-checking 1.60.0 - Health check service
|
|
103
|
+
|
|
104
|
+
============================================================
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
#### Standalone script:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# From project root
|
|
111
|
+
poetry run python -m django_cfg.apps.grpc.utils.check_deps
|
|
112
|
+
|
|
113
|
+
# Or directly
|
|
114
|
+
poetry run python src/django_cfg/apps/grpc/utils/check_deps.py
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Get library versions
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
from django_cfg.apps.grpc.utils.dependencies import DependencyChecker
|
|
121
|
+
|
|
122
|
+
versions = DependencyChecker.get_version_info()
|
|
123
|
+
print(f"gRPC version: {versions['grpcio']}")
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## ⚙️ Configuration
|
|
127
|
+
|
|
128
|
+
### Disable checking
|
|
129
|
+
|
|
130
|
+
If you need to temporarily disable checking (for example, for testing):
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
export DJANGO_SKIP_GRPC_CHECK=1
|
|
134
|
+
python manage.py rungrpc
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Or in code:
|
|
138
|
+
```python
|
|
139
|
+
import os
|
|
140
|
+
os.environ['DJANGO_SKIP_GRPC_CHECK'] = '1'
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Commands where checking is NOT performed
|
|
144
|
+
|
|
145
|
+
Checking is automatically skipped for:
|
|
146
|
+
- `makemigrations`, `migrate`
|
|
147
|
+
- `shell`, `shell_plus`
|
|
148
|
+
- `test`
|
|
149
|
+
- `check`
|
|
150
|
+
- `help`
|
|
151
|
+
- `collectstatic`
|
|
152
|
+
- `createsuperuser`
|
|
153
|
+
- And other administrative commands
|
|
154
|
+
|
|
155
|
+
For the `rungrpc` command, checking is **always** performed (strict check).
|
|
156
|
+
|
|
157
|
+
## 🔧 Integration in your code
|
|
158
|
+
|
|
159
|
+
### In Django AppConfig
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
from django.apps import AppConfig
|
|
163
|
+
from django_cfg.apps.grpc.utils.dependencies import check_grpc_dependencies
|
|
164
|
+
|
|
165
|
+
class MyAppConfig(AppConfig):
|
|
166
|
+
name = 'myapp'
|
|
167
|
+
|
|
168
|
+
def ready(self):
|
|
169
|
+
# Check dependencies on app startup
|
|
170
|
+
try:
|
|
171
|
+
check_grpc_dependencies(raise_on_missing=True)
|
|
172
|
+
except Exception as e:
|
|
173
|
+
print(e)
|
|
174
|
+
import sys
|
|
175
|
+
sys.exit(1)
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### In management command
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
from django.core.management.base import BaseCommand
|
|
182
|
+
from django_cfg.apps.grpc.utils.dependencies import check_grpc_dependencies
|
|
183
|
+
|
|
184
|
+
class Command(BaseCommand):
|
|
185
|
+
def handle(self, *args, **options):
|
|
186
|
+
# Check before running command
|
|
187
|
+
check_grpc_dependencies(raise_on_missing=True)
|
|
188
|
+
|
|
189
|
+
# Your code
|
|
190
|
+
...
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 🎯 Benefits
|
|
194
|
+
|
|
195
|
+
1. **Clear error messages** - user immediately sees what's missing and how to fix it
|
|
196
|
+
2. **Automatic checking** - no need to remember to check manually
|
|
197
|
+
3. **Flexibility** - can be disabled for tests or other scenarios
|
|
198
|
+
4. **Doesn't break other commands** - checking is performed only where needed
|
|
199
|
+
5. **Library versions** - can find out installed versions for debugging
|
|
200
|
+
|
|
201
|
+
## 📚 API Reference
|
|
202
|
+
|
|
203
|
+
### `check_grpc_dependencies(raise_on_missing=True)`
|
|
204
|
+
Checks all gRPC dependencies.
|
|
205
|
+
|
|
206
|
+
**Parameters:**
|
|
207
|
+
- `raise_on_missing` (bool): Raise `GRPCDependencyError` when dependencies are missing
|
|
208
|
+
|
|
209
|
+
**Returns:** `Dict[str, bool]` - status of each dependency
|
|
210
|
+
|
|
211
|
+
**Raises:** `GRPCDependencyError` if `raise_on_missing=True` and dependencies are missing
|
|
212
|
+
|
|
213
|
+
### `print_dependency_status()`
|
|
214
|
+
Prints a formatted report of all dependency statuses.
|
|
215
|
+
|
|
216
|
+
### `DependencyChecker.check_all(raise_on_missing=True)`
|
|
217
|
+
Checks all dependencies (static method).
|
|
218
|
+
|
|
219
|
+
### `DependencyChecker.get_version_info()`
|
|
220
|
+
Returns a dictionary with versions of all installed libraries.
|
|
221
|
+
|
|
222
|
+
### `GRPCDependencyError`
|
|
223
|
+
Exception that is raised when required dependencies are missing.
|
|
224
|
+
|
|
225
|
+
## 🧪 Testing
|
|
226
|
+
|
|
227
|
+
```python
|
|
228
|
+
import pytest
|
|
229
|
+
from django_cfg.apps.grpc.utils.dependencies import (
|
|
230
|
+
check_grpc_dependencies,
|
|
231
|
+
GRPCDependencyError
|
|
232
|
+
)
|
|
233
|
+
|
|
234
|
+
def test_grpc_dependencies_installed():
|
|
235
|
+
"""Test: all dependencies installed"""
|
|
236
|
+
status = check_grpc_dependencies(raise_on_missing=False)
|
|
237
|
+
assert status['grpcio'] is True
|
|
238
|
+
assert status['grpcio-tools'] is True
|
|
239
|
+
assert status['protobuf'] is True
|
|
240
|
+
|
|
241
|
+
def test_missing_dependencies_raises_error():
|
|
242
|
+
"""Test: error is raised when dependencies are missing"""
|
|
243
|
+
# This test should run in an environment without grpc
|
|
244
|
+
with pytest.raises(GRPCDependencyError):
|
|
245
|
+
check_grpc_dependencies(raise_on_missing=True)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## 📖 Usage Examples
|
|
249
|
+
|
|
250
|
+
### Example 1: Check in CI/CD
|
|
251
|
+
|
|
252
|
+
```yaml
|
|
253
|
+
# .github/workflows/test.yml
|
|
254
|
+
- name: Check gRPC dependencies
|
|
255
|
+
run: |
|
|
256
|
+
poetry run python -m django_cfg.apps.grpc.utils.check_deps
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Example 2: Pre-commit hook
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
#!/bin/bash
|
|
263
|
+
# .git/hooks/pre-commit
|
|
264
|
+
|
|
265
|
+
# Check dependencies before commit
|
|
266
|
+
poetry run python -m django_cfg.apps.grpc.utils.check_deps
|
|
267
|
+
if [ $? -ne 0 ]; then
|
|
268
|
+
echo "❌ gRPC dependencies missing. Run: pip install django-cfg[grpc]"
|
|
269
|
+
exit 1
|
|
270
|
+
fi
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Example 3: Docker healthcheck
|
|
274
|
+
|
|
275
|
+
```dockerfile
|
|
276
|
+
# Dockerfile
|
|
277
|
+
HEALTHCHECK --interval=30s --timeout=3s \
|
|
278
|
+
CMD python -m django_cfg.apps.grpc.utils.check_deps || exit 1
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
## 🐛 Troubleshooting
|
|
282
|
+
|
|
283
|
+
### False positives
|
|
284
|
+
|
|
285
|
+
If the check shows libraries are missing but they are installed:
|
|
286
|
+
|
|
287
|
+
```bash
|
|
288
|
+
# Check current environment
|
|
289
|
+
which python
|
|
290
|
+
pip list | grep grpc
|
|
291
|
+
|
|
292
|
+
# Make sure you're using the correct interpreter
|
|
293
|
+
poetry env info
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### Check not triggering
|
|
297
|
+
|
|
298
|
+
Make sure that:
|
|
299
|
+
1. `django_cfg.apps.grpc` is added to `INSTALLED_APPS`
|
|
300
|
+
2. You are running the `rungrpc` command
|
|
301
|
+
3. The `DJANGO_SKIP_GRPC_CHECK` variable is not set
|
|
302
|
+
|
|
303
|
+
## 🔗 See also
|
|
304
|
+
|
|
305
|
+
- [gRPC Integration Overview](../../../@docs/architecture/integration-overview.md)
|
|
306
|
+
- [Getting Started with gRPC](../../../@docs/guides/getting-started.md)
|
|
307
|
+
- [Troubleshooting Guide](../../../@docs/guides/troubleshooting.md)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"""
|
|
2
|
+
gRPC 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 `utils/` instead.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from .dependencies import (
|
|
9
|
+
DependencyChecker,
|
|
10
|
+
GRPCDependencyError,
|
|
11
|
+
check_grpc_available,
|
|
12
|
+
check_grpc_dependencies,
|
|
13
|
+
print_dependency_status,
|
|
14
|
+
require_grpc_feature,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
__all__ = [
|
|
18
|
+
# Dependency checking
|
|
19
|
+
"DependencyChecker",
|
|
20
|
+
"GRPCDependencyError",
|
|
21
|
+
"check_grpc_available",
|
|
22
|
+
"check_grpc_dependencies",
|
|
23
|
+
"require_grpc_feature",
|
|
24
|
+
"print_dependency_status",
|
|
25
|
+
]
|