entirius-django-enrichment
A Django module for reviewed content enrichment in Entirius, the open-source modular ecommerce platform. It runs an accept-before-write loop for product content (descriptions, attributes, SEO, media): typed tasks are spawned, an external worker returns proposals, an operator reviews them, and only accepted proposals are written back to the source module through an adapter.
What it does
- Spawns enrichment tasks over a scope of products: a list, a filter, a CSV file or a quality gap.
- Takes proposals from an external worker, one per field, with idempotent intake and staged media files.
- Offers a review queue with single and bulk accept and reject; a value that changed since the proposal was made is never overwritten without a second confirmation.
- Writes accepted proposals through a per-module adapter and supports a single-level undo.
- Runs spawn rules on a schedule and prunes finished work after a retention window.
- Exposes an admin API (JWT, Pydantic schemas, OpenAPI) for the CMS and the worker.
Installation
uv add entirius-django-enrichment
pip install entirius-django-enrichment
Optional extras: entirius-django-enrichment[demo] (Pillow, for the seed_demo_proposals command).
INSTALLED_APPS = [
...
"django_utils",
"django_enrichment",
]
# urls.py
urlpatterns = [
path("", include("django_enrichment.urls")),
]
# adapters of the source modules in use
ENRICHMENT_ADAPTERS = {"pim": "django_pim.services.enrichment_adapter"}
ENRICHMENT_ADAPTERS is the one setting a working installation needs; the other ENRICHMENT_* settings
are listed with their defaults in https://github.com/entirius/entirius-django-enrichment/blob/develop/AGENTS.md (section Settings).
Quick start
from django_enrichment.services import task_service
task = task_service.spawn(
type="translate",
scope_spec={"mode": "list", "module": "pim", "refs": ["SKU-1", "SKU-2"]},
params={"language": "de"},
)
The worker then pulls the task and posts proposals to api/enrichment/v2/admin/proposals/.
Requirements
- Python 3.11 or newer, Django 5.0 or newer.
- A Celery worker consuming the
enrichmentqueue (bulk apply, undo, retention, scheduled spawn rules). - Entirius packages pulled in:
entirius-django-utils. Adapters live in the source modules; the catalog adapter ships withentirius-django-pimand is loaded lazily, so this module never imports it.
Documentation
- Overview: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/index.md
- Data model: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/data-model.md
- Admin API: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/api.md
- Service contracts: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/services.md
- Adapter guide: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/adapter-guide.md
- Media proposals: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/media.md
- Scale, undo and retention: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/scale-and-undo.md
- Spawn rules: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/spawn-rules.md
- Spawn surfaces: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/spawn-surfaces.md
- Management commands: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/commands.md
- Testing: https://github.com/entirius/entirius-django-enrichment/blob/develop/docs/testing.md
- Entirius documentation: https://docs.entirius.com/
- Changelog: https://github.com/entirius/entirius-django-enrichment/blob/develop/CHANGELOG.md
Part of Entirius
This module runs inside the Entirius backend service (Volkanos) and improves the content other modules own.
- Backend service: https://github.com/entirius/entirius-service-volkanos
- Docker harness: https://github.com/entirius/entirius-zeno
- Sibling modules: https://github.com/entirius/entirius-django-pim, https://github.com/entirius/entirius-django-atlas, https://github.com/entirius/entirius-django-lookup
Development
make install # sync dependencies (uv, incl. extras)
make check # lint + format check (ruff)
make test # test suite (pytest + pytest-django, sqlite in memory)
Development and agent instructions: https://github.com/entirius/entirius-django-enrichment/blob/develop/AGENTS.md
License
Mozilla Public License 2.0 (MPL-2.0) — see https://github.com/entirius/entirius-django-enrichment/blob/develop/LICENSE.
Metadata
Release files for entirius-django-enrichment 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| entirius_django_enrichment-2.2.0.tar.gz | 159.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| entirius_django_enrichment-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 238.1 kB
Release files / entirius_django_enrichment-2.2.0.tar.gz
| Download URL | entirius_django_enrichment-2.2.0.tar.gz |
|---|---|
| Size | 159.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
504bfcbab3bd21962a75cb197d78bfa90d46ce9f251943f2533768a54f0218af
|
|
BLAKE2b-256 checksum How to use checksums |
c4231dc9d69e2ffbaa073e111183d45a3a4b2634d846a0cf7b22a9b95deaed3d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / entirius_django_enrichment-2.2.0-py3-none-any.whl
| Download URL | entirius_django_enrichment-2.2.0-py3-none-any.whl |
|---|---|
| Size | 78.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1f99f6d8867d64778b35a4be4315d0ea915756bb8199de5e3565d70916eb238f
|
|
BLAKE2b-256 checksum How to use checksums |
0e33fd5e92cb289b67eb759764c54eb32a3ed3d73bb5d28d3368536b15de0ac4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.13.0 {"installer":{"name":"uv","version":"0.13.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|