django-cfg 1.2.22__py3-none-any.whl → 1.2.25__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.
Files changed (125) hide show
  1. django_cfg/__init__.py +1 -1
  2. django_cfg/apps/knowbase/tasks/archive_tasks.py +6 -6
  3. django_cfg/apps/knowbase/tasks/document_processing.py +3 -3
  4. django_cfg/apps/knowbase/tasks/external_data_tasks.py +2 -2
  5. django_cfg/apps/knowbase/tasks/maintenance.py +3 -3
  6. django_cfg/apps/payments/admin/__init__.py +23 -0
  7. django_cfg/apps/payments/admin/api_keys_admin.py +347 -0
  8. django_cfg/apps/payments/admin/balance_admin.py +434 -0
  9. django_cfg/apps/payments/admin/currencies_admin.py +186 -0
  10. django_cfg/apps/payments/admin/filters.py +259 -0
  11. django_cfg/apps/payments/admin/payments_admin.py +142 -0
  12. django_cfg/apps/payments/admin/subscriptions_admin.py +227 -0
  13. django_cfg/apps/payments/admin/tariffs_admin.py +199 -0
  14. django_cfg/apps/payments/config/__init__.py +65 -0
  15. django_cfg/apps/payments/config/module.py +70 -0
  16. django_cfg/apps/payments/config/providers.py +115 -0
  17. django_cfg/apps/payments/config/settings.py +96 -0
  18. django_cfg/apps/payments/config/utils.py +52 -0
  19. django_cfg/apps/payments/decorators.py +291 -0
  20. django_cfg/apps/payments/management/__init__.py +3 -0
  21. django_cfg/apps/payments/management/commands/README.md +178 -0
  22. django_cfg/apps/payments/management/commands/__init__.py +3 -0
  23. django_cfg/apps/payments/management/commands/currency_stats.py +323 -0
  24. django_cfg/apps/payments/management/commands/populate_currencies.py +246 -0
  25. django_cfg/apps/payments/management/commands/update_currencies.py +336 -0
  26. django_cfg/apps/payments/managers/currency_manager.py +65 -14
  27. django_cfg/apps/payments/middleware/api_access.py +294 -0
  28. django_cfg/apps/payments/middleware/rate_limiting.py +216 -0
  29. django_cfg/apps/payments/middleware/usage_tracking.py +296 -0
  30. django_cfg/apps/payments/migrations/0001_initial.py +125 -11
  31. django_cfg/apps/payments/models/__init__.py +18 -0
  32. django_cfg/apps/payments/models/api_keys.py +2 -2
  33. django_cfg/apps/payments/models/balance.py +2 -2
  34. django_cfg/apps/payments/models/base.py +16 -0
  35. django_cfg/apps/payments/models/events.py +2 -2
  36. django_cfg/apps/payments/models/payments.py +112 -2
  37. django_cfg/apps/payments/models/subscriptions.py +2 -2
  38. django_cfg/apps/payments/services/__init__.py +64 -7
  39. django_cfg/apps/payments/services/billing/__init__.py +8 -0
  40. django_cfg/apps/payments/services/cache/__init__.py +15 -0
  41. django_cfg/apps/payments/services/cache/base.py +30 -0
  42. django_cfg/apps/payments/services/cache/simple_cache.py +135 -0
  43. django_cfg/apps/payments/services/core/__init__.py +17 -0
  44. django_cfg/apps/payments/services/core/balance_service.py +447 -0
  45. django_cfg/apps/payments/services/core/fallback_service.py +432 -0
  46. django_cfg/apps/payments/services/core/payment_service.py +576 -0
  47. django_cfg/apps/payments/services/core/subscription_service.py +614 -0
  48. django_cfg/apps/payments/services/internal_types.py +297 -0
  49. django_cfg/apps/payments/services/middleware/__init__.py +8 -0
  50. django_cfg/apps/payments/services/monitoring/__init__.py +22 -0
  51. django_cfg/apps/payments/services/monitoring/api_schemas.py +222 -0
  52. django_cfg/apps/payments/services/monitoring/provider_health.py +372 -0
  53. django_cfg/apps/payments/services/providers/__init__.py +22 -0
  54. django_cfg/apps/payments/services/providers/base.py +137 -0
  55. django_cfg/apps/payments/services/providers/cryptapi.py +273 -0
  56. django_cfg/apps/payments/services/providers/cryptomus.py +310 -0
  57. django_cfg/apps/payments/services/providers/nowpayments.py +293 -0
  58. django_cfg/apps/payments/services/providers/registry.py +103 -0
  59. django_cfg/apps/payments/services/security/__init__.py +34 -0
  60. django_cfg/apps/payments/services/security/error_handler.py +637 -0
  61. django_cfg/apps/payments/services/security/payment_notifications.py +342 -0
  62. django_cfg/apps/payments/services/security/webhook_validator.py +475 -0
  63. django_cfg/apps/payments/services/validators/__init__.py +8 -0
  64. django_cfg/apps/payments/signals/__init__.py +13 -0
  65. django_cfg/apps/payments/signals/api_key_signals.py +160 -0
  66. django_cfg/apps/payments/signals/payment_signals.py +128 -0
  67. django_cfg/apps/payments/signals/subscription_signals.py +196 -0
  68. django_cfg/apps/payments/tasks/__init__.py +12 -0
  69. django_cfg/apps/payments/tasks/webhook_processing.py +177 -0
  70. django_cfg/apps/payments/urls.py +5 -5
  71. django_cfg/apps/payments/utils/__init__.py +45 -0
  72. django_cfg/apps/payments/utils/billing_utils.py +342 -0
  73. django_cfg/apps/payments/utils/config_utils.py +245 -0
  74. django_cfg/apps/payments/utils/middleware_utils.py +228 -0
  75. django_cfg/apps/payments/utils/validation_utils.py +94 -0
  76. django_cfg/apps/payments/views/payment_views.py +40 -2
  77. django_cfg/apps/payments/views/webhook_views.py +266 -0
  78. django_cfg/apps/payments/viewsets.py +65 -0
  79. django_cfg/apps/support/signals.py +16 -4
  80. django_cfg/apps/support/templates/support/chat/ticket_chat.html +1 -1
  81. django_cfg/cli/README.md +2 -2
  82. django_cfg/cli/commands/create_project.py +1 -1
  83. django_cfg/cli/commands/info.py +1 -1
  84. django_cfg/cli/main.py +1 -1
  85. django_cfg/cli/utils.py +5 -5
  86. django_cfg/core/config.py +18 -4
  87. django_cfg/models/payments.py +546 -0
  88. django_cfg/models/revolution.py +1 -1
  89. django_cfg/models/tasks.py +51 -2
  90. django_cfg/modules/base.py +12 -6
  91. django_cfg/modules/django_currency/README.md +104 -269
  92. django_cfg/modules/django_currency/__init__.py +99 -41
  93. django_cfg/modules/django_currency/clients/__init__.py +11 -0
  94. django_cfg/modules/django_currency/clients/coingecko_client.py +257 -0
  95. django_cfg/modules/django_currency/clients/yfinance_client.py +246 -0
  96. django_cfg/modules/django_currency/core/__init__.py +42 -0
  97. django_cfg/modules/django_currency/core/converter.py +169 -0
  98. django_cfg/modules/django_currency/core/exceptions.py +28 -0
  99. django_cfg/modules/django_currency/core/models.py +54 -0
  100. django_cfg/modules/django_currency/database/__init__.py +25 -0
  101. django_cfg/modules/django_currency/database/database_loader.py +507 -0
  102. django_cfg/modules/django_currency/utils/__init__.py +9 -0
  103. django_cfg/modules/django_currency/utils/cache.py +92 -0
  104. django_cfg/modules/django_email.py +42 -4
  105. django_cfg/modules/django_unfold/dashboard.py +20 -0
  106. django_cfg/registry/core.py +10 -0
  107. django_cfg/template_archive/__init__.py +0 -0
  108. django_cfg/template_archive/django_sample.zip +0 -0
  109. {django_cfg-1.2.22.dist-info → django_cfg-1.2.25.dist-info}/METADATA +11 -6
  110. {django_cfg-1.2.22.dist-info → django_cfg-1.2.25.dist-info}/RECORD +113 -50
  111. django_cfg/apps/agents/examples/__init__.py +0 -3
  112. django_cfg/apps/agents/examples/simple_example.py +0 -161
  113. django_cfg/apps/knowbase/examples/__init__.py +0 -3
  114. django_cfg/apps/knowbase/examples/external_data_usage.py +0 -191
  115. django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -199
  116. django_cfg/apps/payments/services/base.py +0 -68
  117. django_cfg/apps/payments/services/nowpayments.py +0 -78
  118. django_cfg/apps/payments/services/providers.py +0 -77
  119. django_cfg/apps/payments/services/redis_service.py +0 -215
  120. django_cfg/modules/django_currency/cache.py +0 -430
  121. django_cfg/modules/django_currency/converter.py +0 -324
  122. django_cfg/modules/django_currency/service.py +0 -277
  123. {django_cfg-1.2.22.dist-info → django_cfg-1.2.25.dist-info}/WHEEL +0 -0
  124. {django_cfg-1.2.22.dist-info → django_cfg-1.2.25.dist-info}/entry_points.txt +0 -0
  125. {django_cfg-1.2.22.dist-info → django_cfg-1.2.25.dist-info}/licenses/LICENSE +0 -0
@@ -163,8 +163,28 @@ class DashboardManager(BaseCfgModule):
163
163
  ]
164
164
  ))
165
165
 
166
+ # Add Payments section if enabled
167
+ if self.is_payments_enabled():
168
+ navigation_sections.append(NavigationSection(
169
+ title="Payments",
170
+ separator=True,
171
+ collapsible=True,
172
+ items=[
173
+ NavigationItem(title="Payments", icon=Icons.ACCOUNT_BALANCE, link="/admin/django_cfg_payments/universalpayment/"),
174
+ NavigationItem(title="Subscriptions", icon=Icons.PERSON_ADD, link="/admin/django_cfg_payments/subscription/"),
175
+ NavigationItem(title="API Keys", icon=Icons.KEY, link="/admin/django_cfg_payments/apikey/"),
176
+ NavigationItem(title="Balances", icon=Icons.ACCOUNT_BALANCE_WALLET, link="/admin/django_cfg_payments/userbalance/"),
177
+ NavigationItem(title="Transactions", icon=Icons.DESCRIPTION, link="/admin/django_cfg_payments/transaction/"),
178
+ NavigationItem(title="Currencies", icon=Icons.ACCOUNT_CIRCLE, link="/admin/django_cfg_payments/currency/"),
179
+ NavigationItem(title="Currency Networks", icon=Icons.LINK, link="/admin/django_cfg_payments/currencynetwork/"),
180
+ NavigationItem(title="Endpoint Groups", icon=Icons.GROUP, link="/admin/django_cfg_payments/endpointgroup/"),
181
+ NavigationItem(title="Tariffs", icon=Icons.SETTINGS, link="/admin/django_cfg_payments/tariff/"),
182
+ ]
183
+ ))
184
+
166
185
  # Convert all NavigationSection objects to dictionaries
167
186
  return [section.to_dict() for section in navigation_sections]
187
+
168
188
 
169
189
 
170
190
  def get_unfold_config(self) -> Dict[str, Any]:
@@ -41,6 +41,16 @@ CORE_REGISTRY = {
41
41
  "TaskConfig": ("django_cfg.models.tasks", "TaskConfig"),
42
42
  "DramatiqConfig": ("django_cfg.models.tasks", "DramatiqConfig"),
43
43
 
44
+ # Payment system models
45
+ "PaymentsConfig": ("django_cfg.models.payments", "PaymentsConfig"),
46
+ "PaymentProviderConfig": ("django_cfg.models.payments", "PaymentProviderConfig"),
47
+ "NowPaymentsConfig": ("django_cfg.models.payments", "NowPaymentsConfig"),
48
+ "CryptAPIConfig": ("django_cfg.models.payments", "CryptAPIConfig"),
49
+ "StripeConfig": ("django_cfg.models.payments", "StripeConfig"),
50
+ "create_nowpayments_config": ("django_cfg.models.payments", "create_nowpayments_config"),
51
+ "create_cryptapi_config": ("django_cfg.models.payments", "create_cryptapi_config"),
52
+ "create_stripe_config": ("django_cfg.models.payments", "create_stripe_config"),
53
+
44
54
  # Pagination classes
45
55
  "DefaultPagination": ("django_cfg.middleware.pagination", "DefaultPagination"),
46
56
  "LargePagination": ("django_cfg.middleware.pagination", "LargePagination"),
File without changes
@@ -1,12 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-cfg
3
- Version: 1.2.22
3
+ Version: 1.2.25
4
4
  Summary: šŸš€ Next-gen Django configuration: type-safety, AI features, blazing-fast setup, and automated best practices — all in one.
5
5
  Project-URL: Homepage, https://djangocfg.com
6
6
  Project-URL: Documentation, https://docs.djangocfg.com
7
- Project-URL: Repository, https://github.com/reformsai/django-cfg
8
- Project-URL: Issues, https://github.com/reformsai/django-cfg/issues
9
- Project-URL: Changelog, https://github.com/reformsai/django-cfg/blob/main/CHANGELOG.md
7
+ Project-URL: Repository, https://github.com/markolofsen/django-cfg
8
+ Project-URL: Issues, https://github.com/markolofsen/django-cfg/issues
9
+ Project-URL: Changelog, https://github.com/markolofsen/django-cfg/blob/main/CHANGELOG.md
10
10
  Author-email: Django-CFG Team <info@djangocfg.com>
11
11
  Maintainer-email: Django-CFG Team <info@djangocfg.com>
12
12
  License: MIT
@@ -64,6 +64,7 @@ Requires-Dist: ngrok>=1.5.1; python_version >= '3.12'
64
64
  Requires-Dist: openai<2.0,>=1.107.0
65
65
  Requires-Dist: pgvector<1.0,>=0.4.0
66
66
  Requires-Dist: psycopg[binary,pool]<4.0,>=3.2.0
67
+ Requires-Dist: pycoingecko<4.0.0,>=3.2.0
67
68
  Requires-Dist: pydantic-ai<2.0,>=1.0.10
68
69
  Requires-Dist: pydantic-yaml<2.0,>=1.6.0
69
70
  Requires-Dist: pydantic<3.0,>=2.11.0
@@ -76,10 +77,12 @@ Requires-Dist: redis<7.0,>=6.4.0
76
77
  Requires-Dist: requests<3.0,>=2.32.0
77
78
  Requires-Dist: rich<15.0,>=14.0.0
78
79
  Requires-Dist: sendgrid<7.0,>=6.12.0
80
+ Requires-Dist: tenacity<10.0.0,>=9.1.2
79
81
  Requires-Dist: tiktoken<1.0,>=0.11.0
80
82
  Requires-Dist: toml<0.11.0,>=0.10.2
81
83
  Requires-Dist: twilio<10.0,>=9.8.0
82
84
  Requires-Dist: whitenoise<7.0,>=6.8.0
85
+ Requires-Dist: yfinance<0.3.0,>=0.2.66
83
86
  Provides-Extra: dev
84
87
  Requires-Dist: black<26.0,>=25.9; extra == 'dev'
85
88
  Requires-Dist: build<2.0,>=1.3; extra == 'dev'
@@ -146,6 +149,7 @@ Description-Content-Type: text/markdown
146
149
 
147
150
  # šŸš€ Django-CFG: Enterprise Django Configuration Framework
148
151
 
152
+
149
153
  [![Python Version](https://img.shields.io/pypi/pyversions/django-cfg.svg?style=flat-square&logo=python&logoColor=white)](https://pypi.org/project/django-cfg/)
150
154
  [![Django Version](https://img.shields.io/pypi/djversions/django-cfg.svg?style=flat-square&logo=django&logoColor=white)](https://pypi.org/project/django-cfg/)
151
155
  [![PyPI Version](https://img.shields.io/pypi/v/django-cfg.svg?style=flat-square&logo=pypi&logoColor=white)](https://pypi.org/project/django-cfg/)
@@ -205,6 +209,7 @@ python manage.py runserver
205
209
  | **šŸŽ« Support System** | āŒ Build from scratch | āŒ Build from scratch | āŒ Build from scratch | āœ… **Enterprise ticketing** |
206
210
  | **šŸ‘¤ User Management** | 🟔 Basic User model | 🟔 Basic auth | āŒ Manual auth | āœ… **OTP + SMS + Profiles** |
207
211
  | **šŸ“§ Communication** | 🟔 Basic email | āŒ Manual setup | āŒ Manual setup | āœ… **Email + SMS + Telegram** |
212
+ | **šŸ’± Currency Conversion** | āŒ Manual API integration | āŒ Manual API integration | āŒ Manual API integration | āœ… **Multi-threading 14K+ currencies** |
208
213
  | **šŸ”„ Background Tasks** | 🟔 Manual Celery | 🟔 Manual Celery | āŒ Manual setup | āœ… **Built-in Dramatiq** |
209
214
  | **🌐 Webhook Testing** | 🟔 Manual ngrok | 🟔 Manual ngrok | 🟔 Manual ngrok | āœ… **Integrated ngrok** |
210
215
  | **šŸš€ Production Deploy** | 🟔 Manual config | 🟔 Manual config | 🟔 Manual config | āœ… **Zero-config Docker** |
@@ -561,7 +566,7 @@ docker-compose up -d
561
566
  ### **šŸš€ Enterprise Features**
562
567
  - [**Built-in Applications**](https://docs.djangocfg.com/features/built-in-apps/accounts) - User management, support, CRM
563
568
  - [**Maintenance Management**](https://docs.djangocfg.com/features/built-in-apps/maintenance) - Multi-site Cloudflare maintenance
564
- - [**Modular System**](https://docs.djangocfg.com/features/modules/overview) - Email, SMS, LLM, currency modules
569
+ - [**Modular System**](https://docs.djangocfg.com/features/modules/overview) - Email, SMS, LLM, **currency conversion** modules
565
570
  - [**Third-party Integrations**](https://docs.djangocfg.com/features/integrations/patterns) - Dramatiq, Twilio, ngrok
566
571
 
567
572
  ### **šŸ¤– AI & Automation**
@@ -1022,4 +1027,4 @@ Django-CFG is built on the shoulders of giants:
1022
1027
 
1023
1028
  ## šŸ” SEO Keywords
1024
1029
 
1025
- **Django configuration**, **Django type safety**, **Django enterprise**, **Pydantic Django**, **Django AI agents**, **Django background tasks**, **Django multi-database**, **Django production deployment**, **Django REST API**, **Django admin interface**, **Django authentication**, **Django CRM**, **Django support system**, **Django newsletter**, **Django CLI tools**, **Django Docker**, **Django ngrok**, **Django Twilio**, **Django SMS**, **Django OTP**, **Django Dramatiq**, **Django Redis**, **Django PostgreSQL**, **Django testing**, **Django migration**, **Django security**, **Django performance**, **Django scalability**, **Django monitoring**, **Django logging**, **Django webhooks**, **Django OpenAPI**, **Django Swagger**, **Django documentation**, **Django framework**, **Python Django**, **Django development**, **Django best practices**
1030
+ **Django configuration**, **Django type safety**, **Django enterprise**, **Pydantic Django**, **Django AI agents**, **Django background tasks**, **Django multi-database**, **Django production deployment**, **Django REST API**, **Django admin interface**, **Django authentication**, **Django CRM**, **Django support system**, **Django newsletter**, **Django CLI tools**, **Django Docker**, **Django ngrok**, **Django Twilio**, **Django SMS**, **Django OTP**, **Django Dramatiq**, **Django Redis**, **Django PostgreSQL**, **Django currency conversion**, **Django cryptocurrency**, **Django YFinance**, **Django CoinGecko**, **Django multi-threading**, **Django testing**, **Django migration**, **Django security**, **Django performance**, **Django scalability**, **Django monitoring**, **Django logging**, **Django webhooks**, **Django OpenAPI**, **Django Swagger**, **Django documentation**, **Django framework**, **Python Django**, **Django development**, **Django best practices**
@@ -1,5 +1,5 @@
1
1
  django_cfg/README.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- django_cfg/__init__.py,sha256=Xr1TpxIGCz8PGP-3n7OZqU3lCSjl9yNS4gakIXX7gqo,1631
2
+ django_cfg/__init__.py,sha256=u75qyot9NFryu7h0faTV0Wz4jBKQAh_5hKy33b9hX1E,1631
3
3
  django_cfg/apps.py,sha256=k84brkeXJI7EgKZLEpTkM9YFZofKI4PzhFOn1cl9Msc,1656
4
4
  django_cfg/config.py,sha256=ME-JKaVzcdmaGhuc1YTkEWoMKSaUasNf1SBlNz-NfrM,1399
5
5
  django_cfg/urls.py,sha256=bpRFjMonQuk4UCUMxx4ueBX3YDNB7HXKFwEghQ3KR3o,793
@@ -73,8 +73,6 @@ django_cfg/apps/agents/core/dependencies.py,sha256=orodh1UXN-U6V3TvOB5ZYluG__ggV
73
73
  django_cfg/apps/agents/core/exceptions.py,sha256=topfsv3TekVpMio8bhbsugpp2CTmR3nKjnUQamtJyTo,1858
74
74
  django_cfg/apps/agents/core/models.py,sha256=JVNJ6kULgBvjuuZCXzFY1mQrYbaGdP9smj2p55k0YUI,4044
75
75
  django_cfg/apps/agents/core/orchestrator.py,sha256=4kAIA2ksc9W3Rm2Kf_ELmDl4744vJugxpF1dlMd_Hh4,12930
76
- django_cfg/apps/agents/examples/__init__.py,sha256=c4EcvvgKS0KP53VDDdYkLzXmTxADwCaaB5opHGLlHkk,42
77
- django_cfg/apps/agents/examples/simple_example.py,sha256=P1RgYaA7jU7gmw3V2TykTEriAJTL3bwb78j3zgYmyDI,4666
78
76
  django_cfg/apps/agents/integration/__init__.py,sha256=ZE2u9lT5RgnzlOB5DfYmHQbgkLwVjBD_h9EeiPs5Txo,310
79
77
  django_cfg/apps/agents/integration/middleware.py,sha256=HE52iXZTTGoh7VrWaJ6fp6Wl7pUnH71WHTPcUG8I-dc,2861
80
78
  django_cfg/apps/agents/integration/registry.py,sha256=yezp0dHXlGrvZMLl6prHQX2xkDMXtJ2n27f0sD9w_r0,11249
@@ -121,8 +119,6 @@ django_cfg/apps/knowbase/config/__init__.py,sha256=IArKoqnqUClMMkLvAs82bRZVTH5KV
121
119
  django_cfg/apps/knowbase/config/constance_fields.py,sha256=RpkNE7dy8bfLP81HgHKOiEGrHKTFU87oGjApua9SC94,8193
122
120
  django_cfg/apps/knowbase/config/constance_settings.py,sha256=KjxlHb3btxRyEYoOO-d_vW2glcy5cHp5cj4uWHg8-W0,7564
123
121
  django_cfg/apps/knowbase/config/settings.py,sha256=X_h0MXId6ZFwZ19dizp5OGDZfmNmCJW9YEu6DOVFLPE,13295
124
- django_cfg/apps/knowbase/examples/__init__.py,sha256=-uJe4FFA9h8DAg17HYI-7U10_zfH07dYL4ET1Ntq40o,81
125
- django_cfg/apps/knowbase/examples/external_data_usage.py,sha256=bUaIBkUkeucdPQGyYDVY_lpZ1wcA_voK7uVPiskxebo,6398
126
122
  django_cfg/apps/knowbase/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
127
123
  django_cfg/apps/knowbase/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
124
  django_cfg/apps/knowbase/management/commands/knowbase_stats.py,sha256=V9APmqzfs6l6-z5Oh1cdEkiP3txxWq1ZNN3DEM2EDXA,6114
@@ -141,7 +137,6 @@ django_cfg/apps/knowbase/mixins/config.py,sha256=Lptwhneyg2sNv15BS2EO9d2Syrz0spC
141
137
  django_cfg/apps/knowbase/mixins/creator.py,sha256=icFzOfWyO6asXsJPteescZXcB5aLg0gu2-9f4GXetN0,2907
142
138
  django_cfg/apps/knowbase/mixins/external_data_mixin.py,sha256=GJuc0HXJK4Po4knx_9NW039teLl7ofkgxml7ySx_Ugc,33275
143
139
  django_cfg/apps/knowbase/mixins/service.py,sha256=QvB2K5LKSgU99C63sj-JLLKgdRXybizxwOk2AvzfMnk,13438
144
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py,sha256=tTW7Aee3EroeWdWbD6IyBddJW9sWVjQFdD60AoGy5-8,7007
145
140
  django_cfg/apps/knowbase/models/__init__.py,sha256=MnMzbOZTB3dlo0IU1VsgQVY1uPOgU6FtQFiAUyaK6AU,742
146
141
  django_cfg/apps/knowbase/models/archive.py,sha256=qNSfOvfAf3oDzpiGjgZH7v2JjLMz2Yt7CdrEUxd7bUM,18600
147
142
  django_cfg/apps/knowbase/models/base.py,sha256=ojkeEige-Z4W4HV96FSL3phjipVUwbUzKjRzWl_28vM,1478
@@ -179,10 +174,10 @@ django_cfg/apps/knowbase/signals/chat_signals.py,sha256=K7fu1o4RmAbh3Ag9hygJQTSv
179
174
  django_cfg/apps/knowbase/signals/document_signals.py,sha256=CFzcrxZg2qcszTg_SbbtoNPaSo5Ja-TiaGTr9wqH2mw,5786
180
175
  django_cfg/apps/knowbase/signals/external_data_signals.py,sha256=XzKDU4Ml64T6wnBF1bTUkeSkQ3p3gXXPC2GhGZvnVZE,7187
181
176
  django_cfg/apps/knowbase/tasks/__init__.py,sha256=F4eMeSoKVu7d1Wboc52Ash4NEIeYG5j6yvch9GgrB2U,908
182
- django_cfg/apps/knowbase/tasks/archive_tasks.py,sha256=0gk08DeG_T3dSmagaD6TvdA7074AjwqiRUs1nXRTaJ8,10037
183
- django_cfg/apps/knowbase/tasks/document_processing.py,sha256=wUVaEvl7fG-i8sKezkR8O-WTWJSm1vYDViqdP_I1htk,12996
184
- django_cfg/apps/knowbase/tasks/external_data_tasks.py,sha256=1DjE-AzEf39TeSZi8eWHPxS5rS92pjHI2pMBKHLX6lc,12344
185
- django_cfg/apps/knowbase/tasks/maintenance.py,sha256=53AMj7R_1Y-cvbqL8MiSIZ3afCWu8-4yWWfKpczmKQw,6022
177
+ django_cfg/apps/knowbase/tasks/archive_tasks.py,sha256=nu5MrnBKqKW0GtoPOIiUxH-zQ8EZ4cMtaeIumNt0d4c,10031
178
+ django_cfg/apps/knowbase/tasks/document_processing.py,sha256=ZrviGaAQGRLErU5LKoigZTfpKXse9R0-ODqDKT0j5zw,12993
179
+ django_cfg/apps/knowbase/tasks/external_data_tasks.py,sha256=3VKwAvSKKSwZXUN5ooXLsaBHbMKJVFuqmkEAo6aowPo,12342
180
+ django_cfg/apps/knowbase/tasks/maintenance.py,sha256=Yar0dzAnPqWtOgoPbg7VoP8-2ZlLvp3NDkNPO2ATpQw,6019
186
181
  django_cfg/apps/knowbase/utils/__init__.py,sha256=xeEJteQAzc4sSJxxaufN0Kw6wUwpRe82mJqk9wX-5MU,189
187
182
  django_cfg/apps/knowbase/utils/chunk_settings.py,sha256=BxndOSQhApGLi_wWXQDHJ3LUfOcs7Uv65wia52GkTxI,8736
188
183
  django_cfg/apps/knowbase/utils/text_processing.py,sha256=WA_G_dRyQAreDxfRij6dBIh68LGTYYXju5C8qhLnNdc,12989
@@ -269,25 +264,49 @@ django_cfg/apps/newsletter/views/subscriptions.py,sha256=marHLbRT6a6e8tMjKVtKG_0
269
264
  django_cfg/apps/newsletter/views/tracking.py,sha256=EJlAltpASzc_0nslVPJt-6mnIqI_QCEmz3MQEGPKzmU,2481
270
265
  django_cfg/apps/payments/__init__.py,sha256=Qb8viLJBKCclV9uuoXjxWXeDevXlbdJ76mV8g5hK7tk,237
271
266
  django_cfg/apps/payments/apps.py,sha256=FZgbLQFMeOJPs_892bM6X-3Edt3YPD2CP50HMekH7Sk,551
272
- django_cfg/apps/payments/urls.py,sha256=aJ4hC3quZvn1c_JJHVWd305DLFAHhtkBHGS-i7XfYCw,3508
267
+ django_cfg/apps/payments/decorators.py,sha256=A8MsH7hzw8i7Cl3Eh5Lcqd9Dbn_nubbb6BAI3eZMEgk,10960
268
+ django_cfg/apps/payments/urls.py,sha256=8Tr5Sr3FcTgUB4PRYYlb8MOkugAPgKT46Jd0uVyNruk,3473
269
+ django_cfg/apps/payments/viewsets.py,sha256=QaUXHUbiw4z0oc2JGpJLkTpLIeP6gC2Q7BNcZ_sTBeg,2175
270
+ django_cfg/apps/payments/admin/__init__.py,sha256=BUTbE4RfbqX3EBF-9oscrh7wQ2tuwCqofGYqlCz4QM4,666
271
+ django_cfg/apps/payments/admin/api_keys_admin.py,sha256=nMghMkKcDYvjZ4POVwpS59E6Dc7IVP9dHv-1OltpEes,11436
272
+ django_cfg/apps/payments/admin/balance_admin.py,sha256=Dwap1VZGwNJ4ZbELMDbiVIxQPmI80MWnsTudyZOvsxo,15386
273
+ django_cfg/apps/payments/admin/currencies_admin.py,sha256=mMcttxDJlbQNJBhbrUhjJJYY2n9uHg1-7Hn8DCH9pVU,5810
274
+ django_cfg/apps/payments/admin/filters.py,sha256=MCYFqs1t3XL0U4WZv4ONUbwqv0vLOo7sN7eDuSaVFd0,8504
275
+ django_cfg/apps/payments/admin/payments_admin.py,sha256=fYKiTgEn1mHNZ2bEamTdf0alyZXYi_GgzjuFB81Ib98,4356
276
+ django_cfg/apps/payments/admin/subscriptions_admin.py,sha256=mJRSyDd761f0LA64AnG19dzTUmiivqq9wZg4roqKYIo,6913
277
+ django_cfg/apps/payments/admin/tariffs_admin.py,sha256=6UiQyRRIKrDdmpi2IZOpDpLeJLHrebOGNc3OizlikLI,6422
278
+ django_cfg/apps/payments/config/__init__.py,sha256=JPvd_Skh5fsm4ii2vrvh4hYPjGH1fCNCpwEwJI_s3mE,1397
279
+ django_cfg/apps/payments/config/module.py,sha256=lMl_Zd3dKUQOXkrgcEdw46BOTIoIi-pRVnLPs5hEWZs,2826
280
+ django_cfg/apps/payments/config/providers.py,sha256=xK0HygWu7bRYnspN3hKFNS4VCPL_ySZ780ocYJXoEl8,4840
281
+ django_cfg/apps/payments/config/settings.py,sha256=hiXbUnaALFD5k8yOkrVLOKVZ90pOIpGcw0opmuoAYTk,3846
282
+ django_cfg/apps/payments/config/utils.py,sha256=iHylQn8UFyvl_hGf2mdqlc0HmYIeT39qGOnixJuwK2g,1285
283
+ django_cfg/apps/payments/management/__init__.py,sha256=4DfL_LIMoYeHTC7YG9ssIB9QjZ9MHRajthdwkYLaCko,50
284
+ django_cfg/apps/payments/management/commands/README.md,sha256=ABO_os5t02X63q0FJJZl5CJQDAAdIPUSs6zpG42kfQI,5873
285
+ django_cfg/apps/payments/management/commands/__init__.py,sha256=97LKvfrlc1NTej4KlQSfQ4QRRT3yppwAjTy05EnmEBI,39
286
+ django_cfg/apps/payments/management/commands/currency_stats.py,sha256=ywkKl5nGjU-FdnvfZ76W_7uP1qAL67IdXoJPw3xJodY,11975
287
+ django_cfg/apps/payments/management/commands/populate_currencies.py,sha256=NIrO5xVhStc5spR91sHt7tc2rKZxUa8K-Ai8Gk37Oxg,10127
288
+ django_cfg/apps/payments/management/commands/update_currencies.py,sha256=rdx-KW5viTVQnxVcsWIX-SbimGCj21H7VjvZqzgKfFg,14484
273
289
  django_cfg/apps/payments/managers/__init__.py,sha256=uYiETCw-K5GXQyAwpcOa2Qxzof8sbtTNc_SghyW45YU,672
274
290
  django_cfg/apps/payments/managers/api_key_manager.py,sha256=xhViRKCLC_eR68hankMZQTcbzMgiRJdyr8KYKk01_dQ,928
275
291
  django_cfg/apps/payments/managers/balance_manager.py,sha256=Sm_EETlHO7LtlrWIqF65vFPS4FpPSNYo5oTgQwTFAZ4,13279
276
- django_cfg/apps/payments/managers/currency_manager.py,sha256=-iq_Nhd3cj_n1aUzObBIMhRRHtpOv50Z0phdwOcKv6w,876
292
+ django_cfg/apps/payments/managers/currency_manager.py,sha256=rsmULj7UMRlZtkF1GRZwvn2ciJ5lDqBLo9NoDZmA3zM,2816
277
293
  django_cfg/apps/payments/managers/payment_manager.py,sha256=udiTFIIVXsjqmlwzFwcT0ZTkYJZ9HVOSLLFTvAodY3w,1467
278
294
  django_cfg/apps/payments/managers/subscription_manager.py,sha256=LHrw5INc1nSqfpw76bn7W2poEA-29FXfF5uhaxmq7l8,968
279
295
  django_cfg/apps/payments/managers/tariff_manager.py,sha256=Kor_0ApvROcH0UKlp1-9rYChtHWDeOFgUc1GG3IepxY,799
280
296
  django_cfg/apps/payments/middleware/__init__.py,sha256=ryn3emWBq15-kE8eJxX19gd-eTrk7JlpXqV2Cg8N_Wg,294
281
- django_cfg/apps/payments/migrations/0001_initial.py,sha256=u4as4J5YycFDAs4acQz9girjg2Hp9uTn8Hy7WZEUI6U,39911
297
+ django_cfg/apps/payments/middleware/api_access.py,sha256=u7fHQk2NA9QWbku5YU3T5ZzwS4SeWcZzToa8y1ClcHc,10788
298
+ django_cfg/apps/payments/middleware/rate_limiting.py,sha256=MhpHQkTjoHdH-tsJNlZATQQ9d9R9PDTwrdw1gUt_ydo,7407
299
+ django_cfg/apps/payments/middleware/usage_tracking.py,sha256=i8KT5E0dN6zhQwY8A-wFWtpkc9FJpfTQ4qTnRV8onmw,11176
300
+ django_cfg/apps/payments/migrations/0001_initial.py,sha256=36RhaBGV8crRsbFT731NS2hpWiW0E-OPNcJkTOJY9-Y,44233
282
301
  django_cfg/apps/payments/migrations/__init__.py,sha256=OHlzxEGDJYKZz82orZXnh77xy-Okv6FcG3EKMfg9LzU,21
283
- django_cfg/apps/payments/models/__init__.py,sha256=UV1xEm1osEkWA5XmvBJSS5YU2fddqkvSum6-_15IBH0,882
284
- django_cfg/apps/payments/models/api_keys.py,sha256=6V9hOSPQT27qEWaygWrtmQPqCeZpgHZv1KAfsgXnS-Q,2476
285
- django_cfg/apps/payments/models/balance.py,sha256=wn63yjOVIbLbirAjKLAZm03ooXeOe3yOqDGVr_hiLZY,7026
286
- django_cfg/apps/payments/models/base.py,sha256=T8mQKFXlpLc05xZDmSdOfrOAc8s_mGnKqoSgEhaY9Kk,349
302
+ django_cfg/apps/payments/models/__init__.py,sha256=iYRu56c8oZCG5n52aWJqsKEKX44k0_2BiSFkN8jZ46U,1444
303
+ django_cfg/apps/payments/models/api_keys.py,sha256=HCtZuvpW7cYRpsSXkS3U3lk_smMQpgLRf7PHaM58MkQ,2484
304
+ django_cfg/apps/payments/models/balance.py,sha256=F7unVOEVZMUGNvPkvGTWsytxfvQKdV8eQSnEBPZkuDc,7052
305
+ django_cfg/apps/payments/models/base.py,sha256=iypC2MCPrASunrJepuY0y7fASVLDMDSqOwAWp-ovTDk,793
287
306
  django_cfg/apps/payments/models/currencies.py,sha256=lz6axNRmfoQa3od-EV78vbZQv3vh2FznxHzGBi20qIU,4106
288
- django_cfg/apps/payments/models/events.py,sha256=xIrAj8nyBq0NTc0YA-SolJSxG9Mr3ut4gyARsY-QMRM,2364
289
- django_cfg/apps/payments/models/payments.py,sha256=7CLgRFWPg8K5ajjXjG5_xy8wpACzTAMxOzOufbyIaAI,9540
290
- django_cfg/apps/payments/models/subscriptions.py,sha256=RuINi31j2DIhI_V_-HNvhdq8qa-woAGrUDeWOJOq3so,8167
307
+ django_cfg/apps/payments/models/events.py,sha256=flKdY3SRAx5UZyHw6wLh5TflHTyy2lQpdi5aa1NqJ1o,2372
308
+ django_cfg/apps/payments/models/payments.py,sha256=jzzugUX71puUfmcOr4qqg0NCZE6LaZa6t7STI-jzzZE,13945
309
+ django_cfg/apps/payments/models/subscriptions.py,sha256=femsIzWxSZZdu1Ee_MgCYnnpMnXshejwb1_JPhbo8k8,8193
291
310
  django_cfg/apps/payments/models/tariffs.py,sha256=nqM3RPtu4itAHRvT6jAgZgQEdEIN1KgKnEljkaHGFDc,2749
292
311
  django_cfg/apps/payments/serializers/__init__.py,sha256=4l7Tu1NXztXtqceVbC3OxtWJir4n3_dFpVEgRgQ9J4k,1416
293
312
  django_cfg/apps/payments/serializers/api_keys.py,sha256=5qG3PEwIVfoNSC6XpbOBbC3l4umgld3kPJC5l_vsYV0,1396
@@ -296,25 +315,58 @@ django_cfg/apps/payments/serializers/currencies.py,sha256=SskSl3rjZBxxLnY_zsaJiF
296
315
  django_cfg/apps/payments/serializers/payments.py,sha256=BDhcD9DCea50Cz1PumLNVntgH40dOR55NzCXv4I0YOQ,2258
297
316
  django_cfg/apps/payments/serializers/subscriptions.py,sha256=16OileC0yxM90ERK3Uo5Jqe9DeyNf3tBwK-ZqDtEbPw,2795
298
317
  django_cfg/apps/payments/serializers/tariffs.py,sha256=54N5tFpc5NBIMyXuN7Re6pDNoQLJc2yZBIb5uVRhn-I,1698
299
- django_cfg/apps/payments/services/__init__.py,sha256=GigyUFB3pT1qpN1uV1-LZUXVQFPMNkbjh6i6sV4iZsw,280
300
- django_cfg/apps/payments/services/base.py,sha256=2xX42CnTDObNNc0atXwEWpozI1fAbh7Y4uOgBAoHGzY,2302
301
- django_cfg/apps/payments/services/nowpayments.py,sha256=K31_KFM9KvkKidbbgYBgnIwg7I49dFBTSkD9upyYkO8,2878
302
- django_cfg/apps/payments/services/providers.py,sha256=7t335fOtBwwqMa_HLpvuJ-dW3Zyi8AjkKApSurhidTY,2337
303
- django_cfg/apps/payments/services/redis_service.py,sha256=xarjV3ndkuXXTHy0N9yuLfEvcg0it4pNNQ-yghNwIqo,8193
318
+ django_cfg/apps/payments/services/__init__.py,sha256=LaY6OcRe1A7ehZwfuFKp1rLNz-Un3BpEahsNnDVHKAw,1941
319
+ django_cfg/apps/payments/services/internal_types.py,sha256=N6Qx_XBJYKI2isKZb5_09T8Pz1arH2jSYwqgdK0H6CU,8828
320
+ django_cfg/apps/payments/services/billing/__init__.py,sha256=YHdL1RWo-VAotOdZaykArOd0NTGI0fuQ0B7nBRKn6Lg,149
321
+ django_cfg/apps/payments/services/cache/__init__.py,sha256=CA8cUptfUD5LwbAB9kPMDofdkJBD_o7Z3HHG4vXMoyA,318
322
+ django_cfg/apps/payments/services/cache/base.py,sha256=McWSpr6eNEXbhG2PBkQd_YkL-he-scoWNUVmKI4FohY,696
323
+ django_cfg/apps/payments/services/cache/simple_cache.py,sha256=N2i0yGOR5Y1SPl2hqsXcGyehCpwXdN9SQVrphO1yat0,4508
324
+ django_cfg/apps/payments/services/core/__init__.py,sha256=I7x8Ryz4htQ1LwwtWZRK-MeI_SYboCQ7cKtTxmoqfpk,382
325
+ django_cfg/apps/payments/services/core/balance_service.py,sha256=RvLuIo87U2C24s2Yuci_oftXabLTDzfXKllmVzgDnpw,16262
326
+ django_cfg/apps/payments/services/core/fallback_service.py,sha256=0kJfLFQXS2WFkiu5awc4kwCN-_Pst_0AU21gIXBbp38,16370
327
+ django_cfg/apps/payments/services/core/payment_service.py,sha256=a38zgsW_4qmKmScUdg-gTl991Pr8wUv8Vcm40_lN6VY,21879
328
+ django_cfg/apps/payments/services/core/subscription_service.py,sha256=5_MJTdSU7zgFvQA7-BPkLjqyTJvN_pNgEkacqPztTcU,22632
329
+ django_cfg/apps/payments/services/middleware/__init__.py,sha256=SAiK2KW4aFVdfjlNrV3Bv8F0qg_epqwbZXOV0WoS6yA,154
330
+ django_cfg/apps/payments/services/monitoring/__init__.py,sha256=cgN3Soqj_4sLe1j93QFu9P5ZzAw2V12zqE7wii0FYQs,452
331
+ django_cfg/apps/payments/services/monitoring/api_schemas.py,sha256=90VVZGqh3JxXWHeCSaMuzh-72XQlslNv_boihnhxfPc,8706
332
+ django_cfg/apps/payments/services/monitoring/provider_health.py,sha256=uiXyKcDK42b3l19rcN-jy-JUJi6vBqptj5eSVkcWDwY,14169
333
+ django_cfg/apps/payments/services/providers/__init__.py,sha256=RbfjUc0pJzJkfIP0mnTWOtTKEyQ_YSJSZG_8AINaEEw,550
334
+ django_cfg/apps/payments/services/providers/base.py,sha256=kjWPb7EutZHaByDW3py8srAcnvZdE4oqj6Tp9xS9ADk,3807
335
+ django_cfg/apps/payments/services/providers/cryptapi.py,sha256=e1ZmglhQ_IKG8fASKBHcCQUs8BbLvUfI9RXdskWXG5U,10668
336
+ django_cfg/apps/payments/services/providers/cryptomus.py,sha256=RKJHpkUnm3YrYc_XH-Eh-UrYwMcer-5XhK_T5Ak8NjE,12436
337
+ django_cfg/apps/payments/services/providers/nowpayments.py,sha256=xsylxVaN5L5tYfv1j_OJzX_PSEBEq9pmBeRFG80rcCA,11490
338
+ django_cfg/apps/payments/services/providers/registry.py,sha256=cOOMXLMSK5JWSXPm2j1Ukmw7-qzwpmEUyGfBFTTltK4,3888
339
+ django_cfg/apps/payments/services/security/__init__.py,sha256=4aRxCQRr-lZ4XkU-6-8oL33DOpKmVboGZUfY6NdivEQ,763
340
+ django_cfg/apps/payments/services/security/error_handler.py,sha256=zM552XAaBnqo1LRI7JwusCK99zzLY5WCY3o87Jc1hZ4,23194
341
+ django_cfg/apps/payments/services/security/payment_notifications.py,sha256=MIvUsW2tc8S8IzsCkah9RRJCNMARX-NYtzMOgvUammg,14289
342
+ django_cfg/apps/payments/services/security/webhook_validator.py,sha256=LxtrTEKiRbdCObPHKPqhm7y3m-Mk_UcAKZjXayWDU88,17533
343
+ django_cfg/apps/payments/services/validators/__init__.py,sha256=_NgbT79oslNvBPPYRpSFnPkvnZuQ48Kk1dzSZIE2ZAU,140
344
+ django_cfg/apps/payments/signals/__init__.py,sha256=L3danrGQ-9tEfaAbkXOILPb2Bw_T4XRN4PodjMl1hvk,342
345
+ django_cfg/apps/payments/signals/api_key_signals.py,sha256=MDkB9A1VxfiTouhpIe_uMoppbmQq0t-YBL_llk45Vcc,5995
346
+ django_cfg/apps/payments/signals/payment_signals.py,sha256=Bo9nDZmn4TV04otp_-pRfwCTsstKUHHzkU5TeVmwKf8,4852
347
+ django_cfg/apps/payments/signals/subscription_signals.py,sha256=FDXlR02fpS6ILzMJQjoK4Ln1v7Kb8vp_Ej9v_lqnVE0,7492
348
+ django_cfg/apps/payments/tasks/__init__.py,sha256=0lgH_ZBdEYzy_-pgYN678oppiS7CU_Ni02E9lV_Cy4Y,272
349
+ django_cfg/apps/payments/tasks/webhook_processing.py,sha256=OrE5br3m6ECYzk9qLBo4gI0pEI6dO5y1tZMgae8siPQ,5553
350
+ django_cfg/apps/payments/utils/__init__.py,sha256=CyoHao3WlDPIyRNRChJggsazfRFEIhSC7HUB33GlAnQ,1178
351
+ django_cfg/apps/payments/utils/billing_utils.py,sha256=Kp-DX-RrGYEMvnBbg2oPJ7EjqAzhp4qsVblGLpgcb-k,11708
352
+ django_cfg/apps/payments/utils/config_utils.py,sha256=kuPT-CKPcoQRwPW_oQ0_CzKxP71JG1FP70Jg59PHrAw,8615
353
+ django_cfg/apps/payments/utils/middleware_utils.py,sha256=MTS9MY_8-VqpBVv8uQYH89rfeG8dTnUru38vVbbE-1o,6682
354
+ django_cfg/apps/payments/utils/validation_utils.py,sha256=xSxpjz5aAajSOIxDhaXHdB-Uf98MOi3uDKVx0jHmREo,2704
304
355
  django_cfg/apps/payments/views/__init__.py,sha256=00HRO1sDErjnFq2dedFAjBIyIhZZyZmv4DK98lHmx2Q,1613
305
356
  django_cfg/apps/payments/views/api_key_views.py,sha256=fG68roqOF9FShde68Qp_CBf0KJuf1chwK41RU0VqUJk,5542
306
357
  django_cfg/apps/payments/views/balance_views.py,sha256=rA_OJFizP_UBBr8OdWLQZQ51qlPFYoeJCYUzNXSw4S0,2509
307
358
  django_cfg/apps/payments/views/currency_views.py,sha256=B1rjOKDV3KEYRQI6NuPEyEGF8VNumaraoZdI8Qqdu6s,4096
308
- django_cfg/apps/payments/views/payment_views.py,sha256=zfdHiHJhGby6KHpTe5S9UVeC-pFrJD-RTMhHhkSCl5s,4122
359
+ django_cfg/apps/payments/views/payment_views.py,sha256=5UH8La8BM7f8SJmc4aq5yAZn4oxnF2JtVV2qiMlVchM,5746
309
360
  django_cfg/apps/payments/views/subscription_views.py,sha256=WqBDsaPUQGP6ZCmbheIdRupy-qESPpdj8IgKkaLp3V8,5005
310
361
  django_cfg/apps/payments/views/tariff_views.py,sha256=i0uOg6SBk_1sct2M2iwKMw-5YHMr5mhVvm_ljpFRwPQ,4907
362
+ django_cfg/apps/payments/views/webhook_views.py,sha256=s6CtRIW8leGDcaerMGjuH5ohV3dE0YMPcllmcRSv_p8,9616
311
363
  django_cfg/apps/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
312
364
  django_cfg/apps/support/admin.py,sha256=-fcegtqoCcwPiBXwyNLMftcYCTTbTRRBpWItyeNNkDY,8827
313
365
  django_cfg/apps/support/admin_filters.py,sha256=ZpKtetRxppRAMwIr-pwDbXAyh7qouDfTCEZoo1YJfFs,2179
314
366
  django_cfg/apps/support/apps.py,sha256=t-MzsKjXx6ZXACkG72Wa8GSmRYOERxfhrZUwUwjqCak,304
315
367
  django_cfg/apps/support/models.py,sha256=a_m4CWpfR7A2KlVRUYOGPdpNyNPJflD3Mq7EkiwzICA,2465
316
368
  django_cfg/apps/support/serializers.py,sha256=N-PP8d1H00mHSWT6x5DwDYrJoR3PS3AKrUW80L4lncs,1385
317
- django_cfg/apps/support/signals.py,sha256=z465Nr7xin7S82YA7v-E5bNlimpv3ewN7kLoJzlGxtQ,2816
369
+ django_cfg/apps/support/signals.py,sha256=W7lA3o1eoAwZQd92fX0GaiIXp9ptQRYtwn1Siz1FV9g,3706
318
370
  django_cfg/apps/support/urls.py,sha256=t3r4wGRUqQS-BDCQgSXwSF9pbucyvr7lo7_pJ1uZ52Q,899
319
371
  django_cfg/apps/support/admin/__init__.py,sha256=vVoUWfKj6qBHhwr6zG2ZH8ZpUegYNJvzuAxdFoHEo_0,153
320
372
  django_cfg/apps/support/admin/filters.py,sha256=ZpKtetRxppRAMwIr-pwDbXAyh7qouDfTCEZoo1YJfFs,2179
@@ -326,7 +378,7 @@ django_cfg/apps/support/migrations/0001_initial.py,sha256=AUUXqMiRbv_bRhogBWKWdr
326
378
  django_cfg/apps/support/migrations/0002_alter_message_ticket.py,sha256=MxdjTW7hJ1B0yQloKR3sVOgujOzSA6eZp5YCmCuXht0,571
327
379
  django_cfg/apps/support/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
328
380
  django_cfg/apps/support/templates/support/chat/access_denied.html,sha256=QdVXR-61aUHmh9Vlag_zXGcS_BG7a807LesIbduqnag,1094
329
- django_cfg/apps/support/templates/support/chat/ticket_chat.html,sha256=b2UvCQp122-CRl567J_sLCvcp_zZi21VG4DOy7dmjM8,14471
381
+ django_cfg/apps/support/templates/support/chat/ticket_chat.html,sha256=Xz5Z0ADP9aZpiE_cJdcRP9UJpJhY32h1h1sLfI94zgU,14483
330
382
  django_cfg/apps/support/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
383
  django_cfg/apps/support/utils/support_email_service.py,sha256=0l4dXqAG6oN2UR7W3JzuRhlomaWa41IT7ceVcanluKs,5570
332
384
  django_cfg/apps/support/views/__init__.py,sha256=E-Iqiy888SncfBTiSyXyGCjaNrMa5Klvapzb3ItYPXc,448
@@ -357,15 +409,15 @@ django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html,sha256=Sxb7
357
409
  django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html,sha256=DeJjj3dxYcBEAj8Hv4Ii4koEMaNRVHta9_R25qZyK4w,6317
358
410
  django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html,sha256=Yd6SPgdQX1p_6miitu3nZHjdZOtbsXMhUP4DnXSntPs,1826
359
411
  django_cfg/apps/tasks/templates/tasks/components/workers_tab.html,sha256=4Ud4QpG6bnxBsrBDKGXdy4GcIne43wC13Ch1szZzrbo,1580
360
- django_cfg/cli/README.md,sha256=SgpceKVifp5AgvEeusOfRGRXe823jh1goHqOY0YQEGM,11661
412
+ django_cfg/cli/README.md,sha256=mbT1vqbeY_dYOjQGuZ_rjtMqUm-l76HH6oWQRq9ETmc,11665
361
413
  django_cfg/cli/__init__.py,sha256=i3ksFngCqZCBvaimQcBD1P2_gr5PiM--4efLScCjvvU,152
362
- django_cfg/cli/main.py,sha256=6PfG3ec2AmPHLmUGYc472CId1gs8cRKYrHcvd3ECPxU,998
363
- django_cfg/cli/utils.py,sha256=7Fr1abg5NOHcvp64WpL2HUdFmEMvwGLeQQi-Ysg1Cb4,5765
414
+ django_cfg/cli/main.py,sha256=ZxpP6YLhCFlF9tYSCwY4gkJ8thzQFrhsQAn0_C_7ehU,1004
415
+ django_cfg/cli/utils.py,sha256=YGXWw7MjX-zAUDKrbJ4q_sxH54at2Oqhrcm7udVozU4,5810
364
416
  django_cfg/cli/commands/__init__.py,sha256=EKLXDAx-QttnGmdjsmVANAfhxWplxl2V_2I0SZaJOoI,98
365
- django_cfg/cli/commands/create_project.py,sha256=iuf965j8Yg7zxHcPb0GtFHEj73CYXC45ZJRmd6RbA9E,21025
366
- django_cfg/cli/commands/info.py,sha256=o4S1xPJSHv2oEVqmH0X9RTF5f-8Wy9579yHkyd_PC3E,4923
417
+ django_cfg/cli/commands/create_project.py,sha256=8Jg4rfnGCINTd6ebBqx-WXG57AIB5C2yY5D3JQAtpyI,21029
418
+ django_cfg/cli/commands/info.py,sha256=AaLbFFOjHwqiIzZChPxfD3ASZZs1IAD-0RJQaLo2PC0,4925
367
419
  django_cfg/core/__init__.py,sha256=eVK57qFOok9kTeHoNEMQ1BplkUOaQ7NB9kP9eQK1vg0,358
368
- django_cfg/core/config.py,sha256=TS78BFOtzaErZMdEQgZvY2cnMq5PGaC74rOR8dttRuY,28404
420
+ django_cfg/core/config.py,sha256=y5die7kK06KcRk1VuxU8MFe16c6yAS_MfEAMqLePApI,28938
369
421
  django_cfg/core/environment.py,sha256=MAoEPqIPsLVhSANT2Bz4nnus2wmbMW0RCOQxhQfDrDc,9106
370
422
  django_cfg/core/exceptions.py,sha256=RTQEoU3PfR8lqqNNv5ayd_HY2yJLs3eioqUy8VM6AG4,10378
371
423
  django_cfg/core/generation.py,sha256=Oa9bnEPsxwEaa0RP71zNl_z2p9NNljHnoCTeRu72X-0,25421
@@ -414,13 +466,14 @@ django_cfg/models/jwt.py,sha256=3R_dpLmVZIcH4zdtwA4qKnuCB8RZQACrgsbbgWY2q4c,9025
414
466
  django_cfg/models/limits.py,sha256=nUfvyPykwKR38ZOlIFqlNGRmfV8RO5hiUrhDH6FCHJw,7449
415
467
  django_cfg/models/logging.py,sha256=4vZF-G9rPmXMxxtUx_ad7Esvgbe8a_5Dl692Yg0fL4A,10636
416
468
  django_cfg/models/ngrok.py,sha256=MVgcKWx0DRSW0QcwhiSx2vVwTSG49vbVrzPkZqDK-zw,3575
417
- django_cfg/models/revolution.py,sha256=7Rj-EYvNK4EEttMqtE95ejLWzvucz8rFelWNBNTKk3s,8130
469
+ django_cfg/models/payments.py,sha256=kizcd5qztKtFdo1F1VYDa6nlvrh_SRhlVaPbF9D95PI,16435
470
+ django_cfg/models/revolution.py,sha256=16fQ09iovrmlepNcTr2J0hZ-ShdMnMSQ2rTXa60yrus,8134
418
471
  django_cfg/models/security.py,sha256=Xv19ZVOIenB_-f0wB6fm-Ap4j9kA43bSFaT2XenpSqc,4685
419
472
  django_cfg/models/services.py,sha256=fj9JjrJFrlL4DMnMbx_D8JiiZpz4E5uBqmhquAxau7c,13159
420
- django_cfg/models/tasks.py,sha256=2T3apcUFf8zevYJmapbFrh6bWv5PTJPeXR6Bc5vlj4c,15524
473
+ django_cfg/models/tasks.py,sha256=zFvQaikXi-W-iN7eqR6ZGNiKJnPgOL3yl9RRis-5qZs,17160
421
474
  django_cfg/modules/__init__.py,sha256=Ip9WMpzImEwIAywpFwU056_v0O9oIGG7nCT1YSArxkw,316
422
- django_cfg/modules/base.py,sha256=_agj4rt9CrEfrDVL29A1vgFYIwZXXg6Wf7aCNFFdXo0,5732
423
- django_cfg/modules/django_email.py,sha256=2XXlIKzD6Jao3CT4_zIE2eaM9Cc9ROA1tjp2bJ9z5Lo,16592
475
+ django_cfg/modules/base.py,sha256=A7fAp3eEBbs9zxVq96k9FotWnqHqZA5b-kH9-hOJ1zo,5913
476
+ django_cfg/modules/django_email.py,sha256=Kk2B1Y73xlbpNKCDkU2uBT01iVANjKpmVlKbRScVCs4,18059
424
477
  django_cfg/modules/django_health.py,sha256=7QzuQ6WyjWYj6lecd4auwRvEyrMUL7N6hiAp-tLyoY4,8923
425
478
  django_cfg/modules/django_logger.py,sha256=3oP9jev0lOcFUJ1tYcpbFnK524zIGA2xIOrrAiTwpb8,6331
426
479
  django_cfg/modules/django_ngrok.py,sha256=LjlAIJprbFhFYwDG93acas8XaB6iFQGu4fWvZiDNhyQ,10482
@@ -428,11 +481,19 @@ django_cfg/modules/django_tasks.py,sha256=SBas2juL6RfDL7ttm4xAxJ7bvS052WmUzixNHP
428
481
  django_cfg/modules/django_telegram.py,sha256=qz3EOJnCR_YTJVIu2-Iq8--cla6mU-WPohquQ26eHDQ,16367
429
482
  django_cfg/modules/dramatiq_setup.py,sha256=Jke4aO_L1t6F3OAc4pl12zppKzL0gb1p6ilfQ3zUIZ8,454
430
483
  django_cfg/modules/logger.py,sha256=4_zeasNehr8LGz8r_ckv15-fQS63zCodiqD4CYIEyFI,10546
431
- django_cfg/modules/django_currency/README.md,sha256=Ox3jgRtsbOIaMuYDkIhrs9ijLGLbn-2R7mD9n2tjAVE,8512
432
- django_cfg/modules/django_currency/__init__.py,sha256=SLzzYkkqoz9EsspkzEK0yZ4_Q3JKmb3e_c1GfdYF3GY,1294
433
- django_cfg/modules/django_currency/cache.py,sha256=dlrIZN4_436DwTeChbuGOBEUHBobR3dFzCR0J32QN1E,15348
434
- django_cfg/modules/django_currency/converter.py,sha256=wC7N_vaxBrUY9jNQQHEsOfAIIvogM0HrPc0UuKOGf9g,11771
435
- django_cfg/modules/django_currency/service.py,sha256=bfUTbE4B2KoOcn77uF8EkXbvgEhsIW8opzYpT1ufC3U,9016
484
+ django_cfg/modules/django_currency/README.md,sha256=4R7KtF-rhR6yRg5jbsXwOVXMZNGEpOyW4N3WGN89W7A,4670
485
+ django_cfg/modules/django_currency/__init__.py,sha256=XDuqhE_HFENq0MmiJtLqsWHDqu_Qyphxc54D_-_LGXE,2306
486
+ django_cfg/modules/django_currency/clients/__init__.py,sha256=8wGiLU6xh1h0Z9eV7PHsAu0QS-jel8wmTauKW9Af3dI,220
487
+ django_cfg/modules/django_currency/clients/coingecko_client.py,sha256=w2GiDuKHItBdR69-ArHEJCD6K-OWwHFft9ZAZIbA5Gs,9396
488
+ django_cfg/modules/django_currency/clients/yfinance_client.py,sha256=98nVmwGL4-eOKZ1OLuuldu7DZK6tOcveFIE35zmtHV0,9671
489
+ django_cfg/modules/django_currency/core/__init__.py,sha256=rDsAAMMCozbP8C7fGK18l1_80Y6vkREu4kudTrRL_JU,729
490
+ django_cfg/modules/django_currency/core/converter.py,sha256=VUnfzuIei3hiKvc6EC4ya0aLW5tYhnex4yAYStNTv5A,5676
491
+ django_cfg/modules/django_currency/core/exceptions.py,sha256=Mx2zrqwtrw1LgpcFVAU7ofOfffSNsVjEGodrwbfPAtE,495
492
+ django_cfg/modules/django_currency/core/models.py,sha256=He50J10Z5kuAFAh-ptWsCKQ87hRsYHX2EhFdLNoYphs,1873
493
+ django_cfg/modules/django_currency/database/__init__.py,sha256=huog0oyosv8yif0yn94Ctt2Wad86ajmQyqsSl2EVQoI,536
494
+ django_cfg/modules/django_currency/database/database_loader.py,sha256=gNdtbW4pfZmHuURmSXWbHCIkY07yLRnAwqj7lQ6Ztp0,18925
495
+ django_cfg/modules/django_currency/utils/__init__.py,sha256=6nD3BGQrBn94ZqCCBG8X78KPuTmberoOauwNOUi3SUk,130
496
+ django_cfg/modules/django_currency/utils/cache.py,sha256=lkbkjtBpok-6UljoL8u3yWgyIaaayujlaPXiCamxGHE,2557
436
497
  django_cfg/modules/django_import_export/README.md,sha256=OuGT5gv0hwt3dcbMLfZUfostZnXALeN4OifgRvv--4k,2453
437
498
  django_cfg/modules/django_import_export/__init__.py,sha256=oJ9BDGdbQ_B8E2bGXxSQyRSzr8212rHGtgSLf9v6cAI,1908
438
499
  django_cfg/modules/django_llm/README.md,sha256=31uQG9_z-HroEUevtOPJbZ86H9yiwzZJs0omf-Kwh-o,9374
@@ -461,7 +522,7 @@ django_cfg/modules/django_twilio/templates/guide.md,sha256=nZfwx-sgWyK5NApm93zOe
461
522
  django_cfg/modules/django_twilio/templates/sendgrid_otp_email.html,sha256=sXR6_D9hmOFfk9CrfPizpLddVhkRirBWpZd_ioEsxVk,6671
462
523
  django_cfg/modules/django_twilio/templates/sendgrid_test_data.json,sha256=fh1VyuSiDELHsS_CIz9gp7tlsMAEjaDOoqbAPSZ3yyo,339
463
524
  django_cfg/modules/django_unfold/__init__.py,sha256=Z91x1iGmkzlRbEb2L9OCFmYDKNAV9C4G3i15j5S0esc,1898
464
- django_cfg/modules/django_unfold/dashboard.py,sha256=DHQruZRtSLD786v2R3le4mmw_5YG5rI32ZL4qjBoAkQ,13426
525
+ django_cfg/modules/django_unfold/dashboard.py,sha256=UITRlmqAGpptKGFMdTwh9rcIZqKyu9V1TkyKkGNHlKo,14892
465
526
  django_cfg/modules/django_unfold/models.py,sha256=bY6QSSaH_-r9vOTkSQjxeIkl5RaED7XkxXkT8-W5stk,4014
466
527
  django_cfg/modules/django_unfold/system_monitor.py,sha256=cznZqldRJqiSLSJbs4U7R2rX8ClzoIpqdfXdXqI2iQw,6955
467
528
  django_cfg/modules/django_unfold/tailwind.py,sha256=X9o1K3QL0VwUISgJ26sLb6zkdK-00qiDuekqTw-fydc,10846
@@ -487,7 +548,7 @@ django_cfg/modules/django_unfold/models/dropdown.py,sha256=bbRYl0iuzBrwgmqUMTDw9
487
548
  django_cfg/modules/django_unfold/models/navigation.py,sha256=xrP2szoe1MSiTVAfc0Hd2dS32HhCp8XHBJinF5yc_U8,2575
488
549
  django_cfg/modules/django_unfold/models/tabs.py,sha256=AHV7lmaRTjOluf9mgZvXISG5D7Re1QPdU2v-iYoCaIQ,848
489
550
  django_cfg/registry/__init__.py,sha256=q6z9hGcBdtzbVLeDeQtP-A31z-1V7myZqjlZyTs1uo0,540
490
- django_cfg/registry/core.py,sha256=FGe86oEGm66fv9ypAEIFXP_XkFog1EaE5vYggALgQ_4,2703
551
+ django_cfg/registry/core.py,sha256=4zvppBabwUzHcBviFJcSQ8PH8kG5ypCUlavpFuhw2nw,3378
491
552
  django_cfg/registry/exceptions.py,sha256=b4pIakeRxhT1-ST3lbAnmAQaASRBARCoah_w6vb3VF0,399
492
553
  django_cfg/registry/modules.py,sha256=e8lCG5C-yhRgvs8El_-6Xbdrte-enZF_Xb3B4opO-Hs,1135
493
554
  django_cfg/registry/services.py,sha256=wpGSgSCUr4e9pUh5-rwN1AyPLGazK6KD-Ky4vz-elIw,1219
@@ -495,6 +556,8 @@ django_cfg/registry/third_party.py,sha256=3VPyh5XkHJr6uDNbpv04HutVSumoyo5jgB-zyq
495
556
  django_cfg/routing/__init__.py,sha256=zOg9yh2lP2NaxlnZpVH8IogQBHGlcky_C-n0VWD9LIc,277
496
557
  django_cfg/routing/callbacks.py,sha256=zMWD0AEE4AvczdBN-VDjgczai683ZSEqws0pnCVQ3FI,5994
497
558
  django_cfg/routing/routers.py,sha256=J89kcIArV2lSl3rzh61Rya0h-I5Zq7-QAat6PvmKVFs,1582
559
+ django_cfg/template_archive/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
560
+ django_cfg/template_archive/django_sample.zip,sha256=PXVnqBXeklWhzlYTmaJD4SKAVGL5Xv-XRJcRKMia_mo,1743331
498
561
  django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
499
562
  django_cfg/templates/admin/index.html,sha256=kehH-W9fTTUo36G9X82vM7L3Mr_lTiMkfp0qxPJAaSg,1247
500
563
  django_cfg/templates/admin/components/action_grid.html,sha256=inffy-bMcuecSwgnR3HIEGE-r9wG_BgPttkvHqqFih8,3068
@@ -544,8 +607,8 @@ django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVka
544
607
  django_cfg/utils/smart_defaults.py,sha256=MxbUZwn_xbh48li7uLI6W4D9WCD2P2WO48dv85Fra5E,23057
545
608
  django_cfg/utils/toolkit.py,sha256=Td8_iXNaftonF_xdZP4Y3uO65nuA_4_zditn5Q_Pfcw,23310
546
609
  django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
547
- django_cfg-1.2.22.dist-info/METADATA,sha256=VGD-7Y0LSzV1UdNyMYvkZ2w8WIO14V_uk1T0Xe0WbIg,38434
548
- django_cfg-1.2.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
549
- django_cfg-1.2.22.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
550
- django_cfg-1.2.22.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
551
- django_cfg-1.2.22.dist-info/RECORD,,
610
+ django_cfg-1.2.25.dist-info/METADATA,sha256=BdTGMuybzONnI4wgasiDKrh2rLicIVzeI9Rjira-_zg,38867
611
+ django_cfg-1.2.25.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
612
+ django_cfg-1.2.25.dist-info/entry_points.txt,sha256=Ucmde4Z2wEzgb4AggxxZ0zaYDb9HpyE5blM3uJ0_VNg,56
613
+ django_cfg-1.2.25.dist-info/licenses/LICENSE,sha256=xHuytiUkSZCRG3N11nk1X6q1_EGQtv6aL5O9cqNRhKE,1071
614
+ django_cfg-1.2.25.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- """
2
- Examples for Django Orchestrator.
3
- """
@@ -1,161 +0,0 @@
1
- """
2
- Simple example demonstrating Django Orchestrator usage.
3
- """
4
-
5
- import asyncio
6
- from dataclasses import dataclass
7
- from pydantic import BaseModel
8
- from django.contrib.auth.models import User
9
-
10
- from django_cfg.modules.django_orchestrator import DjangoAgent, SimpleOrchestrator, DjangoDeps, RunContext
11
-
12
-
13
- # Define output model
14
- class GreetingResult(BaseModel):
15
- """Result from greeting agent."""
16
- greeting: str
17
- personalized: bool
18
- user_info: str
19
-
20
-
21
- # Create agent
22
- greeting_agent = DjangoAgent[DjangoDeps, GreetingResult](
23
- name="greeting_agent",
24
- deps_type=DjangoDeps,
25
- output_type=GreetingResult,
26
- instructions="Generate personalized greetings for users"
27
- )
28
-
29
-
30
- # Add tools to agent
31
- @greeting_agent.tool
32
- async def get_user_info(ctx: RunContext[DjangoDeps]) -> str:
33
- """Get user information for personalization."""
34
- user = ctx.deps.user
35
- return f"User: {user.username}, Email: {user.email}, Joined: {user.date_joined}"
36
-
37
-
38
- @greeting_agent.tool
39
- async def get_time_of_day(ctx: RunContext[DjangoDeps]) -> str:
40
- """Get current time of day for greeting."""
41
- from datetime import datetime
42
- hour = datetime.now().hour
43
-
44
- if hour < 12:
45
- return "morning"
46
- elif hour < 17:
47
- return "afternoon"
48
- else:
49
- return "evening"
50
-
51
-
52
- async def simple_example():
53
- """Run simple orchestrator example."""
54
- print("šŸ¤– Django Orchestrator Simple Example")
55
- print("=" * 50)
56
-
57
- # Create test user (in real app, get from request)
58
- try:
59
- user = await User.objects.aget(username='testuser')
60
- except User.DoesNotExist:
61
- user = await User.objects.acreate_user(
62
- username='testuser',
63
- email='test@example.com',
64
- first_name='Test',
65
- last_name='User'
66
- )
67
-
68
- # Create dependencies
69
- deps = DjangoDeps(user=user)
70
-
71
- # Create orchestrator
72
- orchestrator = SimpleOrchestrator()
73
- orchestrator.register_agent(greeting_agent)
74
-
75
- # Execute single agent
76
- print("\n1. Single Agent Execution:")
77
- results = await orchestrator.execute(
78
- pattern="sequential",
79
- agents=["greeting_agent"],
80
- prompt="Create a personalized greeting",
81
- deps=deps
82
- )
83
-
84
- result = results[0]
85
- print(f"āœ… Agent: {result.agent_name}")
86
- print(f"āœ… Output: {result.output}")
87
- print(f"āœ… Execution Time: {result.execution_time:.2f}s")
88
- print(f"āœ… Tokens Used: {result.tokens_used}")
89
-
90
- # Get metrics
91
- print("\n2. Agent Metrics:")
92
- metrics = greeting_agent.get_metrics()
93
- for key, value in metrics.items():
94
- print(f"šŸ“Š {key}: {value}")
95
-
96
- # Get orchestrator metrics
97
- print("\n3. Orchestrator Metrics:")
98
- orch_metrics = orchestrator.get_metrics()
99
- for key, value in orch_metrics.items():
100
- print(f"šŸ“ˆ {key}: {value}")
101
-
102
-
103
- async def multi_agent_example():
104
- """Run multi-agent orchestrator example."""
105
- print("\nšŸ¤– Multi-Agent Example")
106
- print("=" * 30)
107
-
108
- # Create additional agents
109
- analyzer_agent = DjangoAgent[DjangoDeps, BaseModel](
110
- name="content_analyzer",
111
- deps_type=DjangoDeps,
112
- output_type=BaseModel,
113
- instructions="Analyze content sentiment and topics"
114
- )
115
-
116
- formatter_agent = DjangoAgent[DjangoDeps, BaseModel](
117
- name="content_formatter",
118
- deps_type=DjangoDeps,
119
- output_type=BaseModel,
120
- instructions="Format content for display"
121
- )
122
-
123
- # Create orchestrator
124
- orchestrator = SimpleOrchestrator()
125
- orchestrator.register_agent(analyzer_agent)
126
- orchestrator.register_agent(formatter_agent)
127
-
128
- # Get user
129
- user = await User.objects.aget(username='testuser')
130
- deps = DjangoDeps(user=user)
131
-
132
- # Execute sequential workflow
133
- print("\n1. Sequential Workflow:")
134
- results = await orchestrator.execute(
135
- pattern="sequential",
136
- agents=["content_analyzer", "content_formatter"],
137
- prompt="Analyze and format this content: Hello world!",
138
- deps=deps
139
- )
140
-
141
- for i, result in enumerate(results, 1):
142
- print(f"Step {i} - {result.agent_name}: {result.success}")
143
-
144
- # Execute parallel workflow
145
- print("\n2. Parallel Workflow:")
146
- results = await orchestrator.execute(
147
- pattern="parallel",
148
- agents=["content_analyzer", "content_formatter"],
149
- prompt="Process content in parallel",
150
- deps=deps,
151
- max_concurrent=2
152
- )
153
-
154
- successful = sum(1 for r in results if r.success)
155
- print(f"āœ… {successful}/{len(results)} agents completed successfully")
156
-
157
-
158
- if __name__ == "__main__":
159
- # Run examples
160
- asyncio.run(simple_example())
161
- asyncio.run(multi_agent_example())
@@ -1,3 +0,0 @@
1
- """
2
- Examples for using the External Data system in django_cfg.apps.knowbase.
3
- """