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.5
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.5.tar.gz | 79.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| djangoldp_tamis_onboarding-1.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 199.6 kB
Release files / djangoldp_tamis_onboarding-1.1.5.tar.gz
| Download URL | djangoldp_tamis_onboarding-1.1.5.tar.gz |
|---|---|
| Size | 79.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d3203e7ecfbb8ed2b5dc8ae943d6a875f140c1cefd4a23d7b84db8fdac8718fa
|
|
BLAKE2b-256 checksum How to use checksums |
8346981a820a02a5e531c8a74c487208706c15f8372d65fa29a86d59fad91b52
|
| 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.5-py3-none-any.whl
| Download URL | djangoldp_tamis_onboarding-1.1.5-py3-none-any.whl |
|---|---|
| Size | 120.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
499702a2ad4669022f272477a3181c1697351606d80852f311dd91aa09a40433
|
|
BLAKE2b-256 checksum How to use checksums |
0efe121eafd632aa0bb0f23fbc59b82765000888971ce673d2927678345aef47
|
| 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
|