django-cfg 1.3.13__py3-none-any.whl → 1.4.3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/accounts/admin/user_admin.py +39 -16
- django_cfg/apps/accounts/serializers/profile.py +1 -1
- django_cfg/apps/accounts/services/otp_service.py +18 -11
- django_cfg/apps/accounts/signals.py +15 -24
- django_cfg/apps/accounts/utils/notifications.py +217 -358
- django_cfg/apps/accounts/views/otp.py +2 -2
- django_cfg/apps/accounts/views/webhook.py +1 -1
- django_cfg/apps/agents/core/django_agent.py +1 -1
- django_cfg/apps/agents/examples/__init__.py +3 -0
- django_cfg/apps/agents/examples/simple_example.py +161 -0
- django_cfg/apps/api/commands/views.py +66 -83
- django_cfg/apps/api/health/drf_views.py +269 -0
- django_cfg/apps/api/health/serializers.py +45 -0
- django_cfg/apps/api/health/urls.py +6 -1
- django_cfg/apps/knowbase/admin/actions/__init__.py +13 -0
- django_cfg/apps/knowbase/admin/actions/visibility_actions.py +56 -0
- django_cfg/apps/knowbase/admin/document_admin.py +136 -270
- django_cfg/apps/knowbase/admin/helpers/__init__.py +17 -0
- django_cfg/apps/knowbase/admin/helpers/configs.py +72 -0
- django_cfg/apps/knowbase/admin/helpers/display_helpers.py +156 -0
- django_cfg/apps/knowbase/admin/helpers/statistics.py +108 -0
- django_cfg/apps/knowbase/config/constance_fields.py +1 -1
- django_cfg/apps/knowbase/config/settings.py +2 -2
- django_cfg/apps/knowbase/examples/__init__.py +3 -0
- django_cfg/apps/knowbase/examples/external_data_usage.py +191 -0
- django_cfg/apps/knowbase/mixins/__init__.py +19 -2
- django_cfg/apps/knowbase/mixins/config/__init__.py +14 -0
- django_cfg/apps/knowbase/mixins/config/defaults.py +75 -0
- django_cfg/apps/knowbase/mixins/config/meta_config.py +120 -0
- django_cfg/apps/knowbase/mixins/creator.py +10 -10
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +199 -0
- django_cfg/apps/knowbase/mixins/external_data_mixin.py +105 -403
- django_cfg/apps/knowbase/mixins/generators/__init__.py +16 -0
- django_cfg/apps/knowbase/mixins/generators/content_generator.py +218 -0
- django_cfg/apps/knowbase/mixins/generators/field_analyzer.py +76 -0
- django_cfg/apps/knowbase/mixins/generators/metadata_generator.py +124 -0
- django_cfg/apps/knowbase/mixins/service.py +2 -2
- django_cfg/apps/knowbase/services/archive/__init__.py +1 -0
- django_cfg/apps/knowbase/services/archive/analyzers/__init__.py +17 -0
- django_cfg/apps/knowbase/services/archive/analyzers/complexity_analyzer.py +33 -0
- django_cfg/apps/knowbase/services/archive/analyzers/purpose_detector.py +36 -0
- django_cfg/apps/knowbase/services/archive/analyzers/quality_analyzer.py +39 -0
- django_cfg/apps/knowbase/services/archive/analyzers/tag_generator.py +103 -0
- django_cfg/apps/knowbase/services/archive/chunking/__init__.py +19 -0
- django_cfg/apps/knowbase/services/archive/chunking/base.py +81 -0
- django_cfg/apps/knowbase/services/archive/chunking/json_chunker.py +62 -0
- django_cfg/apps/knowbase/services/archive/chunking/markdown_chunker.py +107 -0
- django_cfg/apps/knowbase/services/archive/chunking/python_chunker.py +248 -0
- django_cfg/apps/knowbase/services/archive/chunking/text_chunker.py +70 -0
- django_cfg/apps/knowbase/services/archive/chunking_service.py +110 -729
- django_cfg/apps/knowbase/services/archive/context/__init__.py +14 -0
- django_cfg/apps/knowbase/services/archive/context/builders.py +220 -0
- django_cfg/apps/knowbase/services/archive/context/models.py +38 -0
- django_cfg/apps/knowbase/services/embedding/models.py +18 -14
- django_cfg/apps/knowbase/services/embedding/processors.py +6 -3
- django_cfg/apps/knowbase/tasks/document_processing.py +11 -3
- django_cfg/apps/leads/tests.py +1 -1
- django_cfg/apps/payments/admin/api_keys_admin.py +1 -1
- django_cfg/apps/payments/admin/balance_admin.py +1 -1
- django_cfg/apps/payments/admin/currencies_admin.py +1 -1
- django_cfg/apps/payments/admin/payments_admin.py +1 -1
- django_cfg/apps/payments/admin/subscriptions_admin.py +1 -1
- django_cfg/apps/payments/admin_interface/templates/payments/base.html +59 -126
- django_cfg/apps/payments/admin_interface/views/api/payments.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/stats.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/users.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/webhook_admin.py +1 -1
- django_cfg/apps/payments/admin_interface/views/api/webhook_public.py +1 -1
- django_cfg/apps/payments/admin_interface/views/base.py +29 -2
- django_cfg/apps/payments/apps.py +1 -1
- django_cfg/apps/payments/config/django_cfg_integration.py +2 -2
- django_cfg/apps/payments/config/helpers.py +3 -2
- django_cfg/apps/payments/management/commands/cleanup_expired_data.py +1 -1
- django_cfg/apps/payments/management/commands/currency_stats.py +1 -1
- django_cfg/apps/payments/management/commands/manage_currencies.py +1 -1
- django_cfg/apps/payments/management/commands/manage_providers.py +1 -1
- django_cfg/apps/payments/management/commands/process_pending_payments.py +1 -1
- django_cfg/apps/payments/management/commands/test_providers.py +1 -1
- django_cfg/apps/payments/middleware/api_access.py +1 -1
- django_cfg/apps/payments/middleware/rate_limiting.py +1 -1
- django_cfg/apps/payments/middleware/usage_tracking.py +1 -1
- django_cfg/apps/payments/models/balance.py +2 -2
- django_cfg/apps/payments/models/managers/api_key_managers.py +1 -1
- django_cfg/apps/payments/models/managers/balance_managers.py +1 -1
- django_cfg/apps/payments/models/managers/currency_managers.py +1 -1
- django_cfg/apps/payments/models/managers/payment_managers.py +1 -1
- django_cfg/apps/payments/models/managers/subscription_managers.py +1 -1
- django_cfg/apps/payments/models/payments.py +2 -2
- django_cfg/apps/payments/services/cache_service/__init__.py +1 -1
- django_cfg/apps/payments/services/cache_service/simple_cache.py +10 -5
- django_cfg/apps/payments/services/core/base.py +1 -1
- django_cfg/apps/payments/services/core/currency/__init__.py +13 -0
- django_cfg/apps/payments/services/core/currency/currency_converter.py +57 -0
- django_cfg/apps/payments/services/core/currency/currency_validator.py +61 -0
- django_cfg/apps/payments/services/core/operations/__init__.py +15 -0
- django_cfg/apps/payments/services/core/operations/payment_canceller.py +100 -0
- django_cfg/apps/payments/services/core/operations/payment_creator.py +196 -0
- django_cfg/apps/payments/services/core/operations/status_checker.py +100 -0
- django_cfg/apps/payments/services/core/payment_service.py +124 -612
- django_cfg/apps/payments/services/core/providers/__init__.py +13 -0
- django_cfg/apps/payments/services/core/providers/provider_client.py +132 -0
- django_cfg/apps/payments/services/core/providers/status_mapper.py +89 -0
- django_cfg/apps/payments/services/core/utils/__init__.py +13 -0
- django_cfg/apps/payments/services/core/utils/data_converter.py +48 -0
- django_cfg/apps/payments/services/core/utils/statistics_calculator.py +69 -0
- django_cfg/apps/payments/services/providers/base.py +1 -1
- django_cfg/apps/payments/services/providers/nowpayments/__init__.py +3 -3
- django_cfg/apps/payments/services/providers/nowpayments/parsers/__init__.py +9 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/__init__.py +23 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/constants.py +23 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/currency_names.py +244 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/data/patterns.py +511 -0
- django_cfg/apps/payments/services/providers/nowpayments/parsers/parser.py +168 -0
- django_cfg/apps/payments/services/providers/nowpayments/provider.py +1 -1
- django_cfg/apps/payments/services/providers/nowpayments/sync.py +1 -1
- django_cfg/apps/payments/services/providers/registry.py +1 -1
- django_cfg/apps/payments/services/providers/sync_service.py +1 -1
- django_cfg/apps/payments/signals/__init__.py +1 -1
- django_cfg/apps/payments/signals/api_key_signals.py +1 -1
- django_cfg/apps/payments/signals/balance_signals.py +1 -1
- django_cfg/apps/payments/signals/payment_signals.py +1 -1
- django_cfg/apps/payments/signals/subscription_signals.py +1 -1
- django_cfg/apps/payments/views/api/api_keys.py +1 -1
- django_cfg/apps/payments/views/api/balances.py +1 -1
- django_cfg/apps/payments/views/api/base.py +1 -1
- django_cfg/apps/payments/views/api/currencies.py +1 -1
- django_cfg/apps/payments/views/api/payments.py +1 -1
- django_cfg/apps/payments/views/api/subscriptions.py +1 -1
- django_cfg/apps/payments/views/api/webhooks.py +1 -1
- django_cfg/apps/payments/views/serializers/api_keys.py +1 -1
- django_cfg/apps/payments/views/serializers/balances.py +1 -1
- django_cfg/apps/payments/views/serializers/currencies.py +1 -1
- django_cfg/apps/payments/views/serializers/payments.py +1 -1
- django_cfg/apps/payments/views/serializers/subscriptions.py +1 -1
- django_cfg/apps/payments/views/serializers/webhooks.py +1 -1
- django_cfg/apps/support/admin/support_admin.py +21 -13
- django_cfg/apps/support/templates/support/chat/access_denied.html +21 -27
- django_cfg/apps/support/templates/support/chat/ticket_chat.html +183 -254
- django_cfg/apps/support/utils/support_email_service.py +1 -1
- django_cfg/apps/tasks/templates/tasks/layout/base.html +20 -115
- django_cfg/apps/tasks/utils/simulator.py +1 -1
- django_cfg/apps/tasks/views/dashboard.py +33 -3
- django_cfg/apps/urls.py +5 -1
- django_cfg/cli/README.md +57 -471
- django_cfg/cli/commands/create_project.py +140 -529
- django_cfg/cli/main.py +13 -10
- django_cfg/core/__init__.py +63 -6
- django_cfg/core/base/__init__.py +5 -0
- django_cfg/core/base/config_model.py +652 -0
- django_cfg/core/builders/__init__.py +11 -0
- django_cfg/core/builders/apps_builder.py +258 -0
- django_cfg/core/builders/middleware_builder.py +115 -0
- django_cfg/core/builders/security_builder.py +96 -0
- django_cfg/core/config.py +20 -892
- django_cfg/core/constants.py +69 -0
- django_cfg/core/environment/__init__.py +9 -0
- django_cfg/core/exceptions.py +45 -298
- django_cfg/core/generation/__init__.py +51 -0
- django_cfg/core/generation/core_generators/__init__.py +0 -0
- django_cfg/core/generation/core_generators/settings.py +90 -0
- django_cfg/core/generation/core_generators/static.py +82 -0
- django_cfg/core/generation/core_generators/templates.py +141 -0
- django_cfg/core/generation/data_generators/__init__.py +15 -0
- django_cfg/core/generation/data_generators/cache.py +132 -0
- django_cfg/core/generation/data_generators/database.py +117 -0
- django_cfg/core/generation/generation.py +92 -0
- django_cfg/core/generation/integration_generators/__init__.py +21 -0
- django_cfg/core/generation/integration_generators/api.py +237 -0
- django_cfg/core/generation/integration_generators/sessions.py +65 -0
- django_cfg/core/generation/integration_generators/tailwind.py +54 -0
- django_cfg/core/generation/integration_generators/tasks.py +92 -0
- django_cfg/core/generation/integration_generators/third_party.py +144 -0
- django_cfg/core/generation/orchestrator.py +285 -0
- django_cfg/core/generation/protocols.py +30 -0
- django_cfg/core/generation/security_generators/__init__.py +0 -0
- django_cfg/core/generation/utility_generators/__init__.py +24 -0
- django_cfg/core/generation/utility_generators/email.py +58 -0
- django_cfg/core/generation/utility_generators/i18n.py +66 -0
- django_cfg/core/generation/utility_generators/limits.py +58 -0
- django_cfg/core/generation/utility_generators/logging.py +66 -0
- django_cfg/core/generation/utility_generators/security.py +101 -0
- django_cfg/core/generation/utils/__init__.py +0 -0
- django_cfg/core/generation/utils/helpers.py +32 -0
- django_cfg/core/integration/__init__.py +18 -25
- django_cfg/core/integration/display/startup.py +146 -133
- django_cfg/core/integration/url_integration.py +13 -2
- django_cfg/core/services/__init__.py +5 -0
- django_cfg/core/services/config_service.py +121 -0
- django_cfg/core/state/__init__.py +9 -0
- django_cfg/core/state/registry.py +84 -0
- django_cfg/core/types/__init__.py +15 -0
- django_cfg/core/types/aliases.py +15 -0
- django_cfg/core/types/enums.py +49 -0
- django_cfg/dashboard/DEBUG_README.md +105 -0
- django_cfg/dashboard/REFACTORING_SUMMARY.md +237 -0
- django_cfg/dashboard/__init__.py +24 -0
- django_cfg/dashboard/components.py +308 -0
- django_cfg/dashboard/debug.py +176 -0
- django_cfg/dashboard/management/__init__.py +0 -0
- django_cfg/dashboard/management/commands/__init__.py +0 -0
- django_cfg/dashboard/management/commands/debug_dashboard.py +109 -0
- django_cfg/dashboard/sections/__init__.py +1 -0
- django_cfg/dashboard/sections/base.py +128 -0
- django_cfg/dashboard/sections/commands.py +32 -0
- django_cfg/dashboard/sections/overview.py +394 -0
- django_cfg/dashboard/sections/stats.py +48 -0
- django_cfg/dashboard/sections/system.py +73 -0
- django_cfg/management/commands/check_settings.py +6 -2
- django_cfg/management/commands/clear_constance.py +6 -1
- django_cfg/management/commands/create_token.py +5 -4
- django_cfg/management/commands/generate.py +5 -0
- django_cfg/management/commands/list_urls.py +7 -2
- django_cfg/management/commands/migrate_all.py +6 -2
- django_cfg/management/commands/migrator.py +6 -1
- django_cfg/management/commands/rundramatiq.py +6 -1
- django_cfg/management/commands/rundramatiq_simulator.py +11 -4
- django_cfg/management/commands/runserver_ngrok.py +9 -7
- django_cfg/management/commands/script.py +25 -21
- django_cfg/management/commands/show_config.py +6 -1
- django_cfg/management/commands/show_urls.py +8 -3
- django_cfg/management/commands/superuser.py +5 -4
- django_cfg/management/commands/task_clear.py +8 -3
- django_cfg/management/commands/task_status.py +8 -3
- django_cfg/management/commands/test_email.py +6 -1
- django_cfg/management/commands/test_telegram.py +6 -1
- django_cfg/management/commands/test_twilio.py +6 -1
- django_cfg/management/commands/tree.py +7 -4
- django_cfg/models/__init__.py +88 -3
- django_cfg/models/api/__init__.py +27 -0
- django_cfg/models/{api.py → api/config.py} +1 -1
- django_cfg/models/api/drf/__init__.py +21 -0
- django_cfg/models/api/drf/config.py +101 -0
- django_cfg/models/api/drf/redoc.py +31 -0
- django_cfg/models/api/drf/spectacular.py +129 -0
- django_cfg/models/api/drf/swagger.py +59 -0
- django_cfg/models/{api_keys.py → api/keys.py} +16 -6
- django_cfg/models/{limits.py → api/limits.py} +0 -1
- django_cfg/models/base/__init__.py +14 -0
- django_cfg/models/django/__init__.py +16 -0
- django_cfg/models/{constance.py → django/constance.py} +1 -1
- django_cfg/models/{environment.py → django/environment.py} +1 -1
- django_cfg/models/infrastructure/__init__.py +17 -0
- django_cfg/models/{cache.py → infrastructure/cache.py} +3 -2
- django_cfg/models/infrastructure/database/__init__.py +22 -0
- django_cfg/models/infrastructure/database/config.py +265 -0
- django_cfg/models/infrastructure/database/converters.py +91 -0
- django_cfg/models/infrastructure/database/parsers.py +96 -0
- django_cfg/models/infrastructure/database/routing.py +85 -0
- django_cfg/models/infrastructure/database/validators.py +170 -0
- django_cfg/models/{logging.py → infrastructure/logging.py} +1 -1
- django_cfg/models/{security.py → infrastructure/security.py} +2 -2
- django_cfg/models/ngrok/__init__.py +11 -0
- django_cfg/models/ngrok/auth.py +37 -0
- django_cfg/models/ngrok/config.py +77 -0
- django_cfg/models/ngrok/tunnel.py +35 -0
- django_cfg/models/payments/__init__.py +20 -0
- django_cfg/models/payments/api_keys.py +57 -0
- django_cfg/models/{payments.py → payments/config.py} +56 -154
- django_cfg/models/payments/providers/__init__.py +15 -0
- django_cfg/models/payments/providers/base.py +25 -0
- django_cfg/models/payments/providers/nowpayments.py +48 -0
- django_cfg/models/services/__init__.py +18 -0
- django_cfg/models/services/base.py +65 -0
- django_cfg/models/{email.py → services/email.py} +1 -1
- django_cfg/models/services/telegram.py +172 -0
- django_cfg/models/tasks/__init__.py +51 -0
- django_cfg/models/tasks/backends.py +250 -0
- django_cfg/models/tasks/config.py +314 -0
- django_cfg/models/tasks/utils.py +174 -0
- django_cfg/modules/base.py +18 -3
- django_cfg/modules/django_admin/decorators/actions.py +1 -1
- django_cfg/modules/django_admin/decorators/display.py +1 -1
- django_cfg/modules/django_admin/mixins/standalone_actions_mixin.py +1 -1
- django_cfg/modules/django_currency/examples/__init__.py +3 -0
- django_cfg/modules/django_currency/examples/example_database_usage.py +144 -0
- django_cfg/modules/django_drf_theme/CHANGELOG.md +210 -0
- django_cfg/modules/django_drf_theme/EXAMPLE.md +465 -0
- django_cfg/modules/django_drf_theme/IMPLEMENTATION.md +232 -0
- django_cfg/modules/django_drf_theme/README.md +207 -0
- django_cfg/modules/django_drf_theme/TAILWIND_CDN_GUIDE.md +274 -0
- django_cfg/modules/django_drf_theme/__init__.py +23 -0
- django_cfg/modules/django_drf_theme/apps.py +15 -0
- django_cfg/modules/django_drf_theme/renderers.py +58 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/api.html +375 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/base.html +938 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/filter_form.html +132 -0
- django_cfg/modules/django_drf_theme/templates/rest_framework/tailwind/forms/raw_data_form.html +123 -0
- django_cfg/modules/django_drf_theme/templatetags/__init__.py +1 -0
- django_cfg/modules/django_drf_theme/templatetags/tailwind_tags.py +57 -0
- django_cfg/modules/django_email/__init__.py +14 -0
- django_cfg/modules/{django_email.py → django_email/service.py} +78 -113
- django_cfg/modules/django_email/utils.py +40 -0
- django_cfg/modules/django_health/__init__.py +9 -0
- django_cfg/modules/{django_health.py → django_health/service.py} +23 -21
- django_cfg/modules/django_ipc_client/README.md +346 -0
- django_cfg/modules/django_ipc_client/__init__.py +51 -0
- django_cfg/modules/django_ipc_client/client.py +540 -0
- django_cfg/modules/django_ipc_client/config.py +207 -0
- django_cfg/modules/django_ipc_client/dashboard/README.md +517 -0
- django_cfg/modules/django_ipc_client/dashboard/UNFOLD_INTEGRATION.md +439 -0
- django_cfg/modules/django_ipc_client/dashboard/__init__.py +11 -0
- django_cfg/modules/django_ipc_client/dashboard/apps.py +22 -0
- django_cfg/modules/django_ipc_client/dashboard/monitor.py +435 -0
- django_cfg/modules/django_ipc_client/dashboard/static/django_ipc_dashboard/js/dashboard.js +373 -0
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/base.html +76 -0
- django_cfg/modules/django_ipc_client/dashboard/templates/django_ipc_dashboard/dashboard.html +200 -0
- django_cfg/modules/django_ipc_client/dashboard/urls.py +22 -0
- django_cfg/modules/django_ipc_client/dashboard/urls_admin.py +9 -0
- django_cfg/modules/django_ipc_client/dashboard/views.py +251 -0
- django_cfg/modules/django_ipc_client/exceptions.py +201 -0
- django_cfg/modules/django_llm/llm/client.py +155 -550
- django_cfg/modules/django_llm/llm/embeddings/__init__.py +13 -0
- django_cfg/modules/django_llm/llm/embeddings/mock_embedder.py +106 -0
- django_cfg/modules/django_llm/llm/embeddings/openai_embedder.py +79 -0
- django_cfg/modules/django_llm/llm/models_api/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/models_api/models_query.py +163 -0
- django_cfg/modules/django_llm/llm/providers/__init__.py +15 -0
- django_cfg/modules/django_llm/llm/providers/config_builder.py +103 -0
- django_cfg/modules/django_llm/llm/providers/provider_manager.py +148 -0
- django_cfg/modules/django_llm/llm/providers/provider_selector.py +60 -0
- django_cfg/modules/django_llm/llm/requests/__init__.py +15 -0
- django_cfg/modules/django_llm/llm/requests/cache_manager.py +170 -0
- django_cfg/modules/django_llm/llm/requests/chat_handler.py +199 -0
- django_cfg/modules/django_llm/llm/requests/embedding_handler.py +113 -0
- django_cfg/modules/django_llm/llm/responses/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/responses/response_builder.py +131 -0
- django_cfg/modules/django_llm/llm/stats/__init__.py +9 -0
- django_cfg/modules/django_llm/llm/stats/stats_manager.py +107 -0
- django_cfg/modules/django_llm/translator/detectors/__init__.py +13 -0
- django_cfg/modules/django_llm/translator/detectors/language_detector.py +90 -0
- django_cfg/modules/django_llm/translator/detectors/script_detector.py +153 -0
- django_cfg/modules/django_llm/translator/stats/__init__.py +11 -0
- django_cfg/modules/django_llm/translator/stats/stats_tracker.py +85 -0
- django_cfg/modules/django_llm/translator/translator.py +150 -603
- django_cfg/modules/django_llm/translator/translators/__init__.py +15 -0
- django_cfg/modules/django_llm/translator/translators/json_translator.py +316 -0
- django_cfg/modules/django_llm/translator/translators/text_translator.py +139 -0
- django_cfg/modules/django_llm/translator/utils/__init__.py +13 -0
- django_cfg/modules/django_llm/translator/utils/prompt_builder.py +110 -0
- django_cfg/modules/django_llm/translator/utils/text_utils.py +114 -0
- django_cfg/modules/django_logging/FIXES_SUMMARY.md +276 -0
- django_cfg/modules/django_logging/LOGGING_GUIDE.md +504 -0
- django_cfg/modules/django_logging/__init__.py +14 -0
- django_cfg/modules/{django_logger.py → django_logging/django_logger.py} +13 -13
- django_cfg/modules/{logger.py → django_logging/logger.py} +14 -4
- django_cfg/modules/django_ngrok/__init__.py +39 -0
- django_cfg/modules/{django_ngrok.py → django_ngrok/service.py} +14 -42
- django_cfg/modules/django_rpc_old/POETRY.md +344 -0
- django_cfg/modules/django_rpc_old/README.md +397 -0
- django_cfg/modules/django_rpc_old/TESTING.md +358 -0
- django_cfg/modules/django_rpc_old/__init__.py +39 -0
- django_cfg/modules/django_rpc_old/client.py +531 -0
- django_cfg/modules/django_rpc_old/config.py +279 -0
- django_cfg/modules/django_rpc_old/exceptions.py +172 -0
- django_cfg/modules/django_tailwind/README.md +478 -0
- django_cfg/modules/django_tailwind/__init__.py +7 -0
- django_cfg/modules/django_tailwind/apps.py +10 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/app.html +5 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/base.html +117 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/navbar.html +124 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/theme_toggle.html +54 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/components/user_menu.html +116 -0
- django_cfg/modules/django_tailwind/templates/django_tailwind/simple.html +46 -0
- django_cfg/modules/django_tailwind/templatetags/__init__.py +1 -0
- django_cfg/modules/django_tailwind/templatetags/tailwind_info.py +185 -0
- django_cfg/modules/django_tasks/__init__.py +29 -0
- django_cfg/modules/django_tasks/factory.py +127 -0
- django_cfg/modules/{django_tasks.py → django_tasks/service.py} +45 -274
- django_cfg/modules/django_tasks/settings.py +107 -0
- django_cfg/modules/django_telegram/__init__.py +29 -0
- django_cfg/modules/{django_telegram.py → django_telegram/service.py} +45 -113
- django_cfg/modules/django_telegram/utils.py +62 -0
- django_cfg/modules/django_twilio/__init__.py +54 -107
- django_cfg/modules/django_twilio/_imports.py +30 -0
- django_cfg/modules/django_twilio/base.py +192 -0
- django_cfg/modules/django_twilio/email_otp.py +227 -0
- django_cfg/modules/django_twilio/sendgrid_service.py +1 -1
- django_cfg/modules/django_twilio/simple_service.py +1 -2
- django_cfg/modules/django_twilio/sms.py +94 -0
- django_cfg/modules/django_twilio/twilio_service.py +2 -3
- django_cfg/modules/django_twilio/unified.py +310 -0
- django_cfg/modules/django_twilio/utils.py +190 -0
- django_cfg/modules/django_twilio/whatsapp.py +137 -0
- django_cfg/modules/django_unfold/callbacks/base.py +198 -7
- django_cfg/modules/django_unfold/callbacks/main.py +102 -10
- django_cfg/modules/django_unfold/dashboard.py +65 -43
- django_cfg/modules/django_unfold/models/config.py +13 -12
- django_cfg/modules/django_unfold/models/navigation.py +8 -3
- django_cfg/modules/django_unfold/models/tabs.py +2 -2
- django_cfg/modules/django_unfold/templates/unfold/helpers/app_list.html +102 -0
- django_cfg/registry/core.py +24 -26
- django_cfg/registry/modules.py +5 -2
- django_cfg/registry/services.py +20 -3
- django_cfg/registry/third_party.py +8 -8
- django_cfg/static/admin/css/dashboard.css +260 -0
- django_cfg/static/admin/js/commands.js +171 -0
- django_cfg/static/admin/js/dashboard.js +126 -0
- django_cfg/templates/admin/components/management_commands.js +375 -0
- django_cfg/templates/admin/components/progress_bar.html +18 -23
- django_cfg/templates/admin/examples/component_class_example.html +156 -0
- django_cfg/templates/admin/index.html +48 -20
- django_cfg/templates/admin/index_new.html +106 -0
- django_cfg/templates/admin/layouts/base_dashboard.html +60 -0
- django_cfg/templates/admin/layouts/dashboard_with_tabs.html +1 -20
- django_cfg/templates/admin/sections/commands_section.html +626 -0
- django_cfg/templates/admin/sections/overview_section.html +112 -0
- django_cfg/templates/admin/sections/stats_section.html +35 -0
- django_cfg/templates/admin/sections/system_section.html +99 -0
- django_cfg/templates/admin/snippets/components/CHARTS_GUIDE.md +322 -0
- django_cfg/templates/admin/snippets/components/activity_tracker.html +85 -47
- django_cfg/templates/admin/snippets/components/charts_section.html +154 -64
- django_cfg/templates/admin/snippets/components/django_commands.html +3 -3
- django_cfg/templates/admin/snippets/components/recent_activity_improved.html +25 -0
- django_cfg/templates/admin/snippets/components/recent_users_table.html +1 -1
- django_cfg/templates/admin/snippets/components/system_metrics.html +179 -93
- django_cfg/templates/admin/snippets/zones/zones_table.html +2 -2
- django_cfg/templatetags/django_cfg.py +7 -1
- django_cfg/utils/smart_defaults.py +4 -4
- django_cfg-1.4.3.dist-info/METADATA +533 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/RECORD +432 -195
- django_cfg/apps/accounts/utils/auth_email_service.py +0 -84
- django_cfg/apps/payments/services/providers/nowpayments/parsers.py +0 -879
- django_cfg/core/generation.py +0 -621
- django_cfg/management/commands/validate_config.py +0 -189
- django_cfg/models/database.py +0 -480
- django_cfg/models/drf.py +0 -272
- django_cfg/models/ngrok.py +0 -122
- django_cfg/models/services.py +0 -440
- django_cfg/models/tasks.py +0 -550
- django_cfg/modules/django_twilio/service.py +0 -942
- django_cfg/template_archive/django_sample.zip +0 -0
- django_cfg/templates/rest_framework/api.html +0 -12
- django_cfg/utils/toolkit.py +0 -703
- django_cfg-1.3.13.dist-info/METADATA +0 -1029
- /django_cfg/apps/accounts/management/commands/{test_otp.py → otp_test.py} +0 -0
- /django_cfg/core/{environment.py → environment/detector.py} +0 -0
- /django_cfg/models/{cors.py → api/cors.py} +0 -0
- /django_cfg/models/{jwt.py → api/jwt.py} +0 -0
- /django_cfg/models/{base.py → base/config.py} +0 -0
- /django_cfg/models/{cfg.py → base/module.py} +0 -0
- /django_cfg/models/{revolution.py → django/revolution.py} +0 -0
- /django_cfg/modules/{dramatiq_setup.py → django_tasks/dramatiq_setup.py} +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/WHEEL +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.3.13.dist-info → django_cfg-1.4.3.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,13 @@
|
|
1
|
+
"""
|
2
|
+
Provider integration for payment service.
|
3
|
+
|
4
|
+
Handles communication with payment providers and status mapping.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from .provider_client import ProviderClient
|
8
|
+
from .status_mapper import StatusMapper
|
9
|
+
|
10
|
+
__all__ = [
|
11
|
+
'ProviderClient',
|
12
|
+
'StatusMapper',
|
13
|
+
]
|
@@ -0,0 +1,132 @@
|
|
1
|
+
"""
|
2
|
+
Provider communication.
|
3
|
+
|
4
|
+
Handles interactions with payment providers including status checks.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from typing import TYPE_CHECKING
|
8
|
+
from django.db import transaction
|
9
|
+
from django.utils import timezone
|
10
|
+
|
11
|
+
from ...types import ServiceOperationResult
|
12
|
+
from ....models.managers.payment_managers import PaymentStatusUpdateFields
|
13
|
+
from .status_mapper import StatusMapper
|
14
|
+
|
15
|
+
if TYPE_CHECKING:
|
16
|
+
from ....models import UniversalPayment
|
17
|
+
|
18
|
+
|
19
|
+
class ProviderClient:
|
20
|
+
"""Handle provider interactions."""
|
21
|
+
|
22
|
+
def __init__(self, provider_registry, base_service):
|
23
|
+
"""
|
24
|
+
Initialize provider client.
|
25
|
+
|
26
|
+
Args:
|
27
|
+
provider_registry: Provider registry instance
|
28
|
+
base_service: Base service for logging and result creation
|
29
|
+
"""
|
30
|
+
self.provider_registry = provider_registry
|
31
|
+
self.base_service = base_service
|
32
|
+
self.logger = base_service.logger
|
33
|
+
|
34
|
+
def check_status(self, payment: 'UniversalPayment') -> ServiceOperationResult:
|
35
|
+
"""
|
36
|
+
Check payment status with provider and update if changed.
|
37
|
+
|
38
|
+
Args:
|
39
|
+
payment: Payment object to check
|
40
|
+
|
41
|
+
Returns:
|
42
|
+
ServiceOperationResult: Result with status_changed flag
|
43
|
+
"""
|
44
|
+
try:
|
45
|
+
self.logger.debug("Checking provider status", extra={
|
46
|
+
'payment_id': str(payment.id),
|
47
|
+
'current_status': payment.status,
|
48
|
+
'provider': payment.provider
|
49
|
+
})
|
50
|
+
|
51
|
+
# Get provider instance
|
52
|
+
provider = self.provider_registry.get_provider(payment.provider)
|
53
|
+
|
54
|
+
if not provider:
|
55
|
+
return self.base_service._create_error_result(
|
56
|
+
f"Provider {payment.provider} not found",
|
57
|
+
"provider_not_found"
|
58
|
+
)
|
59
|
+
|
60
|
+
# Get status from provider
|
61
|
+
provider_response = provider.get_payment_status(payment.provider_payment_id)
|
62
|
+
|
63
|
+
if not provider_response.success:
|
64
|
+
self.logger.warning("Provider status check failed", extra={
|
65
|
+
'payment_id': str(payment.id),
|
66
|
+
'provider': payment.provider,
|
67
|
+
'error': provider_response.error_message
|
68
|
+
})
|
69
|
+
return self.base_service._create_error_result(
|
70
|
+
f"Provider status check failed: {provider_response.error_message}",
|
71
|
+
"provider_check_failed"
|
72
|
+
)
|
73
|
+
|
74
|
+
# Map provider status to universal status
|
75
|
+
from ....models import UniversalPayment
|
76
|
+
provider_status = provider_response.data.get('status', '').lower()
|
77
|
+
new_status = StatusMapper.map_status_to_enum(
|
78
|
+
provider_status,
|
79
|
+
UniversalPayment.PaymentStatus
|
80
|
+
)
|
81
|
+
|
82
|
+
if not new_status:
|
83
|
+
new_status = payment.status
|
84
|
+
|
85
|
+
status_changed = new_status != payment.status
|
86
|
+
|
87
|
+
# Update payment if status changed
|
88
|
+
if status_changed:
|
89
|
+
with transaction.atomic():
|
90
|
+
# Prepare extra fields from provider response
|
91
|
+
provider_data = provider_response.data
|
92
|
+
|
93
|
+
extra_fields = PaymentStatusUpdateFields(
|
94
|
+
transaction_hash=provider_data.get('transaction_hash'),
|
95
|
+
confirmations_count=provider_data.get('confirmations_count')
|
96
|
+
)
|
97
|
+
|
98
|
+
# Use manager method for consistent status updates
|
99
|
+
success = UniversalPayment.objects.update_payment_status(
|
100
|
+
payment, new_status, extra_fields
|
101
|
+
)
|
102
|
+
|
103
|
+
if not success:
|
104
|
+
return self.base_service._create_error_result(
|
105
|
+
"Failed to update payment status",
|
106
|
+
"status_update_failed"
|
107
|
+
)
|
108
|
+
|
109
|
+
self.logger.info("Payment status updated", extra={
|
110
|
+
'payment_id': str(payment.id),
|
111
|
+
'old_status': payment.status,
|
112
|
+
'new_status': new_status,
|
113
|
+
'provider_status': provider_status
|
114
|
+
})
|
115
|
+
|
116
|
+
return self.base_service._create_success_result(
|
117
|
+
"Provider status checked",
|
118
|
+
{
|
119
|
+
'status_changed': status_changed,
|
120
|
+
'old_status': payment.status if not status_changed else None,
|
121
|
+
'new_status': new_status,
|
122
|
+
'provider_status': provider_status,
|
123
|
+
'provider_response': provider_response.data
|
124
|
+
}
|
125
|
+
)
|
126
|
+
|
127
|
+
except Exception as e:
|
128
|
+
self.logger.error("Error checking provider status", extra={
|
129
|
+
'payment_id': str(payment.id),
|
130
|
+
'error': str(e)
|
131
|
+
})
|
132
|
+
return self.base_service._handle_exception("_check_provider_status", e)
|
@@ -0,0 +1,89 @@
|
|
1
|
+
"""
|
2
|
+
Provider status mapping.
|
3
|
+
|
4
|
+
Maps provider-specific statuses to universal payment statuses.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from typing import Optional
|
8
|
+
|
9
|
+
|
10
|
+
class StatusMapper:
|
11
|
+
"""Map provider statuses to universal statuses."""
|
12
|
+
|
13
|
+
# Universal status mapping for NowPayments
|
14
|
+
NOWPAYMENTS_STATUS_MAP = {
|
15
|
+
'waiting': 'pending',
|
16
|
+
'confirming': 'confirming',
|
17
|
+
'confirmed': 'confirmed',
|
18
|
+
'finished': 'completed',
|
19
|
+
'failed': 'failed',
|
20
|
+
'refunded': 'refunded',
|
21
|
+
'expired': 'expired'
|
22
|
+
}
|
23
|
+
|
24
|
+
# For compatibility with UniversalPayment.PaymentStatus enum
|
25
|
+
ENUM_STATUS_MAP = {
|
26
|
+
'waiting': 'PENDING',
|
27
|
+
'confirming': 'PENDING',
|
28
|
+
'confirmed': 'COMPLETED',
|
29
|
+
'sending': 'PENDING',
|
30
|
+
'partially_paid': 'PENDING',
|
31
|
+
'finished': 'COMPLETED',
|
32
|
+
'failed': 'FAILED',
|
33
|
+
'refunded': 'FAILED',
|
34
|
+
'expired': 'EXPIRED',
|
35
|
+
}
|
36
|
+
|
37
|
+
@classmethod
|
38
|
+
def map_status(
|
39
|
+
cls,
|
40
|
+
provider_status: str,
|
41
|
+
provider: str
|
42
|
+
) -> Optional[str]:
|
43
|
+
"""
|
44
|
+
Map provider status to universal status.
|
45
|
+
|
46
|
+
Args:
|
47
|
+
provider_status: Status from provider
|
48
|
+
provider: Provider name (e.g., 'nowpayments')
|
49
|
+
|
50
|
+
Returns:
|
51
|
+
Universal status string or None if mapping not found
|
52
|
+
"""
|
53
|
+
if not provider_status:
|
54
|
+
return None
|
55
|
+
|
56
|
+
provider_status_lower = provider_status.lower()
|
57
|
+
|
58
|
+
if provider == 'nowpayments':
|
59
|
+
return cls.NOWPAYMENTS_STATUS_MAP.get(provider_status_lower)
|
60
|
+
|
61
|
+
# Default: return lowercased status
|
62
|
+
return provider_status_lower
|
63
|
+
|
64
|
+
@classmethod
|
65
|
+
def map_status_to_enum(
|
66
|
+
cls,
|
67
|
+
provider_status: str,
|
68
|
+
payment_status_enum
|
69
|
+
):
|
70
|
+
"""
|
71
|
+
Map provider status to PaymentStatus enum value.
|
72
|
+
|
73
|
+
Args:
|
74
|
+
provider_status: Status from provider
|
75
|
+
payment_status_enum: UniversalPayment.PaymentStatus enum class
|
76
|
+
|
77
|
+
Returns:
|
78
|
+
Enum value or None
|
79
|
+
"""
|
80
|
+
if not provider_status:
|
81
|
+
return None
|
82
|
+
|
83
|
+
provider_status_lower = provider_status.lower()
|
84
|
+
enum_key = cls.ENUM_STATUS_MAP.get(provider_status_lower)
|
85
|
+
|
86
|
+
if enum_key:
|
87
|
+
return getattr(payment_status_enum, enum_key, None)
|
88
|
+
|
89
|
+
return None
|
@@ -0,0 +1,13 @@
|
|
1
|
+
"""
|
2
|
+
Utility modules for payment service.
|
3
|
+
|
4
|
+
Provides data conversion and statistics calculation.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from .data_converter import DataConverter
|
8
|
+
from .statistics_calculator import StatisticsCalculator
|
9
|
+
|
10
|
+
__all__ = [
|
11
|
+
'DataConverter',
|
12
|
+
'StatisticsCalculator',
|
13
|
+
]
|
@@ -0,0 +1,48 @@
|
|
1
|
+
"""
|
2
|
+
Data conversion utilities.
|
3
|
+
|
4
|
+
Converts between Django models and Pydantic data models.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from typing import TYPE_CHECKING
|
8
|
+
from ...types import PaymentData
|
9
|
+
|
10
|
+
if TYPE_CHECKING:
|
11
|
+
from ....models import UniversalPayment
|
12
|
+
|
13
|
+
|
14
|
+
class DataConverter:
|
15
|
+
"""Convert between data formats."""
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def payment_to_data(payment: 'UniversalPayment') -> PaymentData:
|
19
|
+
"""
|
20
|
+
Convert Django UniversalPayment to PaymentData.
|
21
|
+
|
22
|
+
Args:
|
23
|
+
payment: UniversalPayment model instance
|
24
|
+
|
25
|
+
Returns:
|
26
|
+
PaymentData: Pydantic model with payment data
|
27
|
+
"""
|
28
|
+
return PaymentData(
|
29
|
+
id=str(payment.id),
|
30
|
+
user_id=payment.user_id,
|
31
|
+
amount_usd=float(payment.amount_usd),
|
32
|
+
crypto_amount=payment.pay_amount,
|
33
|
+
currency_code=payment.currency.code,
|
34
|
+
provider=payment.provider,
|
35
|
+
status=payment.status,
|
36
|
+
provider_payment_id=payment.provider_payment_id,
|
37
|
+
payment_url=payment.payment_url,
|
38
|
+
qr_code_url=getattr(payment, 'qr_code_url', None),
|
39
|
+
wallet_address=payment.pay_address,
|
40
|
+
callback_url=payment.callback_url,
|
41
|
+
cancel_url=payment.cancel_url,
|
42
|
+
description=payment.description,
|
43
|
+
metadata={},
|
44
|
+
created_at=payment.created_at,
|
45
|
+
updated_at=payment.updated_at,
|
46
|
+
expires_at=payment.expires_at,
|
47
|
+
completed_at=getattr(payment, 'completed_at', None)
|
48
|
+
)
|
@@ -0,0 +1,69 @@
|
|
1
|
+
"""
|
2
|
+
Payment statistics calculator.
|
3
|
+
|
4
|
+
Calculates various payment statistics and metrics.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from datetime import timedelta
|
8
|
+
from django.db import models
|
9
|
+
from django.utils import timezone
|
10
|
+
|
11
|
+
from ....models import UniversalPayment
|
12
|
+
from ...types import ServiceOperationResult
|
13
|
+
|
14
|
+
|
15
|
+
class StatisticsCalculator:
|
16
|
+
"""Calculate payment statistics."""
|
17
|
+
|
18
|
+
def __init__(self, base_service):
|
19
|
+
"""
|
20
|
+
Initialize calculator.
|
21
|
+
|
22
|
+
Args:
|
23
|
+
base_service: Base service for error/success result creation
|
24
|
+
"""
|
25
|
+
self.base_service = base_service
|
26
|
+
|
27
|
+
def get_payment_stats(self, days: int = 30) -> ServiceOperationResult:
|
28
|
+
"""
|
29
|
+
Get payment statistics for period.
|
30
|
+
|
31
|
+
Args:
|
32
|
+
days: Number of days to analyze
|
33
|
+
|
34
|
+
Returns:
|
35
|
+
ServiceOperationResult with statistics data
|
36
|
+
"""
|
37
|
+
try:
|
38
|
+
since = timezone.now() - timedelta(days=days)
|
39
|
+
|
40
|
+
stats = UniversalPayment.objects.filter(
|
41
|
+
created_at__gte=since
|
42
|
+
).aggregate(
|
43
|
+
total_payments=models.Count('id'),
|
44
|
+
total_amount_usd=models.Sum('amount_usd'),
|
45
|
+
completed_payments=models.Count(
|
46
|
+
'id',
|
47
|
+
filter=models.Q(status=UniversalPayment.PaymentStatus.COMPLETED)
|
48
|
+
),
|
49
|
+
failed_payments=models.Count(
|
50
|
+
'id',
|
51
|
+
filter=models.Q(status=UniversalPayment.PaymentStatus.FAILED)
|
52
|
+
)
|
53
|
+
)
|
54
|
+
|
55
|
+
# Calculate success rate
|
56
|
+
total = stats['total_payments'] or 0
|
57
|
+
completed = stats['completed_payments'] or 0
|
58
|
+
success_rate = (completed / total * 100) if total > 0 else 0
|
59
|
+
|
60
|
+
stats['success_rate'] = round(success_rate, 2)
|
61
|
+
stats['period_days'] = days
|
62
|
+
|
63
|
+
return self.base_service._create_success_result(
|
64
|
+
f"Payment statistics for {days} days",
|
65
|
+
stats
|
66
|
+
)
|
67
|
+
|
68
|
+
except Exception as e:
|
69
|
+
return self.base_service._handle_exception("get_payment_stats", e)
|
@@ -9,7 +9,7 @@ from typing import Dict, Any, Optional
|
|
9
9
|
from decimal import Decimal
|
10
10
|
import requests
|
11
11
|
from django.utils import timezone
|
12
|
-
from django_cfg.modules.
|
12
|
+
from django_cfg.modules.django_logging import get_logger
|
13
13
|
from ..types import ProviderResponse, ServiceOperationResult
|
14
14
|
from .models import ProviderConfig, PaymentRequest, WithdrawalRequest
|
15
15
|
|
@@ -15,17 +15,17 @@ from .models import (
|
|
15
15
|
NowPaymentsStatusResponse
|
16
16
|
)
|
17
17
|
from .sync import NowPaymentsCurrencySync
|
18
|
-
from .config import NowPaymentsConfig
|
18
|
+
from .config import NowPaymentsConfig
|
19
19
|
|
20
20
|
__all__ = [
|
21
21
|
'NowPaymentsProvider',
|
22
22
|
'NowPaymentsProviderConfig',
|
23
|
-
'NowPaymentsCurrency',
|
23
|
+
'NowPaymentsCurrency',
|
24
24
|
'NowPaymentsFullCurrenciesResponse',
|
25
25
|
'NowPaymentsPaymentRequest',
|
26
26
|
'NowPaymentsPaymentResponse',
|
27
27
|
'NowPaymentsWebhook',
|
28
28
|
'NowPaymentsStatusResponse',
|
29
29
|
'NowPaymentsCurrencySync',
|
30
|
-
'
|
30
|
+
'NowPaymentsConfig'
|
31
31
|
]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"""
|
2
|
+
Data for NowPayments parsers.
|
3
|
+
|
4
|
+
All currency names, patterns, and constants for parsing NowPayments API data.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from .currency_names import CURRENCY_NAMES, NETWORK_NAMES
|
8
|
+
from .patterns import PRECISE_PATTERNS, FALLBACK_PATTERNS, PROVIDER_CODE_PATTERNS
|
9
|
+
from .constants import NETWORK_SUFFIXES
|
10
|
+
|
11
|
+
__all__ = [
|
12
|
+
# Currency and network names
|
13
|
+
'CURRENCY_NAMES',
|
14
|
+
'NETWORK_NAMES',
|
15
|
+
|
16
|
+
# Parsing patterns
|
17
|
+
'PRECISE_PATTERNS',
|
18
|
+
'FALLBACK_PATTERNS',
|
19
|
+
'PROVIDER_CODE_PATTERNS',
|
20
|
+
|
21
|
+
# Constants
|
22
|
+
'NETWORK_SUFFIXES',
|
23
|
+
]
|
@@ -0,0 +1,23 @@
|
|
1
|
+
"""
|
2
|
+
Constants for NowPayments parsers.
|
3
|
+
|
4
|
+
Network suffixes and other constant values used for pattern matching.
|
5
|
+
"""
|
6
|
+
|
7
|
+
# Common network suffixes for pattern matching
|
8
|
+
NETWORK_SUFFIXES = [
|
9
|
+
'ERC20', 'TRC20', 'BSC', 'MATIC', 'ARB', 'ALGO', 'ARC20',
|
10
|
+
'OP', 'SOL', 'TON', 'NEAR', 'EOS', 'DOT', 'CELO', 'KAVA',
|
11
|
+
'XTZ', 'BASE', 'KCC', 'XLM', 'LNA', 'AVAX', 'FTM', 'ONE',
|
12
|
+
'HARMONY', 'MOONBEAM', 'MOONRIVER', 'GNOSIS', 'AURORA',
|
13
|
+
'CRONOS', 'EVMOS', 'MILKOMEDA', 'SYSCOIN', 'METIS', 'BOBA',
|
14
|
+
'FUSE', 'TELOS', 'HECO', 'OKEX', 'XDAI', 'COSMOS', 'OSMOSIS',
|
15
|
+
'TERRA', 'KUSAMA', 'POLKADOT', 'CARDANO', 'STELLAR', 'RIPPLE',
|
16
|
+
'BITCOIN', 'LITECOIN', 'BITCOINCASH', 'DOGECOIN', 'ZCASH',
|
17
|
+
'MONERO', 'DASH', 'TEZOS', 'IOTA', 'NEO', 'WAVES', 'LISK',
|
18
|
+
'NANO', 'DIGIBYTE', 'RAVENCOIN', 'SIACOIN', 'DECRED',
|
19
|
+
'HORIZEN', 'KOMODO', 'STRATIS', 'ARK', 'NXT', 'BITSHARES',
|
20
|
+
'STEEM', 'VECHAIN', 'THETA', 'FILECOIN', 'INTERNETCOMPUTER',
|
21
|
+
'HEDERA', 'ELROND', 'FLOW', 'ZILLIQA', 'ONTOLOGY', 'ICON',
|
22
|
+
'QTUM', 'ETHEREUMCLASSIC', 'BITCOINSV'
|
23
|
+
]
|