ixg_platform/apps/ops
ixgadmin cdefbd010c Serve document and certificate files through a permission-checked download
Media was unreachable from either portal, which is why the certificate button on
the buyer compliance page returned page-not-found and no document row had
anything to click. The cause was structural: the portal and ops hosts proxy
location / to the app with a path prefix, so a stored /media/... URL arrives as
/portal/media/... and matches no route.

Add a download view per portal behind the same role gate as the page that links
to it — buyer-visible documents and published certificates for buyers, anything
the ops list shows for operations — resolving the stored path safely under
MEDIA_ROOT so a traversal or an absolute path is refused. Point the seven
templates that list files at the new routes.

Also add a portal-wide render sweep: nothing in the suite was fetching the ops
or portal pages, so a view could lose its template_name and 500 in front of a
user with every test still green.
2026-09-17 12:44:52 +00:00
..
__init__.py Initial commit: IXG Platform 2026-07-29 16:48:48 +00:00
apps.py Initial commit: IXG Platform 2026-07-29 16:48:48 +00:00
urls.py Serve document and certificate files through a permission-checked download 2026-09-17 12:44:52 +00:00
views.py Serve document and certificate files through a permission-checked download 2026-09-17 12:44:52 +00:00