Metadata-Version: 2.4
Name: django-party
Version: 0.1.0
Summary: Django party identity hub: contacts, external ids, consent, thin account codes.
Author-email: DLRSP <dlrsp.dev@gmail.com>
License-Expression: MIT
Project-URL: Homepage, https://github.com/DLRSP/django-party
Project-URL: Documentation, https://github.com/DLRSP/django-party/
Project-URL: Repository, https://github.com/DLRSP/django-party
Project-URL: Issues, https://github.com/DLRSP/django-party/issues
Project-URL: Changelog, https://github.com/DLRSP/django-party/blob/main/CHANGELOG.rst
Keywords: django,party,identity,crm,consent,contacts
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Web Environment
Classifier: Framework :: Django
Classifier: Framework :: Django :: 4.2
Classifier: Framework :: Django :: 5.2
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
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: Programming Language :: Python :: 3.14
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Django>=4.2
Provides-Extra: testing
Requires-Dist: coverage; extra == "testing"
Requires-Dist: pytest; extra == "testing"
Requires-Dist: pytest-django; extra == "testing"
Provides-Extra: linting
Requires-Dist: flake8; extra == "linting"
Requires-Dist: flake8-pyproject; extra == "linting"
Requires-Dist: flake8-bugbear; extra == "linting"
Requires-Dist: flake8-comprehensions; extra == "linting"
Requires-Dist: flake8-tidy-imports; extra == "linting"
Requires-Dist: flake8-typing-imports; extra == "linting"
Requires-Dist: pylint; extra == "linting"
Dynamic: license-file

# django-party

[![CI](https://github.com/DLRSP/django-party/actions/workflows/ci.yaml/badge.svg)](https://github.com/DLRSP/django-party/actions/workflows/ci.yaml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![PyPI version](https://img.shields.io/pypi/v/django-party.svg)](https://pypi.org/project/django-party/)

Shared party (person/organization) identity for Django sites: contacts, external ids, append-only consent ledger, and thin counterpart account codes.

Not a sales CRM. Not a double-entry ledger.

## Requirements

- Python 3.10+
- Django 4.2+

## Install

```bash
pip install django-party
```

```python
INSTALLED_APPS = [
    # ...
    "party",
    # ...
]
```

Then migrate:

```bash
python manage.py migrate party
```

## Concepts

| Model | Role |
|-------|------|
| `Party` | Canonical person or organization |
| `ExternalIdentity` | Multi-source ids (`beddy`+`customer\|company\|contact`, `fiscal`+`cedente`, …) |
| `ContactPoint` / `PostalAddress` | Channels and addresses with validity |
| `ConsentRecord` | Append-only privacy/marketing ledger (`null` ≠ granted) |
| `PartyAccount` | Thin studio “Codice conto” metadata (no balances) |

## License

MIT
