django-cfg 1.2.23__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.
- django_cfg/__init__.py +1 -1
- django_cfg/apps/knowbase/tasks/archive_tasks.py +6 -6
- django_cfg/apps/knowbase/tasks/document_processing.py +3 -3
- django_cfg/apps/knowbase/tasks/external_data_tasks.py +2 -2
- django_cfg/apps/knowbase/tasks/maintenance.py +3 -3
- django_cfg/apps/payments/config/__init__.py +15 -37
- django_cfg/apps/payments/config/module.py +30 -122
- django_cfg/apps/payments/config/providers.py +22 -0
- django_cfg/apps/payments/config/settings.py +53 -93
- django_cfg/apps/payments/config/utils.py +10 -156
- django_cfg/apps/payments/management/__init__.py +3 -0
- django_cfg/apps/payments/management/commands/README.md +178 -0
- django_cfg/apps/payments/management/commands/__init__.py +3 -0
- django_cfg/apps/payments/management/commands/currency_stats.py +323 -0
- django_cfg/apps/payments/management/commands/populate_currencies.py +246 -0
- django_cfg/apps/payments/management/commands/update_currencies.py +336 -0
- django_cfg/apps/payments/managers/currency_manager.py +65 -14
- django_cfg/apps/payments/middleware/api_access.py +33 -0
- django_cfg/apps/payments/migrations/0001_initial.py +94 -1
- django_cfg/apps/payments/models/payments.py +110 -0
- django_cfg/apps/payments/services/__init__.py +7 -1
- django_cfg/apps/payments/services/core/balance_service.py +14 -16
- django_cfg/apps/payments/services/core/fallback_service.py +432 -0
- django_cfg/apps/payments/services/core/payment_service.py +212 -29
- django_cfg/apps/payments/services/core/subscription_service.py +15 -17
- django_cfg/apps/payments/services/internal_types.py +31 -0
- django_cfg/apps/payments/services/monitoring/__init__.py +22 -0
- django_cfg/apps/payments/services/monitoring/api_schemas.py +222 -0
- django_cfg/apps/payments/services/monitoring/provider_health.py +372 -0
- django_cfg/apps/payments/services/providers/__init__.py +3 -0
- django_cfg/apps/payments/services/providers/cryptapi.py +14 -3
- django_cfg/apps/payments/services/providers/cryptomus.py +310 -0
- django_cfg/apps/payments/services/providers/registry.py +4 -0
- django_cfg/apps/payments/services/security/__init__.py +34 -0
- django_cfg/apps/payments/services/security/error_handler.py +637 -0
- django_cfg/apps/payments/services/security/payment_notifications.py +342 -0
- django_cfg/apps/payments/services/security/webhook_validator.py +475 -0
- django_cfg/apps/payments/signals/api_key_signals.py +10 -0
- django_cfg/apps/payments/signals/payment_signals.py +3 -2
- django_cfg/apps/payments/tasks/__init__.py +12 -0
- django_cfg/apps/payments/tasks/webhook_processing.py +177 -0
- django_cfg/apps/payments/utils/__init__.py +7 -4
- django_cfg/apps/payments/utils/billing_utils.py +342 -0
- django_cfg/apps/payments/utils/config_utils.py +2 -0
- django_cfg/apps/payments/views/payment_views.py +40 -2
- django_cfg/apps/payments/views/webhook_views.py +266 -0
- django_cfg/apps/payments/viewsets.py +65 -0
- django_cfg/cli/README.md +2 -2
- django_cfg/cli/commands/create_project.py +1 -1
- django_cfg/cli/commands/info.py +1 -1
- django_cfg/cli/main.py +1 -1
- django_cfg/cli/utils.py +5 -5
- django_cfg/core/config.py +18 -4
- django_cfg/models/payments.py +546 -0
- django_cfg/models/tasks.py +51 -2
- django_cfg/modules/base.py +11 -5
- django_cfg/modules/django_currency/README.md +104 -269
- django_cfg/modules/django_currency/__init__.py +99 -41
- django_cfg/modules/django_currency/clients/__init__.py +11 -0
- django_cfg/modules/django_currency/clients/coingecko_client.py +257 -0
- django_cfg/modules/django_currency/clients/yfinance_client.py +246 -0
- django_cfg/modules/django_currency/core/__init__.py +42 -0
- django_cfg/modules/django_currency/core/converter.py +169 -0
- django_cfg/modules/django_currency/core/exceptions.py +28 -0
- django_cfg/modules/django_currency/core/models.py +54 -0
- django_cfg/modules/django_currency/database/__init__.py +25 -0
- django_cfg/modules/django_currency/database/database_loader.py +507 -0
- django_cfg/modules/django_currency/utils/__init__.py +9 -0
- django_cfg/modules/django_currency/utils/cache.py +92 -0
- django_cfg/registry/core.py +10 -0
- django_cfg/template_archive/__init__.py +0 -0
- django_cfg/template_archive/django_sample.zip +0 -0
- {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/METADATA +10 -6
- {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/RECORD +77 -51
- django_cfg/apps/agents/examples/__init__.py +0 -3
- django_cfg/apps/agents/examples/simple_example.py +0 -161
- django_cfg/apps/knowbase/examples/__init__.py +0 -3
- django_cfg/apps/knowbase/examples/external_data_usage.py +0 -191
- django_cfg/apps/knowbase/mixins/examples/vehicle_model_example.py +0 -199
- django_cfg/modules/django_currency/cache.py +0 -430
- django_cfg/modules/django_currency/converter.py +0 -324
- django_cfg/modules/django_currency/service.py +0 -277
- {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/WHEEL +0 -0
- {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/entry_points.txt +0 -0
- {django_cfg-1.2.23.dist-info → django_cfg-1.2.25.dist-info}/licenses/LICENSE +0 -0
@@ -1,12 +1,12 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: django-cfg
|
3
|
-
Version: 1.2.
|
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/
|
8
|
-
Project-URL: Issues, https://github.com/
|
9
|
-
Project-URL: Changelog, https://github.com/
|
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'
|
@@ -206,6 +209,7 @@ python manage.py runserver
|
|
206
209
|
| **🎫 Support System** | ❌ Build from scratch | ❌ Build from scratch | ❌ Build from scratch | ✅ **Enterprise ticketing** |
|
207
210
|
| **👤 User Management** | 🟡 Basic User model | 🟡 Basic auth | ❌ Manual auth | ✅ **OTP + SMS + Profiles** |
|
208
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** |
|
209
213
|
| **🔄 Background Tasks** | 🟡 Manual Celery | 🟡 Manual Celery | ❌ Manual setup | ✅ **Built-in Dramatiq** |
|
210
214
|
| **🌐 Webhook Testing** | 🟡 Manual ngrok | 🟡 Manual ngrok | 🟡 Manual ngrok | ✅ **Integrated ngrok** |
|
211
215
|
| **🚀 Production Deploy** | 🟡 Manual config | 🟡 Manual config | 🟡 Manual config | ✅ **Zero-config Docker** |
|
@@ -562,7 +566,7 @@ docker-compose up -d
|
|
562
566
|
### **🚀 Enterprise Features**
|
563
567
|
- [**Built-in Applications**](https://docs.djangocfg.com/features/built-in-apps/accounts) - User management, support, CRM
|
564
568
|
- [**Maintenance Management**](https://docs.djangocfg.com/features/built-in-apps/maintenance) - Multi-site Cloudflare maintenance
|
565
|
-
- [**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
|
566
570
|
- [**Third-party Integrations**](https://docs.djangocfg.com/features/integrations/patterns) - Dramatiq, Twilio, ngrok
|
567
571
|
|
568
572
|
### **🤖 AI & Automation**
|
@@ -1023,4 +1027,4 @@ Django-CFG is built on the shoulders of giants:
|
|
1023
1027
|
|
1024
1028
|
## 🔍 SEO Keywords
|
1025
1029
|
|
1026
|
-
**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=
|
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=
|
183
|
-
django_cfg/apps/knowbase/tasks/document_processing.py,sha256=
|
184
|
-
django_cfg/apps/knowbase/tasks/external_data_tasks.py,sha256=
|
185
|
-
django_cfg/apps/knowbase/tasks/maintenance.py,sha256=
|
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
|
@@ -271,6 +266,7 @@ django_cfg/apps/payments/__init__.py,sha256=Qb8viLJBKCclV9uuoXjxWXeDevXlbdJ76mV8
|
|
271
266
|
django_cfg/apps/payments/apps.py,sha256=FZgbLQFMeOJPs_892bM6X-3Edt3YPD2CP50HMekH7Sk,551
|
272
267
|
django_cfg/apps/payments/decorators.py,sha256=A8MsH7hzw8i7Cl3Eh5Lcqd9Dbn_nubbb6BAI3eZMEgk,10960
|
273
268
|
django_cfg/apps/payments/urls.py,sha256=8Tr5Sr3FcTgUB4PRYYlb8MOkugAPgKT46Jd0uVyNruk,3473
|
269
|
+
django_cfg/apps/payments/viewsets.py,sha256=QaUXHUbiw4z0oc2JGpJLkTpLIeP6gC2Q7BNcZ_sTBeg,2175
|
274
270
|
django_cfg/apps/payments/admin/__init__.py,sha256=BUTbE4RfbqX3EBF-9oscrh7wQ2tuwCqofGYqlCz4QM4,666
|
275
271
|
django_cfg/apps/payments/admin/api_keys_admin.py,sha256=nMghMkKcDYvjZ4POVwpS59E6Dc7IVP9dHv-1OltpEes,11436
|
276
272
|
django_cfg/apps/payments/admin/balance_admin.py,sha256=Dwap1VZGwNJ4ZbELMDbiVIxQPmI80MWnsTudyZOvsxo,15386
|
@@ -279,23 +275,29 @@ django_cfg/apps/payments/admin/filters.py,sha256=MCYFqs1t3XL0U4WZv4ONUbwqv0vLOo7
|
|
279
275
|
django_cfg/apps/payments/admin/payments_admin.py,sha256=fYKiTgEn1mHNZ2bEamTdf0alyZXYi_GgzjuFB81Ib98,4356
|
280
276
|
django_cfg/apps/payments/admin/subscriptions_admin.py,sha256=mJRSyDd761f0LA64AnG19dzTUmiivqq9wZg4roqKYIo,6913
|
281
277
|
django_cfg/apps/payments/admin/tariffs_admin.py,sha256=6UiQyRRIKrDdmpi2IZOpDpLeJLHrebOGNc3OizlikLI,6422
|
282
|
-
django_cfg/apps/payments/config/__init__.py,sha256=
|
283
|
-
django_cfg/apps/payments/config/module.py,sha256=
|
284
|
-
django_cfg/apps/payments/config/providers.py,sha256=
|
285
|
-
django_cfg/apps/payments/config/settings.py,sha256=
|
286
|
-
django_cfg/apps/payments/config/utils.py,sha256=
|
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
|
287
289
|
django_cfg/apps/payments/managers/__init__.py,sha256=uYiETCw-K5GXQyAwpcOa2Qxzof8sbtTNc_SghyW45YU,672
|
288
290
|
django_cfg/apps/payments/managers/api_key_manager.py,sha256=xhViRKCLC_eR68hankMZQTcbzMgiRJdyr8KYKk01_dQ,928
|
289
291
|
django_cfg/apps/payments/managers/balance_manager.py,sha256=Sm_EETlHO7LtlrWIqF65vFPS4FpPSNYo5oTgQwTFAZ4,13279
|
290
|
-
django_cfg/apps/payments/managers/currency_manager.py,sha256
|
292
|
+
django_cfg/apps/payments/managers/currency_manager.py,sha256=rsmULj7UMRlZtkF1GRZwvn2ciJ5lDqBLo9NoDZmA3zM,2816
|
291
293
|
django_cfg/apps/payments/managers/payment_manager.py,sha256=udiTFIIVXsjqmlwzFwcT0ZTkYJZ9HVOSLLFTvAodY3w,1467
|
292
294
|
django_cfg/apps/payments/managers/subscription_manager.py,sha256=LHrw5INc1nSqfpw76bn7W2poEA-29FXfF5uhaxmq7l8,968
|
293
295
|
django_cfg/apps/payments/managers/tariff_manager.py,sha256=Kor_0ApvROcH0UKlp1-9rYChtHWDeOFgUc1GG3IepxY,799
|
294
296
|
django_cfg/apps/payments/middleware/__init__.py,sha256=ryn3emWBq15-kE8eJxX19gd-eTrk7JlpXqV2Cg8N_Wg,294
|
295
|
-
django_cfg/apps/payments/middleware/api_access.py,sha256=
|
297
|
+
django_cfg/apps/payments/middleware/api_access.py,sha256=u7fHQk2NA9QWbku5YU3T5ZzwS4SeWcZzToa8y1ClcHc,10788
|
296
298
|
django_cfg/apps/payments/middleware/rate_limiting.py,sha256=MhpHQkTjoHdH-tsJNlZATQQ9d9R9PDTwrdw1gUt_ydo,7407
|
297
299
|
django_cfg/apps/payments/middleware/usage_tracking.py,sha256=i8KT5E0dN6zhQwY8A-wFWtpkc9FJpfTQ4qTnRV8onmw,11176
|
298
|
-
django_cfg/apps/payments/migrations/0001_initial.py,sha256=
|
300
|
+
django_cfg/apps/payments/migrations/0001_initial.py,sha256=36RhaBGV8crRsbFT731NS2hpWiW0E-OPNcJkTOJY9-Y,44233
|
299
301
|
django_cfg/apps/payments/migrations/__init__.py,sha256=OHlzxEGDJYKZz82orZXnh77xy-Okv6FcG3EKMfg9LzU,21
|
300
302
|
django_cfg/apps/payments/models/__init__.py,sha256=iYRu56c8oZCG5n52aWJqsKEKX44k0_2BiSFkN8jZ46U,1444
|
301
303
|
django_cfg/apps/payments/models/api_keys.py,sha256=HCtZuvpW7cYRpsSXkS3U3lk_smMQpgLRf7PHaM58MkQ,2484
|
@@ -303,7 +305,7 @@ django_cfg/apps/payments/models/balance.py,sha256=F7unVOEVZMUGNvPkvGTWsytxfvQKdV
|
|
303
305
|
django_cfg/apps/payments/models/base.py,sha256=iypC2MCPrASunrJepuY0y7fASVLDMDSqOwAWp-ovTDk,793
|
304
306
|
django_cfg/apps/payments/models/currencies.py,sha256=lz6axNRmfoQa3od-EV78vbZQv3vh2FznxHzGBi20qIU,4106
|
305
307
|
django_cfg/apps/payments/models/events.py,sha256=flKdY3SRAx5UZyHw6wLh5TflHTyy2lQpdi5aa1NqJ1o,2372
|
306
|
-
django_cfg/apps/payments/models/payments.py,sha256=
|
308
|
+
django_cfg/apps/payments/models/payments.py,sha256=jzzugUX71puUfmcOr4qqg0NCZE6LaZa6t7STI-jzzZE,13945
|
307
309
|
django_cfg/apps/payments/models/subscriptions.py,sha256=femsIzWxSZZdu1Ee_MgCYnnpMnXshejwb1_JPhbo8k8,8193
|
308
310
|
django_cfg/apps/payments/models/tariffs.py,sha256=nqM3RPtu4itAHRvT6jAgZgQEdEIN1KgKnEljkaHGFDc,2749
|
309
311
|
django_cfg/apps/payments/serializers/__init__.py,sha256=4l7Tu1NXztXtqceVbC3OxtWJir4n3_dFpVEgRgQ9J4k,1416
|
@@ -313,38 +315,51 @@ django_cfg/apps/payments/serializers/currencies.py,sha256=SskSl3rjZBxxLnY_zsaJiF
|
|
313
315
|
django_cfg/apps/payments/serializers/payments.py,sha256=BDhcD9DCea50Cz1PumLNVntgH40dOR55NzCXv4I0YOQ,2258
|
314
316
|
django_cfg/apps/payments/serializers/subscriptions.py,sha256=16OileC0yxM90ERK3Uo5Jqe9DeyNf3tBwK-ZqDtEbPw,2795
|
315
317
|
django_cfg/apps/payments/serializers/tariffs.py,sha256=54N5tFpc5NBIMyXuN7Re6pDNoQLJc2yZBIb5uVRhn-I,1698
|
316
|
-
django_cfg/apps/payments/services/__init__.py,sha256=
|
317
|
-
django_cfg/apps/payments/services/internal_types.py,sha256=
|
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
|
318
320
|
django_cfg/apps/payments/services/billing/__init__.py,sha256=YHdL1RWo-VAotOdZaykArOd0NTGI0fuQ0B7nBRKn6Lg,149
|
319
321
|
django_cfg/apps/payments/services/cache/__init__.py,sha256=CA8cUptfUD5LwbAB9kPMDofdkJBD_o7Z3HHG4vXMoyA,318
|
320
322
|
django_cfg/apps/payments/services/cache/base.py,sha256=McWSpr6eNEXbhG2PBkQd_YkL-he-scoWNUVmKI4FohY,696
|
321
323
|
django_cfg/apps/payments/services/cache/simple_cache.py,sha256=N2i0yGOR5Y1SPl2hqsXcGyehCpwXdN9SQVrphO1yat0,4508
|
322
324
|
django_cfg/apps/payments/services/core/__init__.py,sha256=I7x8Ryz4htQ1LwwtWZRK-MeI_SYboCQ7cKtTxmoqfpk,382
|
323
|
-
django_cfg/apps/payments/services/core/balance_service.py,sha256=
|
324
|
-
django_cfg/apps/payments/services/core/
|
325
|
-
django_cfg/apps/payments/services/core/
|
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
|
326
329
|
django_cfg/apps/payments/services/middleware/__init__.py,sha256=SAiK2KW4aFVdfjlNrV3Bv8F0qg_epqwbZXOV0WoS6yA,154
|
327
|
-
django_cfg/apps/payments/services/
|
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
|
328
334
|
django_cfg/apps/payments/services/providers/base.py,sha256=kjWPb7EutZHaByDW3py8srAcnvZdE4oqj6Tp9xS9ADk,3807
|
329
|
-
django_cfg/apps/payments/services/providers/cryptapi.py,sha256=
|
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
|
330
337
|
django_cfg/apps/payments/services/providers/nowpayments.py,sha256=xsylxVaN5L5tYfv1j_OJzX_PSEBEq9pmBeRFG80rcCA,11490
|
331
|
-
django_cfg/apps/payments/services/providers/registry.py,sha256=
|
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
|
332
343
|
django_cfg/apps/payments/services/validators/__init__.py,sha256=_NgbT79oslNvBPPYRpSFnPkvnZuQ48Kk1dzSZIE2ZAU,140
|
333
344
|
django_cfg/apps/payments/signals/__init__.py,sha256=L3danrGQ-9tEfaAbkXOILPb2Bw_T4XRN4PodjMl1hvk,342
|
334
|
-
django_cfg/apps/payments/signals/api_key_signals.py,sha256=
|
335
|
-
django_cfg/apps/payments/signals/payment_signals.py,sha256=
|
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
|
336
347
|
django_cfg/apps/payments/signals/subscription_signals.py,sha256=FDXlR02fpS6ILzMJQjoK4Ln1v7Kb8vp_Ej9v_lqnVE0,7492
|
337
|
-
django_cfg/apps/payments/
|
338
|
-
django_cfg/apps/payments/
|
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
|
339
353
|
django_cfg/apps/payments/utils/middleware_utils.py,sha256=MTS9MY_8-VqpBVv8uQYH89rfeG8dTnUru38vVbbE-1o,6682
|
340
354
|
django_cfg/apps/payments/utils/validation_utils.py,sha256=xSxpjz5aAajSOIxDhaXHdB-Uf98MOi3uDKVx0jHmREo,2704
|
341
355
|
django_cfg/apps/payments/views/__init__.py,sha256=00HRO1sDErjnFq2dedFAjBIyIhZZyZmv4DK98lHmx2Q,1613
|
342
356
|
django_cfg/apps/payments/views/api_key_views.py,sha256=fG68roqOF9FShde68Qp_CBf0KJuf1chwK41RU0VqUJk,5542
|
343
357
|
django_cfg/apps/payments/views/balance_views.py,sha256=rA_OJFizP_UBBr8OdWLQZQ51qlPFYoeJCYUzNXSw4S0,2509
|
344
358
|
django_cfg/apps/payments/views/currency_views.py,sha256=B1rjOKDV3KEYRQI6NuPEyEGF8VNumaraoZdI8Qqdu6s,4096
|
345
|
-
django_cfg/apps/payments/views/payment_views.py,sha256=
|
359
|
+
django_cfg/apps/payments/views/payment_views.py,sha256=5UH8La8BM7f8SJmc4aq5yAZn4oxnF2JtVV2qiMlVchM,5746
|
346
360
|
django_cfg/apps/payments/views/subscription_views.py,sha256=WqBDsaPUQGP6ZCmbheIdRupy-qESPpdj8IgKkaLp3V8,5005
|
347
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
|
348
363
|
django_cfg/apps/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
349
364
|
django_cfg/apps/support/admin.py,sha256=-fcegtqoCcwPiBXwyNLMftcYCTTbTRRBpWItyeNNkDY,8827
|
350
365
|
django_cfg/apps/support/admin_filters.py,sha256=ZpKtetRxppRAMwIr-pwDbXAyh7qouDfTCEZoo1YJfFs,2179
|
@@ -394,15 +409,15 @@ django_cfg/apps/tasks/templates/tasks/components/tab_navigation.html,sha256=Sxb7
|
|
394
409
|
django_cfg/apps/tasks/templates/tasks/components/task_details_modal.html,sha256=DeJjj3dxYcBEAj8Hv4Ii4koEMaNRVHta9_R25qZyK4w,6317
|
395
410
|
django_cfg/apps/tasks/templates/tasks/components/tasks_tab.html,sha256=Yd6SPgdQX1p_6miitu3nZHjdZOtbsXMhUP4DnXSntPs,1826
|
396
411
|
django_cfg/apps/tasks/templates/tasks/components/workers_tab.html,sha256=4Ud4QpG6bnxBsrBDKGXdy4GcIne43wC13Ch1szZzrbo,1580
|
397
|
-
django_cfg/cli/README.md,sha256=
|
412
|
+
django_cfg/cli/README.md,sha256=mbT1vqbeY_dYOjQGuZ_rjtMqUm-l76HH6oWQRq9ETmc,11665
|
398
413
|
django_cfg/cli/__init__.py,sha256=i3ksFngCqZCBvaimQcBD1P2_gr5PiM--4efLScCjvvU,152
|
399
|
-
django_cfg/cli/main.py,sha256=
|
400
|
-
django_cfg/cli/utils.py,sha256=
|
414
|
+
django_cfg/cli/main.py,sha256=ZxpP6YLhCFlF9tYSCwY4gkJ8thzQFrhsQAn0_C_7ehU,1004
|
415
|
+
django_cfg/cli/utils.py,sha256=YGXWw7MjX-zAUDKrbJ4q_sxH54at2Oqhrcm7udVozU4,5810
|
401
416
|
django_cfg/cli/commands/__init__.py,sha256=EKLXDAx-QttnGmdjsmVANAfhxWplxl2V_2I0SZaJOoI,98
|
402
|
-
django_cfg/cli/commands/create_project.py,sha256=
|
403
|
-
django_cfg/cli/commands/info.py,sha256=
|
417
|
+
django_cfg/cli/commands/create_project.py,sha256=8Jg4rfnGCINTd6ebBqx-WXG57AIB5C2yY5D3JQAtpyI,21029
|
418
|
+
django_cfg/cli/commands/info.py,sha256=AaLbFFOjHwqiIzZChPxfD3ASZZs1IAD-0RJQaLo2PC0,4925
|
404
419
|
django_cfg/core/__init__.py,sha256=eVK57qFOok9kTeHoNEMQ1BplkUOaQ7NB9kP9eQK1vg0,358
|
405
|
-
django_cfg/core/config.py,sha256=
|
420
|
+
django_cfg/core/config.py,sha256=y5die7kK06KcRk1VuxU8MFe16c6yAS_MfEAMqLePApI,28938
|
406
421
|
django_cfg/core/environment.py,sha256=MAoEPqIPsLVhSANT2Bz4nnus2wmbMW0RCOQxhQfDrDc,9106
|
407
422
|
django_cfg/core/exceptions.py,sha256=RTQEoU3PfR8lqqNNv5ayd_HY2yJLs3eioqUy8VM6AG4,10378
|
408
423
|
django_cfg/core/generation.py,sha256=Oa9bnEPsxwEaa0RP71zNl_z2p9NNljHnoCTeRu72X-0,25421
|
@@ -451,12 +466,13 @@ django_cfg/models/jwt.py,sha256=3R_dpLmVZIcH4zdtwA4qKnuCB8RZQACrgsbbgWY2q4c,9025
|
|
451
466
|
django_cfg/models/limits.py,sha256=nUfvyPykwKR38ZOlIFqlNGRmfV8RO5hiUrhDH6FCHJw,7449
|
452
467
|
django_cfg/models/logging.py,sha256=4vZF-G9rPmXMxxtUx_ad7Esvgbe8a_5Dl692Yg0fL4A,10636
|
453
468
|
django_cfg/models/ngrok.py,sha256=MVgcKWx0DRSW0QcwhiSx2vVwTSG49vbVrzPkZqDK-zw,3575
|
469
|
+
django_cfg/models/payments.py,sha256=kizcd5qztKtFdo1F1VYDa6nlvrh_SRhlVaPbF9D95PI,16435
|
454
470
|
django_cfg/models/revolution.py,sha256=16fQ09iovrmlepNcTr2J0hZ-ShdMnMSQ2rTXa60yrus,8134
|
455
471
|
django_cfg/models/security.py,sha256=Xv19ZVOIenB_-f0wB6fm-Ap4j9kA43bSFaT2XenpSqc,4685
|
456
472
|
django_cfg/models/services.py,sha256=fj9JjrJFrlL4DMnMbx_D8JiiZpz4E5uBqmhquAxau7c,13159
|
457
|
-
django_cfg/models/tasks.py,sha256=
|
473
|
+
django_cfg/models/tasks.py,sha256=zFvQaikXi-W-iN7eqR6ZGNiKJnPgOL3yl9RRis-5qZs,17160
|
458
474
|
django_cfg/modules/__init__.py,sha256=Ip9WMpzImEwIAywpFwU056_v0O9oIGG7nCT1YSArxkw,316
|
459
|
-
django_cfg/modules/base.py,sha256=
|
475
|
+
django_cfg/modules/base.py,sha256=A7fAp3eEBbs9zxVq96k9FotWnqHqZA5b-kH9-hOJ1zo,5913
|
460
476
|
django_cfg/modules/django_email.py,sha256=Kk2B1Y73xlbpNKCDkU2uBT01iVANjKpmVlKbRScVCs4,18059
|
461
477
|
django_cfg/modules/django_health.py,sha256=7QzuQ6WyjWYj6lecd4auwRvEyrMUL7N6hiAp-tLyoY4,8923
|
462
478
|
django_cfg/modules/django_logger.py,sha256=3oP9jev0lOcFUJ1tYcpbFnK524zIGA2xIOrrAiTwpb8,6331
|
@@ -465,11 +481,19 @@ django_cfg/modules/django_tasks.py,sha256=SBas2juL6RfDL7ttm4xAxJ7bvS052WmUzixNHP
|
|
465
481
|
django_cfg/modules/django_telegram.py,sha256=qz3EOJnCR_YTJVIu2-Iq8--cla6mU-WPohquQ26eHDQ,16367
|
466
482
|
django_cfg/modules/dramatiq_setup.py,sha256=Jke4aO_L1t6F3OAc4pl12zppKzL0gb1p6ilfQ3zUIZ8,454
|
467
483
|
django_cfg/modules/logger.py,sha256=4_zeasNehr8LGz8r_ckv15-fQS63zCodiqD4CYIEyFI,10546
|
468
|
-
django_cfg/modules/django_currency/README.md,sha256=
|
469
|
-
django_cfg/modules/django_currency/__init__.py,sha256=
|
470
|
-
django_cfg/modules/django_currency/
|
471
|
-
django_cfg/modules/django_currency/
|
472
|
-
django_cfg/modules/django_currency/
|
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
|
473
497
|
django_cfg/modules/django_import_export/README.md,sha256=OuGT5gv0hwt3dcbMLfZUfostZnXALeN4OifgRvv--4k,2453
|
474
498
|
django_cfg/modules/django_import_export/__init__.py,sha256=oJ9BDGdbQ_B8E2bGXxSQyRSzr8212rHGtgSLf9v6cAI,1908
|
475
499
|
django_cfg/modules/django_llm/README.md,sha256=31uQG9_z-HroEUevtOPJbZ86H9yiwzZJs0omf-Kwh-o,9374
|
@@ -524,7 +548,7 @@ django_cfg/modules/django_unfold/models/dropdown.py,sha256=bbRYl0iuzBrwgmqUMTDw9
|
|
524
548
|
django_cfg/modules/django_unfold/models/navigation.py,sha256=xrP2szoe1MSiTVAfc0Hd2dS32HhCp8XHBJinF5yc_U8,2575
|
525
549
|
django_cfg/modules/django_unfold/models/tabs.py,sha256=AHV7lmaRTjOluf9mgZvXISG5D7Re1QPdU2v-iYoCaIQ,848
|
526
550
|
django_cfg/registry/__init__.py,sha256=q6z9hGcBdtzbVLeDeQtP-A31z-1V7myZqjlZyTs1uo0,540
|
527
|
-
django_cfg/registry/core.py,sha256=
|
551
|
+
django_cfg/registry/core.py,sha256=4zvppBabwUzHcBviFJcSQ8PH8kG5ypCUlavpFuhw2nw,3378
|
528
552
|
django_cfg/registry/exceptions.py,sha256=b4pIakeRxhT1-ST3lbAnmAQaASRBARCoah_w6vb3VF0,399
|
529
553
|
django_cfg/registry/modules.py,sha256=e8lCG5C-yhRgvs8El_-6Xbdrte-enZF_Xb3B4opO-Hs,1135
|
530
554
|
django_cfg/registry/services.py,sha256=wpGSgSCUr4e9pUh5-rwN1AyPLGazK6KD-Ky4vz-elIw,1219
|
@@ -532,6 +556,8 @@ django_cfg/registry/third_party.py,sha256=3VPyh5XkHJr6uDNbpv04HutVSumoyo5jgB-zyq
|
|
532
556
|
django_cfg/routing/__init__.py,sha256=zOg9yh2lP2NaxlnZpVH8IogQBHGlcky_C-n0VWD9LIc,277
|
533
557
|
django_cfg/routing/callbacks.py,sha256=zMWD0AEE4AvczdBN-VDjgczai683ZSEqws0pnCVQ3FI,5994
|
534
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
|
535
561
|
django_cfg/templates/__init__.py,sha256=IzLjt-a7VIJ0OutmAE1_-w0_LpL2u0MgGpnIabjZuW8,19
|
536
562
|
django_cfg/templates/admin/index.html,sha256=kehH-W9fTTUo36G9X82vM7L3Mr_lTiMkfp0qxPJAaSg,1247
|
537
563
|
django_cfg/templates/admin/components/action_grid.html,sha256=inffy-bMcuecSwgnR3HIEGE-r9wG_BgPttkvHqqFih8,3068
|
@@ -581,8 +607,8 @@ django_cfg/utils/path_resolution.py,sha256=C9As6p4Q9l3VeoVkFDRPQWGrzAWf8O8UxLVka
|
|
581
607
|
django_cfg/utils/smart_defaults.py,sha256=MxbUZwn_xbh48li7uLI6W4D9WCD2P2WO48dv85Fra5E,23057
|
582
608
|
django_cfg/utils/toolkit.py,sha256=Td8_iXNaftonF_xdZP4Y3uO65nuA_4_zditn5Q_Pfcw,23310
|
583
609
|
django_cfg/utils/version_check.py,sha256=jI4v3YMdQriUEeb_TvRl511sDghy6I75iKRDUaNpucs,4800
|
584
|
-
django_cfg-1.2.
|
585
|
-
django_cfg-1.2.
|
586
|
-
django_cfg-1.2.
|
587
|
-
django_cfg-1.2.
|
588
|
-
django_cfg-1.2.
|
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,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())
|