Metadata-Version: 2.4
Name: explicit-python-django
Version: 1.3.0
Summary: Набор компонентов для интеграции explicit с django
Author-email: BARS Group <bars@bars-open.ru>
Project-URL: Homepage, https://stash.bars-open.ru/projects/EDUBASE/repos/explicit-django/browse
Project-URL: Repository, https://stash.bars-open.ru/scm/edubase/explicit-django.git
Classifier: Intended Audience :: Developers
Classifier: Environment :: Web Environment
Classifier: Natural Language :: Russian
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 5 - Production/Stable
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Framework :: Django :: 2.2
Classifier: Framework :: Django :: 3.0
Classifier: Framework :: Django :: 3.1
Classifier: Framework :: Django :: 3.2
Classifier: Framework :: Django :: 4.0
Classifier: Framework :: Django :: 4.1
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.0
Classifier: Framework :: Django :: 5.1
Classifier: Framework :: Django :: 5.2
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: django
Requires-Dist: explicit-python<3,>=2
Provides-Extra: test
Requires-Dist: gunicorn; extra == "test"
Requires-Dist: factory-boy; extra == "test"
Requires-Dist: coverage; extra == "test"
Requires-Dist: tox; extra == "test"
Requires-Dist: tox-docker; extra == "test"
Requires-Dist: ipdb; extra == "test"
Requires-Dist: python-dateutil; extra == "test"
Dynamic: license-file

# Explicit-Django
## Набор компонентов для интеграции Explicit с Django.

### Базовая единица работы на транзакциях Django ORM.

```python
# persons/core/unit_of_work.py

from explicit.django.unit_of_work import BaseUnitOfWork

from persons.core.persons.adapters.db import Repository as PersonsRepository
from persons.core.persons.adapters.db import repository as persons_repository

# (имя атрибута, инстанс репо)
KNOWN_REPOS = (
    ('persons', persons_repository),
)


class UnitOfWork(BaseUnitOfWork):

    persons: PersonsRepository

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self._registry.register(*KNOWN_REPOS)
```

### Декоратор для преобразования ошибок валидации предметной области в ошибки валидации Django
```python
from explicit.django.domain.validation.exceptions import handle_domain_validation_error

class ViewSet(...):

   @handle_domain_validation_error
   def create(self, request, *args, **kwargs):
       command = Command(...)
       bus.handle(command)

```
## Запуск тестов
```sh
$ tox
```
>>>>>>> e30984f (EDUEO-552 Вынос интеграции с django в отдельный пакет.)
