djangoldp_tamis_onboarding
Public registration form, operator review dashboard, and Keycloak provisioning hooks for the TAMIS dataspace.
What's in here
RegisterParticipantmodel - mirrors theMediaEnterpriseCredentialVC claim shape (organisation, legal address, sectoral roles, general + billing contacts) plus a state-machine lifecycle (pending → processing → approved | rejected).ParticipantAttachmentmodel - one row per supporting document (K-bis, VAT cert, PROCIREP/ISAN proofs, etc.); files land in a private storage tree scoped per participant.- Public multi-step registration form (
/registration/) + success page. - Operator dashboard (
/registration/admin/) - Django-side approve / deny flow. - Keycloak provisioning stub (
keycloak_service.py) + background provisioning task (tasks.py) triggered onprocessing. - Branded HTML + plain-text emails (
templates/onboarding/email/): password magic link, admin notification on a new application, admin notification when connector details are ready for technical approval, approval, rejection, change requests, and the (off by default) Keycloak credentials mail. All extendemail/_base.html, which mirrors the registration views' lockup, fonts and colours. ./manage.py generate_sample_documents- plausible random supporting documents for demos and testing.
Requirements
- Python ≥ 3.10, Django 5.2, DjangoLDP 5.0
- Pillow (logo re-encoding and sample-doc rendering)
- python-magic + system
libmagic1(content-based MIME sniffing on uploads) setuptools<80in the host environment - DjangoLDP still importspkg_resources, which setuptools 80+ deprecates at import time (setuptools' own warning message says "<81" but the deprecation shipped in 80.x). Pin it in your image withpip install 'setuptools<80'before installing this package.
Install
pip install djangoldp-tamis-onboarding
Add to your DjangoLDP settings.yml:
dependencies:
- djangoldp-tamis-onboarding
ldppackages:
- djangoldp_tamis_onboarding
Then wire the URLs under your onboarding prefix (default onboarding/):
path("onboarding/", include("djangoldp_tamis_onboarding.urls")),
Configuration
Settings read by the package (all optional except TAMIS_ADMIN_MAILS):
| Setting | Purpose |
|---|---|
TAMIS_ADMIN_MAILS |
List of operator emails notified on each new submission, and when an applicant submits their connector details for technical approval. |
TAMIS_ONBOARDING_SEND_KEYCLOAK_CREDENTIALS_EMAIL |
Send the "Welcome to TAMIS - your credentials" mail after provisioning (default False). Keep it off while keycloak_service.py is stubbed: the credentials it returns are generated locally and log in nowhere. Applicants are pointed at the password they chose during registration by the approval email instead. |
ONBOARDING_PREFIX |
URL prefix the host mounts the app under (default ""). |
ONBOARDING_HOMEPAGE_URL, ONBOARDING_DOCUMENTATION_URL, ONBOARDING_SUPPORT_EMAIL |
Links shown on the success page. |
TAMIS_ONBOARDING_PRIVATE_MEDIA_ROOT |
Directory for attachment bytes, kept outside MEDIA_ROOT so nginx can't serve them directly. Defaults to <MEDIA_ROOT>-private/. |
TAMIS_ONBOARDING_USE_XACCEL |
When True, the operator download view emits X-Accel-Redirect instead of streaming the file. Requires an internal; nginx location /internal-attachments/ block mapped to TAMIS_ONBOARDING_PRIVATE_MEDIA_ROOT. |
KEYCLOAK_BASE_URL, KEYCLOAK_REALM, KEYCLOAK_CLIENT_ID, KEYCLOAK_CLIENT_SECRET |
Read by keycloak_service.py (stubbed in Phase 1). |
Runnable stack
The governance-services/ docker-compose stack in the TAMIS workspace bundles this package with Keycloak + Postgres + nginx for local and staging onboarding.
Sample documents
Generate plausible K-bis, VAT certificates, PROCIREP/ISAN membership proofs for manual testing:
./manage.py generate_sample_documents --output ./sample-docs --count 3 --format both
License
MIT.
Metadata
Release files for djangoldp-tamis-onboarding 1.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| djangoldp_tamis_onboarding-1.1.4.tar.gz | 79.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| djangoldp_tamis_onboarding-1.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 199.4 kB
Release files / djangoldp_tamis_onboarding-1.1.4.tar.gz
| Download URL | djangoldp_tamis_onboarding-1.1.4.tar.gz |
|---|---|
| Size | 79.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f44fe7dc6c560cb1eb1822925ff8c94a949003cb01edafb91cfcf990e17c4ff
|
|
BLAKE2b-256 checksum How to use checksums |
ab3e52a7c6816b719f1537f6e66312c0a913494253fb7b5a335eee57d6f57553
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.13 readme-renderer/46.0 requests/2.34.2 requests-toolbelt/1.0.0 urllib3/2.8.0 tqdm/4.70.1 importlib-metadata/9.0.1 keyring/25.7.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.11.16
|
Release files / djangoldp_tamis_onboarding-1.1.4-py3-none-any.whl
| Download URL | djangoldp_tamis_onboarding-1.1.4-py3-none-any.whl |
|---|---|
| Size | 120.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97d78add4ecf6cdbd0cfe0eb20efeb2a5f056a392a6a1d8f824cea0c94abb32a
|
|
BLAKE2b-256 checksum How to use checksums |
eac50ecd47f4153cdf1594ad2df9958dfe4e09d142eac5b1edead092782192dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.8.0 pkginfo/1.13 readme-renderer/46.0 requests/2.34.2 requests-toolbelt/1.0.0 urllib3/2.8.0 tqdm/4.70.1 importlib-metadata/9.0.1 keyring/25.7.0 rfc3986/2.0.0 colorama/0.4.6 CPython/3.11.16
|