oxutils 0.1.1__py3-none-any.whl → 0.1.5__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.
- oxutils/__init__.py +1 -1
- oxutils/audit/settings.py +1 -16
- oxutils/audit/utils.py +22 -0
- oxutils/conf.py +1 -3
- oxutils/constants.py +2 -0
- oxutils/context/__init__.py +0 -0
- oxutils/context/site_name_processor.py +11 -0
- oxutils/currency/__init__.py +0 -0
- oxutils/currency/admin.py +57 -0
- oxutils/currency/apps.py +7 -0
- oxutils/currency/controllers.py +79 -0
- oxutils/currency/enums.py +7 -0
- oxutils/currency/migrations/0001_initial.py +41 -0
- oxutils/currency/migrations/__init__.py +0 -0
- oxutils/currency/models.py +100 -0
- oxutils/currency/schemas.py +38 -0
- oxutils/currency/tests.py +3 -0
- oxutils/currency/utils.py +69 -0
- oxutils/functions.py +5 -2
- oxutils/logger/receivers.py +0 -2
- oxutils/oxiliere/__init__.py +0 -0
- oxutils/oxiliere/admin.py +3 -0
- oxutils/oxiliere/apps.py +6 -0
- oxutils/oxiliere/cacheops.py +7 -0
- oxutils/oxiliere/caches.py +33 -0
- oxutils/oxiliere/controllers.py +36 -0
- oxutils/oxiliere/enums.py +10 -0
- oxutils/oxiliere/management/__init__.py +0 -0
- oxutils/oxiliere/management/commands/__init__.py +0 -0
- oxutils/oxiliere/management/commands/init_oxiliere_system.py +86 -0
- oxutils/oxiliere/middleware.py +97 -0
- oxutils/oxiliere/migrations/__init__.py +0 -0
- oxutils/oxiliere/models.py +55 -0
- oxutils/oxiliere/permissions.py +104 -0
- oxutils/oxiliere/schemas.py +65 -0
- oxutils/oxiliere/settings.py +17 -0
- oxutils/oxiliere/tests.py +3 -0
- oxutils/oxiliere/utils.py +76 -0
- oxutils/pdf/__init__.py +10 -0
- oxutils/pdf/printer.py +81 -0
- oxutils/pdf/utils.py +94 -0
- oxutils/pdf/views.py +208 -0
- oxutils/s3/storages.py +4 -4
- oxutils/settings.py +15 -13
- oxutils/users/__init__.py +0 -0
- oxutils/users/admin.py +3 -0
- oxutils/users/apps.py +6 -0
- oxutils/users/migrations/__init__.py +0 -0
- oxutils/users/models.py +88 -0
- oxutils/users/tests.py +3 -0
- oxutils/users/utils.py +15 -0
- {oxutils-0.1.1.dist-info → oxutils-0.1.5.dist-info}/METADATA +92 -11
- oxutils-0.1.5.dist-info/RECORD +88 -0
- {oxutils-0.1.1.dist-info → oxutils-0.1.5.dist-info}/WHEEL +1 -1
- oxutils/locale/fr/LC_MESSAGES/django.mo +0 -0
- oxutils-0.1.1.dist-info/RECORD +0 -45
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: oxutils
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.5
|
|
4
4
|
Summary: Production-ready utilities for Django applications in the Oxiliere ecosystem
|
|
5
5
|
Keywords: django,utilities,jwt,s3,audit,logging,celery,structlog
|
|
6
6
|
Author: Edimedia Mutoke
|
|
@@ -13,7 +13,6 @@ Classifier: Intended Audience :: Developers
|
|
|
13
13
|
Classifier: License :: OSI Approved :: Apache Software License
|
|
14
14
|
Classifier: Operating System :: OS Independent
|
|
15
15
|
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
17
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
18
17
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
18
|
Classifier: Topic :: Internet :: WWW/HTTP
|
|
@@ -22,7 +21,6 @@ Requires-Dist: celery>=5.5.3
|
|
|
22
21
|
Requires-Dist: cryptography>=46.0.3
|
|
23
22
|
Requires-Dist: django-auditlog>=3.3.0
|
|
24
23
|
Requires-Dist: django-celery-results>=2.6.0
|
|
25
|
-
Requires-Dist: django-cid>=3.0
|
|
26
24
|
Requires-Dist: django-extensions>=4.1
|
|
27
25
|
Requires-Dist: django-ninja>=1.5.0
|
|
28
26
|
Requires-Dist: django-ninja-extra>=0.30.6
|
|
@@ -32,7 +30,7 @@ Requires-Dist: jwcrypto>=1.5.6
|
|
|
32
30
|
Requires-Dist: pydantic-settings>=2.12.0
|
|
33
31
|
Requires-Dist: pyjwt>=2.10.1
|
|
34
32
|
Requires-Dist: requests>=2.32.5
|
|
35
|
-
Requires-Python: >=3.
|
|
33
|
+
Requires-Python: >=3.12
|
|
36
34
|
Project-URL: Changelog, https://github.com/oxiliere/oxutils/blob/main/CHANGELOG.md
|
|
37
35
|
Project-URL: Documentation, https://github.com/oxiliere/oxutils/tree/main/docs
|
|
38
36
|
Project-URL: Homepage, https://github.com/oxiliere/oxutils
|
|
@@ -45,9 +43,9 @@ Description-Content-Type: text/markdown
|
|
|
45
43
|
**Production-ready utilities for Django applications in the Oxiliere ecosystem.**
|
|
46
44
|
|
|
47
45
|
[](https://pypi.org/project/oxutils/)
|
|
48
|
-
[](https://www.python.org/)
|
|
49
47
|
[](https://www.djangoproject.com/)
|
|
50
|
-
[](tests/)
|
|
51
49
|
[](LICENSE)
|
|
52
50
|
[](https://github.com/astral-sh/ruff)
|
|
53
51
|
|
|
@@ -55,11 +53,15 @@ Description-Content-Type: text/markdown
|
|
|
55
53
|
|
|
56
54
|
- 🔐 **JWT Authentication** - RS256 with JWKS caching
|
|
57
55
|
- 📦 **S3 Storage** - Static, media, private, and log backends
|
|
58
|
-
- 📝 **Structured Logging** - JSON logs with
|
|
56
|
+
- 📝 **Structured Logging** - JSON logs with automatic request tracking
|
|
59
57
|
- 🔍 **Audit System** - Change tracking with S3 export
|
|
60
58
|
- ⚙️ **Celery Integration** - Pre-configured task processing
|
|
61
59
|
- 🛠️ **Django Mixins** - UUID, timestamps, user tracking
|
|
62
60
|
- ⚡ **Custom Exceptions** - Standardized API errors
|
|
61
|
+
- 🎨 **Context Processors** - Site name and domain for templates
|
|
62
|
+
- 💱 **Currency Module** - Multi-source exchange rates (BCC/OXR)
|
|
63
|
+
- 📄 **PDF Generation** - WeasyPrint integration for Django
|
|
64
|
+
- 🏢 **Multi-Tenant** - PostgreSQL schema-based isolation
|
|
63
65
|
|
|
64
66
|
---
|
|
65
67
|
|
|
@@ -82,12 +84,12 @@ uv add oxutils
|
|
|
82
84
|
from oxutils.conf import UTILS_APPS, AUDIT_MIDDLEWARE
|
|
83
85
|
|
|
84
86
|
INSTALLED_APPS = [
|
|
85
|
-
*UTILS_APPS, # structlog, auditlog,
|
|
87
|
+
*UTILS_APPS, # structlog, auditlog, celery_results
|
|
86
88
|
# your apps...
|
|
87
89
|
]
|
|
88
90
|
|
|
89
91
|
MIDDLEWARE = [
|
|
90
|
-
*AUDIT_MIDDLEWARE, #
|
|
92
|
+
*AUDIT_MIDDLEWARE, # RequestMiddleware, Auditlog
|
|
91
93
|
# your middleware...
|
|
92
94
|
]
|
|
93
95
|
```
|
|
@@ -126,10 +128,22 @@ class Product(BaseModelMixin): # UUID + timestamps + is_active
|
|
|
126
128
|
# Custom Exceptions
|
|
127
129
|
from oxutils.exceptions import NotFoundException
|
|
128
130
|
raise NotFoundException(detail="User not found")
|
|
131
|
+
|
|
132
|
+
# Context Processors
|
|
133
|
+
# settings.py
|
|
134
|
+
TEMPLATES = [{
|
|
135
|
+
'OPTIONS': {
|
|
136
|
+
'context_processors': [
|
|
137
|
+
'oxutils.context.site_name_processor.site_name',
|
|
138
|
+
],
|
|
139
|
+
},
|
|
140
|
+
}]
|
|
141
|
+
# Now {{ site_name }} and {{ site_domain }} are available in templates
|
|
129
142
|
```
|
|
130
143
|
|
|
131
144
|
## Documentation
|
|
132
145
|
|
|
146
|
+
### Core Modules
|
|
133
147
|
- **[Settings](docs/settings.md)** - Configuration reference
|
|
134
148
|
- **[JWT](docs/jwt.md)** - Authentication
|
|
135
149
|
- **[S3](docs/s3.md)** - Storage backends
|
|
@@ -138,9 +152,14 @@ raise NotFoundException(detail="User not found")
|
|
|
138
152
|
- **[Mixins](docs/mixins.md)** - Model/service mixins
|
|
139
153
|
- **[Celery](docs/celery.md)** - Task processing
|
|
140
154
|
|
|
155
|
+
### Additional Modules
|
|
156
|
+
- **[Currency](docs/currency.md)** - Exchange rates management
|
|
157
|
+
- **[PDF](docs/pdf.md)** - PDF generation with WeasyPrint
|
|
158
|
+
- **[Oxiliere](docs/oxiliere.md)** - Multi-tenant architecture
|
|
159
|
+
|
|
141
160
|
## Requirements
|
|
142
161
|
|
|
143
|
-
- Python 3.
|
|
162
|
+
- Python 3.12+
|
|
144
163
|
- Django 5.0+
|
|
145
164
|
- PostgreSQL (recommended)
|
|
146
165
|
|
|
@@ -150,7 +169,7 @@ raise NotFoundException(detail="User not found")
|
|
|
150
169
|
git clone https://github.com/oxiliere/oxutils.git
|
|
151
170
|
cd oxutils
|
|
152
171
|
uv sync
|
|
153
|
-
uv run pytest #
|
|
172
|
+
uv run pytest # 201 tests passing, 4 skipped
|
|
154
173
|
```
|
|
155
174
|
|
|
156
175
|
### Creating Migrations
|
|
@@ -165,6 +184,19 @@ uv run make_migrations.py
|
|
|
165
184
|
|
|
166
185
|
See [MIGRATIONS.md](MIGRATIONS.md) for detailed documentation.
|
|
167
186
|
|
|
187
|
+
## Optional Dependencies
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Multi-tenant support
|
|
191
|
+
uv add oxutils[oxiliere]
|
|
192
|
+
|
|
193
|
+
# PDF generation
|
|
194
|
+
uv add oxutils[pdf]
|
|
195
|
+
|
|
196
|
+
# Development tools
|
|
197
|
+
uv add oxutils[dev]
|
|
198
|
+
```
|
|
199
|
+
|
|
168
200
|
## Advanced Examples
|
|
169
201
|
|
|
170
202
|
### JWT with Django Ninja
|
|
@@ -199,6 +231,55 @@ export = export_logs_from_date(from_date=from_date)
|
|
|
199
231
|
print(f"Exported to {export.data.url}")
|
|
200
232
|
```
|
|
201
233
|
|
|
234
|
+
### Currency Exchange Rates
|
|
235
|
+
|
|
236
|
+
```python
|
|
237
|
+
from oxutils.currency.models import CurrencyState
|
|
238
|
+
|
|
239
|
+
# Sync rates from BCC (with OXR fallback)
|
|
240
|
+
state = CurrencyState.sync()
|
|
241
|
+
|
|
242
|
+
# Get latest rates
|
|
243
|
+
latest = CurrencyState.objects.latest()
|
|
244
|
+
usd_rate = latest.currencies.get(code='USD').rate
|
|
245
|
+
eur_rate = latest.currencies.get(code='EUR').rate
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### PDF Generation
|
|
249
|
+
|
|
250
|
+
```python
|
|
251
|
+
from oxutils.pdf.printer import Printer
|
|
252
|
+
from oxutils.pdf.views import WeasyTemplateView
|
|
253
|
+
|
|
254
|
+
# Standalone PDF generation
|
|
255
|
+
printer = Printer(
|
|
256
|
+
template_name='invoice.html',
|
|
257
|
+
context={'invoice': invoice},
|
|
258
|
+
stylesheets=['css/invoice.css']
|
|
259
|
+
)
|
|
260
|
+
pdf_bytes = printer.write_pdf()
|
|
261
|
+
|
|
262
|
+
# Class-based view
|
|
263
|
+
class InvoicePDFView(WeasyTemplateView):
|
|
264
|
+
template_name = 'invoice.html'
|
|
265
|
+
pdf_filename = 'invoice.pdf'
|
|
266
|
+
pdf_stylesheets = ['css/invoice.css']
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### Multi-Tenant Setup
|
|
270
|
+
|
|
271
|
+
```python
|
|
272
|
+
# settings.py
|
|
273
|
+
TENANT_MODEL = "oxiliere.Tenant"
|
|
274
|
+
MIDDLEWARE = [
|
|
275
|
+
'oxutils.oxiliere.middleware.TenantMainMiddleware', # First!
|
|
276
|
+
# other middleware...
|
|
277
|
+
]
|
|
278
|
+
|
|
279
|
+
# All requests must include X-Organization-ID header
|
|
280
|
+
# Data is automatically isolated per tenant schema
|
|
281
|
+
```
|
|
282
|
+
|
|
202
283
|
## License
|
|
203
284
|
|
|
204
285
|
Apache 2.0 License - see [LICENSE](LICENSE)
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
oxutils/__init__.py,sha256=5PuAYlbVIInYJZ43P2L9jEzxTTH-zn1XIMdRkSImF90,536
|
|
2
|
+
oxutils/apps.py,sha256=8pO8eXUZeKYn8fPo0rkoytmHACwDNuTNhdRcpkPTxGM,347
|
|
3
|
+
oxutils/audit/__init__.py,sha256=uonc00G73Xm7RwRHVWD-wBn8lJYNCq3iBgnRGMWAEWs,583
|
|
4
|
+
oxutils/audit/apps.py,sha256=xvnmB5Z6nLV7ejzhSeQbesTkwRoFygoPFob8H5QTHgU,304
|
|
5
|
+
oxutils/audit/export.py,sha256=MVf2RhLzXatBaGK7bIEvSY1VTwEojrPEKwYMvH1stwE,7992
|
|
6
|
+
oxutils/audit/masks.py,sha256=BRCz2m8dbaLgqn5umxpWCwn9mT6Z_ww_WIedl36AmPM,2345
|
|
7
|
+
oxutils/audit/migrations/0001_initial.py,sha256=xDOxV6NqkU8yuEDPvqG2AKANKrOJsOIAEJn5IbuLLFU,2151
|
|
8
|
+
oxutils/audit/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
oxutils/audit/models.py,sha256=NWzZjwgRGB212PeSb0E_aSxSComrTSR0knt2aBCiWhg,2100
|
|
10
|
+
oxutils/audit/settings.py,sha256=NNCFaN6tilDj-0WsVRK9HJNcr2nJOBYJT9E8cY5n9iI,133
|
|
11
|
+
oxutils/audit/utils.py,sha256=VJESUbMb5bC155XNlkIvr8DMc_o6ZTAIn5r8NDr7k_E,581
|
|
12
|
+
oxutils/celery/__init__.py,sha256=29jo4DfdvOoThX-jfL0ZiDjsy3-Z_fNhwHVJaLO5rsk,29
|
|
13
|
+
oxutils/celery/base.py,sha256=qLlBU2XvT2zj8qszy8togqH7hM_wUYyWWA3JAQPPJx0,3378
|
|
14
|
+
oxutils/celery/settings.py,sha256=njhHBErpcFczV2e23NCPX_Jxs015jr4dIig4Is_wbgE,33
|
|
15
|
+
oxutils/conf.py,sha256=TR0RIVaLMHvG0gm3NgbKsoU25eJFBjItAhknFJdiOiQ,231
|
|
16
|
+
oxutils/constants.py,sha256=CW-ho9Vasys-L2ZNJHFMovG5NzHNU6GPldE9vqyVcLM,89
|
|
17
|
+
oxutils/context/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
+
oxutils/context/site_name_processor.py,sha256=1gc0Td_3HVlUn9ThhQBCQ8kfnRnI88bEflK9vEzTvEc,225
|
|
19
|
+
oxutils/currency/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
|
+
oxutils/currency/admin.py,sha256=cCd4tXIZTctr3Ksa1jTEpaECw-on7aRHibAfYxEjGek,1831
|
|
21
|
+
oxutils/currency/apps.py,sha256=w35QaiH3BIjCYv2IU6AadENAyBOw7Hmejy9kT5e_law,194
|
|
22
|
+
oxutils/currency/controllers.py,sha256=xDvPBpgXYjCiWyhRQ09fifbdPRSZAG_HC28_sGRfRYc,3042
|
|
23
|
+
oxutils/currency/enums.py,sha256=AHm8zpYCyGv0WMnh8XHLa3cAJnQx3aNOCjGug2Q94VQ,141
|
|
24
|
+
oxutils/currency/migrations/0001_initial.py,sha256=GHypakExy4jW5iQ6hB9x2UUjBoPgaz0OaHNTcBU64Pw,1707
|
|
25
|
+
oxutils/currency/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
oxutils/currency/models.py,sha256=-NrVq-degRc4sAO2BZ_LqSuIAP-IzCwwZJVxfYlNL8o,2448
|
|
27
|
+
oxutils/currency/schemas.py,sha256=4DyEjpL_HaMNDhKyu48fZtcXfRdemVP4rdyHUFit8uI,658
|
|
28
|
+
oxutils/currency/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
29
|
+
oxutils/currency/utils.py,sha256=eNa9CNlOFC6NMZLJn8VTwLrkME9q7quMTX7NMSZtTv8,2074
|
|
30
|
+
oxutils/enums/__init__.py,sha256=gFhZG8ER6ArGZO5agWhdfs7NiD2h9FzrzfQRHq18dD0,40
|
|
31
|
+
oxutils/enums/audit.py,sha256=ju2Z9CrtdyPziRQ7oOe4Ygw85t9sW3jynO_1DkgZoAM,126
|
|
32
|
+
oxutils/enums/invoices.py,sha256=E33QGQeutZUqvlovJY0VGDxWUb0i_kdfhEiir1ARKuQ,201
|
|
33
|
+
oxutils/exceptions.py,sha256=CCjENOD0of6_noif2ajrpfbBLoG16DWa46iB9_uEe3M,3592
|
|
34
|
+
oxutils/functions.py,sha256=4stHj94VebWX0s1XeWshubMD2v8w8QztTWppbkTE_Gg,3246
|
|
35
|
+
oxutils/jwt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
+
oxutils/jwt/auth.py,sha256=rO-xWNfug9Ok6zA7EIPvVkpD8TBUdq05CdrnMrL-t9Q,1597
|
|
37
|
+
oxutils/jwt/client.py,sha256=bskLpmSBrehi_snbo3Qbq1m99Kbfg2GP7jqfcXKHvys,3341
|
|
38
|
+
oxutils/jwt/constants.py,sha256=MUahZjm8plTYpHjLOMQCuH0H18lkIwS45EtRm617wq8,26
|
|
39
|
+
oxutils/locale/fr/LC_MESSAGES/django.po,sha256=APXt_8R99seCWjJyS5ELOawvRLvUqqBT32O252BaG5s,7971
|
|
40
|
+
oxutils/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
41
|
+
oxutils/logger/receivers.py,sha256=EBpkwMCHYacOJvuOPzUtM_8ttWWetz17kIwoudGiV34,488
|
|
42
|
+
oxutils/logger/settings.py,sha256=aiKiJqNNkw1g5vQgjk3Zfh6UgY7jx-lbmcFgATiXrGI,1805
|
|
43
|
+
oxutils/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
oxutils/mixins/base.py,sha256=0cGY4mGKhL-hJTEBsbETYiaKMVuUgio5DISCv5iYtGI,589
|
|
45
|
+
oxutils/mixins/schemas.py,sha256=DGW0GQBJc9K7hwOJLX-fEryi7KCoY1QaCLny8fjtQMI,319
|
|
46
|
+
oxutils/mixins/services.py,sha256=i4MrkCE3y1W7Xrrz6YeMMaY9xMtCQs4WgBIpM7hrDTI,5399
|
|
47
|
+
oxutils/models/__init__.py,sha256=mR9hhncZMGKefovg9xSPBtb9Yu2AssAdta26ihcNvI4,77
|
|
48
|
+
oxutils/models/base.py,sha256=1HGHB8MnhPpaa1SpnUVgiknCSHTwajz5LxprB2zicbc,2884
|
|
49
|
+
oxutils/models/billing.py,sha256=aCDZcMx4CUyAwh3wgJGypAJl_fSEuWrL27-cSYv3gCs,3323
|
|
50
|
+
oxutils/models/invoice.py,sha256=nqphkhlBhssODm2H4dBYyb1cOmHS29fToER40UN0cXo,13216
|
|
51
|
+
oxutils/oxiliere/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
+
oxutils/oxiliere/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
|
|
53
|
+
oxutils/oxiliere/apps.py,sha256=DAb8O1Vt4XPTIlFg5NB6SISTYRHyW3TY55-l7TC08Lo,148
|
|
54
|
+
oxutils/oxiliere/cacheops.py,sha256=VGG5qG5IsxvWJTu1aTlmsaDXV2aiuIMVdVcvHGHeY3g,163
|
|
55
|
+
oxutils/oxiliere/caches.py,sha256=PljqpDxkaE5F8Gsmvdqoq8W0MDh6aDtgXxCrN2T8b-4,976
|
|
56
|
+
oxutils/oxiliere/controllers.py,sha256=hL_snutY1EuSO0n06NDbjkz-3A3hkqa3sYGie3Grbmg,847
|
|
57
|
+
oxutils/oxiliere/enums.py,sha256=etpHgzsHTQKMrPIxVH-d592_DYSRJ2_o0c8bOdIza-8,201
|
|
58
|
+
oxutils/oxiliere/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
59
|
+
oxutils/oxiliere/management/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
oxutils/oxiliere/management/commands/init_oxiliere_system.py,sha256=ogNQGARqUUfTv4JgZsRuEh4FInfMUO4nFHHCbgeLLbk,3659
|
|
61
|
+
oxutils/oxiliere/middleware.py,sha256=mGOUs0bjtp_TKkZRgcC6kE7euZrZ6mIG1PgKHBhTDCc,4013
|
|
62
|
+
oxutils/oxiliere/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
oxutils/oxiliere/models.py,sha256=IqASvymJ6EcLc9bhxnas7-XXZStQYz7_UqroFkqS8xE,1543
|
|
64
|
+
oxutils/oxiliere/permissions.py,sha256=BVSbXqMa9Ohb1joBA_uXRCkYsYc3_CabhAWL9-VS4IU,3227
|
|
65
|
+
oxutils/oxiliere/schemas.py,sha256=kjX6N1INx9wikatniEM5s-ECuuVtDCcu6VEBbbEIdZE,1897
|
|
66
|
+
oxutils/oxiliere/settings.py,sha256=ZuKppEyrucWxvvYC2-wLap4RzKfaEfaRdjJnsNZzpuY,440
|
|
67
|
+
oxutils/oxiliere/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
68
|
+
oxutils/oxiliere/utils.py,sha256=iZc3BjaqVSrZkELVpYsYiwMHC5MfDeDQPKn8iTsB3Bk,2488
|
|
69
|
+
oxutils/pdf/__init__.py,sha256=Uu_yOEd-FcNHIB7CV6y76c53wjL5Hce2GMjho8gnkbM,236
|
|
70
|
+
oxutils/pdf/printer.py,sha256=VVvpGU5GdSNTOP06wLqgm36ICDfRTRaRjmmiS-vJ0wM,2449
|
|
71
|
+
oxutils/pdf/utils.py,sha256=cn1Yc7KnjuATSQKM3hrYptCo0IsQurBdrNHh7Nu08b8,3786
|
|
72
|
+
oxutils/pdf/views.py,sha256=DBxCh_UXVywlvlWZh9sVBtYc0gZxMo7ut1j1U_gqPA4,6523
|
|
73
|
+
oxutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
|
+
oxutils/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
75
|
+
oxutils/s3/settings.py,sha256=NIlVhaOzWdsepOgCpxdTTJRHfM0tM5EcAoy4kaFC1R8,1190
|
|
76
|
+
oxutils/s3/storages.py,sha256=gjQg05edVn6NuyfJZ-NwUB2lRWwg8GqgzHB8I1D5vbI,5402
|
|
77
|
+
oxutils/settings.py,sha256=mp_ZSf8bcCUe2Zc9YdOe_EtltBgIY2n_8lUERQtsIFk,9742
|
|
78
|
+
oxutils/types.py,sha256=DIz8YK8xMpLc7FYbf88yEElyLsYN_-rbvaZXvENQkOQ,234
|
|
79
|
+
oxutils/users/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
+
oxutils/users/admin.py,sha256=suMo4x8I3JBxAFBVIdE-5qnqZ6JAZV0FESABHOSc-vg,63
|
|
81
|
+
oxutils/users/apps.py,sha256=u3PAY2AZGQXSWH2DSkQ1lOTIVm33qUbzeKls0J8H8No,142
|
|
82
|
+
oxutils/users/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
83
|
+
oxutils/users/models.py,sha256=YXAHcXuhmHZfcRDOqA5lBiSRcJ24snBs9X6tcJPCcFs,2960
|
|
84
|
+
oxutils/users/tests.py,sha256=mrbGGRNg5jwbTJtWWa7zSKdDyeB4vmgZCRc2nk6VY-g,60
|
|
85
|
+
oxutils/users/utils.py,sha256=jY-zL8vLT5U3E2FV3DqCvrPORjKLutbkPZTQ-z96dCw,376
|
|
86
|
+
oxutils-0.1.5.dist-info/WHEEL,sha256=eh7sammvW2TypMMMGKgsM83HyA_3qQ5Lgg3ynoecH3M,79
|
|
87
|
+
oxutils-0.1.5.dist-info/METADATA,sha256=My2FOK0fKzrb7w4hrYmg3HWj1Qyf9Ig-USJNFtqN6Zo,7878
|
|
88
|
+
oxutils-0.1.5.dist-info/RECORD,,
|
|
Binary file
|
oxutils-0.1.1.dist-info/RECORD
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
oxutils/__init__.py,sha256=3P1RgwJOYUc9uXjd_PhSprxHiOLf_qZrSxX2nuxBRWU,536
|
|
2
|
-
oxutils/apps.py,sha256=8pO8eXUZeKYn8fPo0rkoytmHACwDNuTNhdRcpkPTxGM,347
|
|
3
|
-
oxutils/audit/__init__.py,sha256=uonc00G73Xm7RwRHVWD-wBn8lJYNCq3iBgnRGMWAEWs,583
|
|
4
|
-
oxutils/audit/apps.py,sha256=xvnmB5Z6nLV7ejzhSeQbesTkwRoFygoPFob8H5QTHgU,304
|
|
5
|
-
oxutils/audit/export.py,sha256=MVf2RhLzXatBaGK7bIEvSY1VTwEojrPEKwYMvH1stwE,7992
|
|
6
|
-
oxutils/audit/masks.py,sha256=BRCz2m8dbaLgqn5umxpWCwn9mT6Z_ww_WIedl36AmPM,2345
|
|
7
|
-
oxutils/audit/migrations/0001_initial.py,sha256=xDOxV6NqkU8yuEDPvqG2AKANKrOJsOIAEJn5IbuLLFU,2151
|
|
8
|
-
oxutils/audit/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
oxutils/audit/models.py,sha256=NWzZjwgRGB212PeSb0E_aSxSComrTSR0knt2aBCiWhg,2100
|
|
10
|
-
oxutils/audit/settings.py,sha256=E4AoTpbvL1svDogux-OTjAdccD5LzyJ1G-lBeCZTbDU,353
|
|
11
|
-
oxutils/celery/__init__.py,sha256=29jo4DfdvOoThX-jfL0ZiDjsy3-Z_fNhwHVJaLO5rsk,29
|
|
12
|
-
oxutils/celery/base.py,sha256=qLlBU2XvT2zj8qszy8togqH7hM_wUYyWWA3JAQPPJx0,3378
|
|
13
|
-
oxutils/celery/settings.py,sha256=njhHBErpcFczV2e23NCPX_Jxs015jr4dIig4Is_wbgE,33
|
|
14
|
-
oxutils/conf.py,sha256=JT0Zj4Wmn9HCEDpk7eOIY47YLBGP793tstsm34cLb1A,296
|
|
15
|
-
oxutils/enums/__init__.py,sha256=gFhZG8ER6ArGZO5agWhdfs7NiD2h9FzrzfQRHq18dD0,40
|
|
16
|
-
oxutils/enums/audit.py,sha256=ju2Z9CrtdyPziRQ7oOe4Ygw85t9sW3jynO_1DkgZoAM,126
|
|
17
|
-
oxutils/enums/invoices.py,sha256=E33QGQeutZUqvlovJY0VGDxWUb0i_kdfhEiir1ARKuQ,201
|
|
18
|
-
oxutils/exceptions.py,sha256=CCjENOD0of6_noif2ajrpfbBLoG16DWa46iB9_uEe3M,3592
|
|
19
|
-
oxutils/functions.py,sha256=p4SycMykom6H2AoryX-X4W_Acphf2_tx-LY2WxFD0Xc,3190
|
|
20
|
-
oxutils/jwt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
oxutils/jwt/auth.py,sha256=rO-xWNfug9Ok6zA7EIPvVkpD8TBUdq05CdrnMrL-t9Q,1597
|
|
22
|
-
oxutils/jwt/client.py,sha256=bskLpmSBrehi_snbo3Qbq1m99Kbfg2GP7jqfcXKHvys,3341
|
|
23
|
-
oxutils/jwt/constants.py,sha256=MUahZjm8plTYpHjLOMQCuH0H18lkIwS45EtRm617wq8,26
|
|
24
|
-
oxutils/locale/fr/LC_MESSAGES/django.mo,sha256=Qk5R90E-JqJX2JxSnveKXxecKVHR-a76uFlwkHTF7f0,8114
|
|
25
|
-
oxutils/locale/fr/LC_MESSAGES/django.po,sha256=APXt_8R99seCWjJyS5ELOawvRLvUqqBT32O252BaG5s,7971
|
|
26
|
-
oxutils/logger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
|
-
oxutils/logger/receivers.py,sha256=U8JVjHRK1zUaCRnPn6p1qsm6FFXgTkXp67PpJ1LnjgU,542
|
|
28
|
-
oxutils/logger/settings.py,sha256=aiKiJqNNkw1g5vQgjk3Zfh6UgY7jx-lbmcFgATiXrGI,1805
|
|
29
|
-
oxutils/mixins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
30
|
-
oxutils/mixins/base.py,sha256=0cGY4mGKhL-hJTEBsbETYiaKMVuUgio5DISCv5iYtGI,589
|
|
31
|
-
oxutils/mixins/schemas.py,sha256=DGW0GQBJc9K7hwOJLX-fEryi7KCoY1QaCLny8fjtQMI,319
|
|
32
|
-
oxutils/mixins/services.py,sha256=i4MrkCE3y1W7Xrrz6YeMMaY9xMtCQs4WgBIpM7hrDTI,5399
|
|
33
|
-
oxutils/models/__init__.py,sha256=mR9hhncZMGKefovg9xSPBtb9Yu2AssAdta26ihcNvI4,77
|
|
34
|
-
oxutils/models/base.py,sha256=1HGHB8MnhPpaa1SpnUVgiknCSHTwajz5LxprB2zicbc,2884
|
|
35
|
-
oxutils/models/billing.py,sha256=aCDZcMx4CUyAwh3wgJGypAJl_fSEuWrL27-cSYv3gCs,3323
|
|
36
|
-
oxutils/models/invoice.py,sha256=nqphkhlBhssODm2H4dBYyb1cOmHS29fToER40UN0cXo,13216
|
|
37
|
-
oxutils/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
oxutils/s3/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
39
|
-
oxutils/s3/settings.py,sha256=NIlVhaOzWdsepOgCpxdTTJRHfM0tM5EcAoy4kaFC1R8,1190
|
|
40
|
-
oxutils/s3/storages.py,sha256=vW8BlxLwkqMgVJPf9z2rkjmlrL_RArlN3YA6y4BJ7Zw,5414
|
|
41
|
-
oxutils/settings.py,sha256=iOVRgkurkv6UtlEvY0dkO71oxxgPAIdyXgHhf3RJaTU,9673
|
|
42
|
-
oxutils/types.py,sha256=DIz8YK8xMpLc7FYbf88yEElyLsYN_-rbvaZXvENQkOQ,234
|
|
43
|
-
oxutils-0.1.1.dist-info/WHEEL,sha256=4n27za1eEkOnA7dNjN6C5-O2rUiw6iapszm14Uj-Qmk,79
|
|
44
|
-
oxutils-0.1.1.dist-info/METADATA,sha256=H5gVh_JOIWKKesVrHu8o6orUe2stxJhmeDm31wRrUa0,5934
|
|
45
|
-
oxutils-0.1.1.dist-info/RECORD,,
|