django-cfg 1.4.114__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.114.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 -491
- 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.114.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.114.dist-info → django_cfg-1.5.8.dist-info}/WHEEL +0 -0
- {django_cfg-1.4.114.dist-info → django_cfg-1.5.8.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.4.114.dist-info → django_cfg-1.5.8.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Warnings debug helper for Django-CFG.
|
|
3
|
+
|
|
4
|
+
Shows full traceback for specific warnings to help identify the source.
|
|
5
|
+
|
|
6
|
+
Usage:
|
|
7
|
+
Set environment variable:
|
|
8
|
+
export DJANGO_CFG_DEBUG_WARNINGS=1
|
|
9
|
+
|
|
10
|
+
Or call manually in manage.py/wsgi.py BEFORE django.setup():
|
|
11
|
+
from django_cfg.core.debug import setup_warnings_debug
|
|
12
|
+
setup_warnings_debug()
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
import os
|
|
16
|
+
import sys
|
|
17
|
+
import traceback
|
|
18
|
+
import warnings
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def warning_with_traceback(message, category, filename, lineno, file=None, line=None):
|
|
22
|
+
"""
|
|
23
|
+
Custom warning handler that shows full stack traceback.
|
|
24
|
+
|
|
25
|
+
This helps identify WHERE in the code the warning is triggered from.
|
|
26
|
+
"""
|
|
27
|
+
log = file if hasattr(file, 'write') else sys.stderr
|
|
28
|
+
|
|
29
|
+
# Print separator for clarity
|
|
30
|
+
log.write("\n" + "="*80 + "\n")
|
|
31
|
+
log.write(f"⚠️ WARNING TRACEBACK (to help find the source)\n")
|
|
32
|
+
log.write("="*80 + "\n")
|
|
33
|
+
|
|
34
|
+
# Print the full stack trace
|
|
35
|
+
traceback.print_stack(file=log)
|
|
36
|
+
|
|
37
|
+
# Print the actual warning
|
|
38
|
+
log.write("\n" + "-"*80 + "\n")
|
|
39
|
+
log.write(f"⚠️ WARNING MESSAGE:\n")
|
|
40
|
+
log.write(warnings.formatwarning(message, category, filename, lineno, line))
|
|
41
|
+
log.write("="*80 + "\n\n")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def setup_warnings_debug(
|
|
45
|
+
enabled: bool = None,
|
|
46
|
+
categories: list = None,
|
|
47
|
+
patterns: list = None
|
|
48
|
+
):
|
|
49
|
+
"""
|
|
50
|
+
Setup warnings to show full traceback.
|
|
51
|
+
|
|
52
|
+
Args:
|
|
53
|
+
enabled: Whether to enable debug mode. If None, checks:
|
|
54
|
+
1. DjangoConfig.debug_warnings setting (if config exists)
|
|
55
|
+
2. DJANGO_CFG_DEBUG_WARNINGS environment variable
|
|
56
|
+
categories: List of warning categories to track (default: [RuntimeWarning])
|
|
57
|
+
patterns: List of regex patterns to match in warning messages
|
|
58
|
+
(default: ['.*database.*', '.*APPS_NOT_READY.*'])
|
|
59
|
+
|
|
60
|
+
Example:
|
|
61
|
+
# Enable all RuntimeWarnings with traceback
|
|
62
|
+
setup_warnings_debug(enabled=True)
|
|
63
|
+
|
|
64
|
+
# Enable only specific warnings
|
|
65
|
+
setup_warnings_debug(
|
|
66
|
+
enabled=True,
|
|
67
|
+
categories=[RuntimeWarning, DeprecationWarning],
|
|
68
|
+
patterns=['.*database.*']
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# In your config.py:
|
|
72
|
+
class MyConfig(DjangoConfig):
|
|
73
|
+
debug_warnings: bool = True # Enable warnings traceback
|
|
74
|
+
"""
|
|
75
|
+
# Check if enabled (priority: explicit param > config > env var)
|
|
76
|
+
if enabled is None:
|
|
77
|
+
# Try to get from config first (if available)
|
|
78
|
+
try:
|
|
79
|
+
from django_cfg.core.config import get_current_config
|
|
80
|
+
config = get_current_config()
|
|
81
|
+
if config and hasattr(config, 'debug_warnings'):
|
|
82
|
+
enabled = config.debug_warnings
|
|
83
|
+
else:
|
|
84
|
+
enabled = False
|
|
85
|
+
except Exception:
|
|
86
|
+
# Config not available yet, check env var
|
|
87
|
+
enabled = False
|
|
88
|
+
|
|
89
|
+
# Fallback to environment variable
|
|
90
|
+
if not enabled:
|
|
91
|
+
enabled = os.environ.get('DJANGO_CFG_DEBUG_WARNINGS', '').lower() in ('1', 'true', 'yes')
|
|
92
|
+
|
|
93
|
+
if not enabled:
|
|
94
|
+
return
|
|
95
|
+
|
|
96
|
+
# Default categories
|
|
97
|
+
if categories is None:
|
|
98
|
+
categories = [RuntimeWarning]
|
|
99
|
+
|
|
100
|
+
# Default patterns
|
|
101
|
+
if patterns is None:
|
|
102
|
+
patterns = [
|
|
103
|
+
'.*database.*',
|
|
104
|
+
'.*APPS_NOT_READY.*',
|
|
105
|
+
'.*app.*initialization.*',
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
# Install custom warning handler
|
|
109
|
+
warnings.showwarning = warning_with_traceback
|
|
110
|
+
|
|
111
|
+
# Configure filters for each category and pattern
|
|
112
|
+
for category in categories:
|
|
113
|
+
for pattern in patterns:
|
|
114
|
+
warnings.filterwarnings(
|
|
115
|
+
'default',
|
|
116
|
+
category=category,
|
|
117
|
+
message=pattern
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
print(f"🔍 Django-CFG Warnings Debug enabled for: {[c.__name__ for c in categories]}")
|
|
121
|
+
print(f" Patterns: {patterns}")
|
|
@@ -5,21 +5,18 @@ Contains generators for third-party integrations and frameworks:
|
|
|
5
5
|
- Session configuration
|
|
6
6
|
- External services (Telegram, Unfold, Constance)
|
|
7
7
|
- API frameworks (JWT, DRF, Spectacular, OpenAPI Client)
|
|
8
|
-
-
|
|
9
|
-
- Task scheduling (django-q2)
|
|
8
|
+
- Task scheduling (django-rq)
|
|
10
9
|
- Tailwind CSS configuration
|
|
11
10
|
"""
|
|
12
11
|
|
|
13
12
|
from .api import APIFrameworksGenerator
|
|
14
|
-
from .
|
|
13
|
+
from .django_rq import DjangoRQSettingsGenerator
|
|
15
14
|
from .sessions import SessionSettingsGenerator
|
|
16
|
-
from .tasks import TasksSettingsGenerator
|
|
17
15
|
from .third_party import ThirdPartyIntegrationsGenerator
|
|
18
16
|
|
|
19
17
|
__all__ = [
|
|
20
18
|
"SessionSettingsGenerator",
|
|
21
19
|
"ThirdPartyIntegrationsGenerator",
|
|
22
20
|
"APIFrameworksGenerator",
|
|
23
|
-
"
|
|
24
|
-
"DjangoQ2SettingsGenerator",
|
|
21
|
+
"DjangoRQSettingsGenerator",
|
|
25
22
|
]
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Django-RQ Settings Generator.
|
|
3
|
+
|
|
4
|
+
Generates Django settings for django-rq task queue and scheduler.
|
|
5
|
+
Converts DjangoRQConfig Pydantic model to Django RQ_QUEUES and related settings.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from typing import TYPE_CHECKING, Any, Dict, Optional
|
|
9
|
+
|
|
10
|
+
from ....models.django.django_rq import DjangoRQConfig
|
|
11
|
+
|
|
12
|
+
if TYPE_CHECKING:
|
|
13
|
+
from ...base.config_model import DjangoConfig
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class DjangoRQSettingsGenerator:
|
|
17
|
+
"""
|
|
18
|
+
Settings generator for Django-RQ task queue.
|
|
19
|
+
|
|
20
|
+
Converts DjangoRQConfig to Django settings:
|
|
21
|
+
- RQ_QUEUES: Queue configurations
|
|
22
|
+
- RQ_SHOW_ADMIN_LINK: Show link in admin
|
|
23
|
+
- RQ_EXCEPTION_HANDLERS: Exception handlers
|
|
24
|
+
- RQ_API_TOKEN: API authentication token
|
|
25
|
+
|
|
26
|
+
Usage:
|
|
27
|
+
>>> from django_cfg.models.django.django_rq import DjangoRQConfig
|
|
28
|
+
>>> config = DjangoRQConfig(enabled=True)
|
|
29
|
+
>>> generator = DjangoRQSettingsGenerator(config)
|
|
30
|
+
>>> settings = generator.generate()
|
|
31
|
+
>>> 'RQ_QUEUES' in settings
|
|
32
|
+
True
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self, config: DjangoRQConfig, parent_config: Optional["DjangoConfig"] = None):
|
|
36
|
+
"""
|
|
37
|
+
Initialize Django-RQ settings generator.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
config: DjangoRQConfig instance
|
|
41
|
+
parent_config: Parent DjangoConfig for accessing global settings like redis_url
|
|
42
|
+
"""
|
|
43
|
+
self.config = config
|
|
44
|
+
self.parent_config = parent_config
|
|
45
|
+
|
|
46
|
+
def generate(self) -> Dict[str, Any]:
|
|
47
|
+
"""
|
|
48
|
+
Generate Django-RQ settings.
|
|
49
|
+
|
|
50
|
+
Returns:
|
|
51
|
+
Dictionary with RQ_QUEUES and related configuration
|
|
52
|
+
"""
|
|
53
|
+
if not self.config.enabled:
|
|
54
|
+
return {}
|
|
55
|
+
|
|
56
|
+
# Use the model's built-in to_django_settings method
|
|
57
|
+
settings = self.config.to_django_settings(parent_config=self.parent_config)
|
|
58
|
+
|
|
59
|
+
return settings
|
|
60
|
+
|
|
61
|
+
def validate(self) -> None:
|
|
62
|
+
"""
|
|
63
|
+
Validate Django-RQ configuration.
|
|
64
|
+
|
|
65
|
+
Ensures:
|
|
66
|
+
- At least 'default' queue exists (validated by Pydantic)
|
|
67
|
+
- Queue names are unique (validated by Pydantic)
|
|
68
|
+
- Queue configurations are valid
|
|
69
|
+
|
|
70
|
+
Raises:
|
|
71
|
+
ValueError: If configuration is invalid
|
|
72
|
+
"""
|
|
73
|
+
if not self.config.enabled:
|
|
74
|
+
return
|
|
75
|
+
|
|
76
|
+
# Validation is now handled by Pydantic field validators
|
|
77
|
+
# This method is kept for potential custom validation logic
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
__all__ = ['DjangoRQSettingsGenerator']
|
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
"""
|
|
2
|
+
gRPC framework generator.
|
|
3
|
+
|
|
4
|
+
Handles gRPC server, authentication, and proto configuration.
|
|
5
|
+
Size: ~250 lines (focused on gRPC framework)
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
from typing import TYPE_CHECKING, Any, Dict, List
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from ...base.config_model import DjangoConfig
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class GRPCSettingsGenerator:
|
|
18
|
+
"""
|
|
19
|
+
Generates gRPC framework settings.
|
|
20
|
+
|
|
21
|
+
Responsibilities:
|
|
22
|
+
- Configure gRPC server settings
|
|
23
|
+
- Setup authentication and interceptors
|
|
24
|
+
- Configure proto generation
|
|
25
|
+
- Auto-detect if gRPC should be enabled
|
|
26
|
+
- Resolve handlers hook from ROOT_URLCONF
|
|
27
|
+
|
|
28
|
+
Example:
|
|
29
|
+
```python
|
|
30
|
+
generator = GRPCSettingsGenerator(config)
|
|
31
|
+
settings = generator.generate()
|
|
32
|
+
```
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
def __init__(self, config: "DjangoConfig"):
|
|
36
|
+
"""
|
|
37
|
+
Initialize generator with configuration.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
config: DjangoConfig instance
|
|
41
|
+
"""
|
|
42
|
+
self.config = config
|
|
43
|
+
|
|
44
|
+
def generate(self) -> Dict[str, Any]:
|
|
45
|
+
"""
|
|
46
|
+
Generate gRPC framework settings.
|
|
47
|
+
|
|
48
|
+
Returns:
|
|
49
|
+
Dictionary with gRPC configuration
|
|
50
|
+
|
|
51
|
+
Example:
|
|
52
|
+
>>> generator = GRPCSettingsGenerator(config)
|
|
53
|
+
>>> settings = generator.generate()
|
|
54
|
+
"""
|
|
55
|
+
# Check if gRPC should be enabled
|
|
56
|
+
if not self._should_enable_grpc():
|
|
57
|
+
logger.debug("⏭️ gRPC disabled")
|
|
58
|
+
return {}
|
|
59
|
+
|
|
60
|
+
try:
|
|
61
|
+
return self._generate_grpc_settings()
|
|
62
|
+
except ImportError as e:
|
|
63
|
+
logger.warning(f"Failed to import gRPC dependencies: {e}")
|
|
64
|
+
logger.info("💡 Install with: pip install django-cfg[grpc]")
|
|
65
|
+
return {}
|
|
66
|
+
except Exception as e:
|
|
67
|
+
logger.error(f"Failed to generate gRPC settings: {e}")
|
|
68
|
+
return {}
|
|
69
|
+
|
|
70
|
+
def _should_enable_grpc(self) -> bool:
|
|
71
|
+
"""
|
|
72
|
+
Check if gRPC should be enabled.
|
|
73
|
+
|
|
74
|
+
Returns:
|
|
75
|
+
True if gRPC should be enabled
|
|
76
|
+
"""
|
|
77
|
+
# Check if grpc config exists and is enabled
|
|
78
|
+
if not hasattr(self.config, "grpc") or not self.config.grpc:
|
|
79
|
+
return False
|
|
80
|
+
|
|
81
|
+
if not self.config.grpc.enabled:
|
|
82
|
+
return False
|
|
83
|
+
|
|
84
|
+
# Check if gRPC dependencies are available
|
|
85
|
+
from django_cfg.apps.integrations.grpc._cfg import check_grpc_available
|
|
86
|
+
if not check_grpc_available():
|
|
87
|
+
logger.warning("gRPC enabled but dependencies not installed")
|
|
88
|
+
logger.info("💡 Install with: pip install django-cfg[grpc]")
|
|
89
|
+
return False
|
|
90
|
+
|
|
91
|
+
return True
|
|
92
|
+
|
|
93
|
+
def _generate_grpc_settings(self) -> Dict[str, Any]:
|
|
94
|
+
"""
|
|
95
|
+
Generate gRPC-specific settings.
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
Dictionary with gRPC configuration
|
|
99
|
+
"""
|
|
100
|
+
settings = {}
|
|
101
|
+
|
|
102
|
+
# Generate GRPC_FRAMEWORK settings
|
|
103
|
+
grpc_framework = self._build_grpc_framework_settings()
|
|
104
|
+
if grpc_framework:
|
|
105
|
+
settings["GRPC_FRAMEWORK"] = grpc_framework
|
|
106
|
+
|
|
107
|
+
# Generate server-specific settings
|
|
108
|
+
grpc_server = self._build_grpc_server_settings()
|
|
109
|
+
if grpc_server:
|
|
110
|
+
settings["GRPC_SERVER"] = grpc_server
|
|
111
|
+
|
|
112
|
+
# Generate auth-specific settings
|
|
113
|
+
grpc_auth = self._build_grpc_auth_settings()
|
|
114
|
+
if grpc_auth:
|
|
115
|
+
settings["GRPC_AUTH"] = grpc_auth
|
|
116
|
+
|
|
117
|
+
# Generate proto-specific settings
|
|
118
|
+
grpc_proto = self._build_grpc_proto_settings()
|
|
119
|
+
if grpc_proto:
|
|
120
|
+
settings["GRPC_PROTO"] = grpc_proto
|
|
121
|
+
|
|
122
|
+
logger.info("✅ gRPC framework enabled")
|
|
123
|
+
logger.info(f" - Server: {self.config.grpc.server.host}:{self.config.grpc.server.port}")
|
|
124
|
+
logger.info(f" - Workers: {self.config.grpc.server.max_workers}")
|
|
125
|
+
logger.info(f" - Auth: {'enabled' if self.config.grpc.auth.enabled else 'disabled'}")
|
|
126
|
+
logger.info(f" - Reflection: {'enabled' if self.config.grpc.server.enable_reflection else 'disabled'}")
|
|
127
|
+
|
|
128
|
+
return settings
|
|
129
|
+
|
|
130
|
+
def _build_grpc_framework_settings(self) -> Dict[str, Any]:
|
|
131
|
+
"""
|
|
132
|
+
Build GRPC_FRAMEWORK settings dictionary.
|
|
133
|
+
|
|
134
|
+
Returns:
|
|
135
|
+
Dictionary with framework-level gRPC settings
|
|
136
|
+
"""
|
|
137
|
+
grpc_config = self.config.grpc
|
|
138
|
+
|
|
139
|
+
# Resolve handlers hook (replace {ROOT_URLCONF} placeholder)
|
|
140
|
+
handlers_hook = self._resolve_handlers_hook(grpc_config.handlers_hook)
|
|
141
|
+
|
|
142
|
+
# Build interceptors list
|
|
143
|
+
interceptors = self._build_interceptors()
|
|
144
|
+
|
|
145
|
+
framework_settings = {
|
|
146
|
+
"ROOT_HANDLERS_HOOK": handlers_hook,
|
|
147
|
+
"SERVER_INTERCEPTORS": interceptors,
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
# Add auto-registration settings
|
|
151
|
+
if grpc_config.auto_register_apps:
|
|
152
|
+
framework_settings["AUTO_REGISTER_APPS"] = grpc_config.enabled_apps
|
|
153
|
+
|
|
154
|
+
# Add custom services
|
|
155
|
+
if grpc_config.custom_services:
|
|
156
|
+
framework_settings["CUSTOM_SERVICES"] = grpc_config.custom_services
|
|
157
|
+
|
|
158
|
+
return framework_settings
|
|
159
|
+
|
|
160
|
+
def _build_grpc_server_settings(self) -> Dict[str, Any]:
|
|
161
|
+
"""
|
|
162
|
+
Build GRPC_SERVER settings dictionary.
|
|
163
|
+
|
|
164
|
+
Returns:
|
|
165
|
+
Dictionary with server configuration
|
|
166
|
+
"""
|
|
167
|
+
server_config = self.config.grpc.server
|
|
168
|
+
|
|
169
|
+
server_settings = {
|
|
170
|
+
"host": server_config.host,
|
|
171
|
+
"port": server_config.port,
|
|
172
|
+
"max_workers": server_config.max_workers,
|
|
173
|
+
"enable_reflection": server_config.enable_reflection,
|
|
174
|
+
"enable_health_check": server_config.enable_health_check,
|
|
175
|
+
"max_send_message_length": server_config.max_send_message_length,
|
|
176
|
+
"max_receive_message_length": server_config.max_receive_message_length,
|
|
177
|
+
"keepalive_time_ms": server_config.keepalive_time_ms,
|
|
178
|
+
"keepalive_timeout_ms": server_config.keepalive_timeout_ms,
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
# Add optional compression
|
|
182
|
+
if server_config.compression:
|
|
183
|
+
server_settings["compression"] = server_config.compression
|
|
184
|
+
|
|
185
|
+
# Add custom interceptors from config
|
|
186
|
+
if server_config.interceptors:
|
|
187
|
+
server_settings["custom_interceptors"] = server_config.interceptors
|
|
188
|
+
|
|
189
|
+
return server_settings
|
|
190
|
+
|
|
191
|
+
def _build_grpc_auth_settings(self) -> Dict[str, Any]:
|
|
192
|
+
"""
|
|
193
|
+
Build GRPC_AUTH settings dictionary.
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
Dictionary with authentication configuration
|
|
197
|
+
"""
|
|
198
|
+
auth_config = self.config.grpc.auth
|
|
199
|
+
|
|
200
|
+
auth_settings = {
|
|
201
|
+
"enabled": auth_config.enabled,
|
|
202
|
+
"require_auth": auth_config.require_auth,
|
|
203
|
+
"token_header": auth_config.token_header,
|
|
204
|
+
"token_prefix": auth_config.token_prefix,
|
|
205
|
+
"jwt_algorithm": auth_config.jwt_algorithm,
|
|
206
|
+
"jwt_verify_exp": auth_config.jwt_verify_exp,
|
|
207
|
+
"jwt_leeway": auth_config.jwt_leeway,
|
|
208
|
+
"public_methods": auth_config.public_methods,
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
# Use JWT secret from auth config or fall back to Django SECRET_KEY
|
|
212
|
+
if auth_config.jwt_secret_key:
|
|
213
|
+
auth_settings["jwt_secret_key"] = auth_config.jwt_secret_key
|
|
214
|
+
else:
|
|
215
|
+
# Will be resolved from Django settings at runtime
|
|
216
|
+
auth_settings["jwt_secret_key"] = None # Signal to use Django SECRET_KEY
|
|
217
|
+
|
|
218
|
+
return auth_settings
|
|
219
|
+
|
|
220
|
+
def _build_grpc_proto_settings(self) -> Dict[str, Any]:
|
|
221
|
+
"""
|
|
222
|
+
Build GRPC_PROTO settings dictionary.
|
|
223
|
+
|
|
224
|
+
Returns:
|
|
225
|
+
Dictionary with proto generation configuration
|
|
226
|
+
"""
|
|
227
|
+
proto_config = self.config.grpc.proto
|
|
228
|
+
|
|
229
|
+
proto_settings = {
|
|
230
|
+
"auto_generate": proto_config.auto_generate,
|
|
231
|
+
"output_dir": proto_config.output_dir,
|
|
232
|
+
"package_prefix": proto_config.package_prefix,
|
|
233
|
+
"include_services": proto_config.include_services,
|
|
234
|
+
"field_naming": proto_config.field_naming,
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
return proto_settings
|
|
238
|
+
|
|
239
|
+
def _build_interceptors(self) -> List[str]:
|
|
240
|
+
"""
|
|
241
|
+
Build list of server interceptors.
|
|
242
|
+
|
|
243
|
+
Interceptors are added in order:
|
|
244
|
+
1. Request logger interceptor (always enabled for monitoring)
|
|
245
|
+
2. Logging interceptor (if dev mode)
|
|
246
|
+
3. Auth interceptor (if auth enabled)
|
|
247
|
+
4. Metrics interceptor (if dev mode)
|
|
248
|
+
5. Custom interceptors (from config)
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
List of interceptor class paths
|
|
252
|
+
"""
|
|
253
|
+
interceptors = []
|
|
254
|
+
|
|
255
|
+
# Check if we're in dev mode
|
|
256
|
+
is_dev = self.config.env_mode in ("local", "development", "dev")
|
|
257
|
+
|
|
258
|
+
# Add request logger interceptor (always enabled for DB logging)
|
|
259
|
+
interceptors.append(
|
|
260
|
+
"django_cfg.apps.integrations.grpc.interceptors.RequestLoggerInterceptor"
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
# Add logging interceptor in dev mode
|
|
264
|
+
if is_dev:
|
|
265
|
+
interceptors.append(
|
|
266
|
+
"django_cfg.apps.integrations.grpc.interceptors.LoggingInterceptor"
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
# Add auth interceptor if enabled
|
|
270
|
+
if self.config.grpc.auth.enabled:
|
|
271
|
+
interceptors.append(
|
|
272
|
+
"django_cfg.apps.integrations.grpc.auth.JWTAuthInterceptor"
|
|
273
|
+
)
|
|
274
|
+
|
|
275
|
+
# Add metrics interceptor in dev mode
|
|
276
|
+
if is_dev:
|
|
277
|
+
interceptors.append(
|
|
278
|
+
"django_cfg.apps.integrations.grpc.interceptors.MetricsInterceptor"
|
|
279
|
+
)
|
|
280
|
+
|
|
281
|
+
# Add custom interceptors from server config
|
|
282
|
+
if self.config.grpc.server.interceptors:
|
|
283
|
+
interceptors.extend(self.config.grpc.server.interceptors)
|
|
284
|
+
|
|
285
|
+
return interceptors
|
|
286
|
+
|
|
287
|
+
def _resolve_handlers_hook(self, handlers_hook: str) -> str:
|
|
288
|
+
"""
|
|
289
|
+
Resolve handlers hook path.
|
|
290
|
+
|
|
291
|
+
Replaces {ROOT_URLCONF} placeholder with actual ROOT_URLCONF value.
|
|
292
|
+
|
|
293
|
+
Args:
|
|
294
|
+
handlers_hook: Handler hook path (may contain {ROOT_URLCONF})
|
|
295
|
+
|
|
296
|
+
Returns:
|
|
297
|
+
Resolved handler hook path
|
|
298
|
+
|
|
299
|
+
Example:
|
|
300
|
+
>>> self._resolve_handlers_hook("{ROOT_URLCONF}.grpc_handlers")
|
|
301
|
+
'myproject.urls.grpc_handlers'
|
|
302
|
+
"""
|
|
303
|
+
if "{ROOT_URLCONF}" in handlers_hook:
|
|
304
|
+
# Get ROOT_URLCONF from config
|
|
305
|
+
root_urlconf = getattr(self.config, "root_urlconf", None)
|
|
306
|
+
if not root_urlconf:
|
|
307
|
+
# Fall back to default Django pattern
|
|
308
|
+
root_urlconf = f"{self.config.project_name}.urls"
|
|
309
|
+
logger.debug(
|
|
310
|
+
f"ROOT_URLCONF not set, using default: {root_urlconf}"
|
|
311
|
+
)
|
|
312
|
+
|
|
313
|
+
handlers_hook = handlers_hook.replace("{ROOT_URLCONF}", root_urlconf)
|
|
314
|
+
|
|
315
|
+
return handlers_hook
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
__all__ = ["GRPCSettingsGenerator"]
|
|
@@ -77,8 +77,8 @@ class SettingsOrchestrator:
|
|
|
77
77
|
settings.update(self._generate_session_settings())
|
|
78
78
|
settings.update(self._generate_third_party_settings())
|
|
79
79
|
settings.update(self._generate_api_settings())
|
|
80
|
-
settings.update(self.
|
|
81
|
-
settings.update(self.
|
|
80
|
+
settings.update(self._generate_django_rq_settings())
|
|
81
|
+
settings.update(self._generate_grpc_settings())
|
|
82
82
|
settings.update(self._generate_tailwind_settings())
|
|
83
83
|
|
|
84
84
|
# Apply additional settings (user overrides)
|
|
@@ -215,26 +215,26 @@ class SettingsOrchestrator:
|
|
|
215
215
|
except Exception as e:
|
|
216
216
|
raise ConfigurationError(f"Failed to generate API settings: {e}") from e
|
|
217
217
|
|
|
218
|
-
def
|
|
219
|
-
"""Generate
|
|
218
|
+
def _generate_django_rq_settings(self) -> Dict[str, Any]:
|
|
219
|
+
"""Generate Django-RQ task queue and scheduler settings."""
|
|
220
|
+
if not hasattr(self.config, "django_rq") or not self.config.django_rq:
|
|
221
|
+
return {}
|
|
222
|
+
|
|
220
223
|
try:
|
|
221
|
-
from .integration_generators.
|
|
222
|
-
generator =
|
|
224
|
+
from .integration_generators.django_rq import DjangoRQSettingsGenerator
|
|
225
|
+
generator = DjangoRQSettingsGenerator(self.config.django_rq, parent_config=self.config)
|
|
223
226
|
return generator.generate()
|
|
224
227
|
except Exception as e:
|
|
225
|
-
raise ConfigurationError(f"Failed to generate
|
|
226
|
-
|
|
227
|
-
def _generate_django_q2_settings(self) -> Dict[str, Any]:
|
|
228
|
-
"""Generate Django-Q2 task scheduling settings."""
|
|
229
|
-
if not hasattr(self.config, "django_q2") or not self.config.django_q2:
|
|
230
|
-
return {}
|
|
228
|
+
raise ConfigurationError(f"Failed to generate Django-RQ settings: {e}") from e
|
|
231
229
|
|
|
230
|
+
def _generate_grpc_settings(self) -> Dict[str, Any]:
|
|
231
|
+
"""Generate gRPC framework settings."""
|
|
232
232
|
try:
|
|
233
|
-
from .integration_generators.
|
|
234
|
-
generator =
|
|
233
|
+
from .integration_generators.grpc_generator import GRPCSettingsGenerator
|
|
234
|
+
generator = GRPCSettingsGenerator(self.config)
|
|
235
235
|
return generator.generate()
|
|
236
236
|
except Exception as e:
|
|
237
|
-
raise ConfigurationError(f"Failed to generate
|
|
237
|
+
raise ConfigurationError(f"Failed to generate gRPC settings: {e}") from e
|
|
238
238
|
|
|
239
239
|
def _generate_tailwind_settings(self) -> Dict[str, Any]:
|
|
240
240
|
"""Generate Tailwind CSS settings."""
|
|
@@ -5,6 +5,7 @@ Modular, class-based display system for startup information.
|
|
|
5
5
|
"""
|
|
6
6
|
|
|
7
7
|
from .base import BaseDisplayManager
|
|
8
|
+
from .grpc_display import GRPCDisplayManager
|
|
8
9
|
from .ngrok import NgrokDisplayManager
|
|
9
10
|
from .startup import StartupDisplayManager
|
|
10
11
|
|
|
@@ -12,4 +13,5 @@ __all__ = [
|
|
|
12
13
|
"BaseDisplayManager",
|
|
13
14
|
"StartupDisplayManager",
|
|
14
15
|
"NgrokDisplayManager",
|
|
16
|
+
"GRPCDisplayManager",
|
|
15
17
|
]
|
|
@@ -9,6 +9,7 @@ from rich.columns import Columns
|
|
|
9
9
|
from rich.console import Console
|
|
10
10
|
from rich.panel import Panel
|
|
11
11
|
from rich.table import Table
|
|
12
|
+
from rich.text import Text
|
|
12
13
|
|
|
13
14
|
# Panel width configuration - use fixed widths for consistent layout
|
|
14
15
|
CONSOLE_WIDTH = 120 # Console width that fits most terminals
|
|
@@ -155,3 +156,53 @@ class BaseDisplayManager:
|
|
|
155
156
|
"""Print empty lines for spacing."""
|
|
156
157
|
for _ in range(lines):
|
|
157
158
|
self.console.print()
|
|
159
|
+
|
|
160
|
+
def create_header_text(self, show_update_check: bool = True) -> Text:
|
|
161
|
+
"""
|
|
162
|
+
Create reusable header text for startup display.
|
|
163
|
+
|
|
164
|
+
Args:
|
|
165
|
+
show_update_check: Whether to check and display update availability
|
|
166
|
+
|
|
167
|
+
Returns:
|
|
168
|
+
Rich Text object with formatted header
|
|
169
|
+
|
|
170
|
+
Example:
|
|
171
|
+
>>> header = self.create_header_text()
|
|
172
|
+
>>> self.console.print(header)
|
|
173
|
+
# Output: 🚧 Django CFG v1.5.5 • development • Project Name
|
|
174
|
+
"""
|
|
175
|
+
version = self.get_version()
|
|
176
|
+
panel_style, env_emoji, env_color = self.get_environment_style()
|
|
177
|
+
|
|
178
|
+
header_text = Text()
|
|
179
|
+
header_text.append(f"{env_emoji} Django CFG ", style="bold")
|
|
180
|
+
header_text.append(f"v{version}", style="cyan")
|
|
181
|
+
header_text.append(" • ", style="dim")
|
|
182
|
+
header_text.append(f"{self.config.env_mode}", style=env_color)
|
|
183
|
+
|
|
184
|
+
# Show debug_warnings if enabled
|
|
185
|
+
if self.config and self.config.debug_warnings:
|
|
186
|
+
header_text.append(" • ", style="dim")
|
|
187
|
+
header_text.append("🔍 warnings debug", style="yellow")
|
|
188
|
+
|
|
189
|
+
# Add project name
|
|
190
|
+
if self.config and self.config.project_name:
|
|
191
|
+
header_text.append(" • ", style="dim")
|
|
192
|
+
header_text.append(f"{self.config.project_name}", style="white")
|
|
193
|
+
|
|
194
|
+
# Check for critical updates
|
|
195
|
+
if show_update_check:
|
|
196
|
+
try:
|
|
197
|
+
from ..version_checker import get_version_info
|
|
198
|
+
version_info = get_version_info()
|
|
199
|
+
if version_info.get('update_available'):
|
|
200
|
+
header_text.append(" • ", style="dim")
|
|
201
|
+
header_text.append("🚨 UPDATE AVAILABLE", style="bold yellow")
|
|
202
|
+
header_text.append(" (", style="dim")
|
|
203
|
+
header_text.append("poetry add django-cfg@latest", style="bright_blue")
|
|
204
|
+
header_text.append(")", style="dim")
|
|
205
|
+
except Exception:
|
|
206
|
+
pass
|
|
207
|
+
|
|
208
|
+
return header_text
|