Receipts: PDF download
- The receipt print page now shows a “Download PDF” button alongside the existing print action when available.Added PDF download for receipts using server-side generation
- Added unit tests for receipt print and download flows (authenticated and public token-based), plus coverage for
ReceiptTokenServicemethods.
Projects: implementing partner is now optional
- Made Implementing Partner optional on projects (model + form), removing the mandatory constraint and the hardcoded required asterisk in the UI.
- Fixed the public subsite Funding Projects injection code to safely handle projects with no partner (avoids
AttributeError). - Enhanced the funding-projects modal to show Program Center details (name, location, address, sector, about) when present; omitted when not set.
Image Vault: protect system albums from editing
- The Image Vault is a protected system album and should not be modifiable by users.
- Hidden edit/delete actions for protected vault albums and their photos/videos across the gallery list, album detail, and photo view screens.
Public Subsite: FAQ accordion fix + theme-aligned UI
- Fixed the subsite FAQ accordion breaking after save by allowing
<button>tags through HTML sanitisation. - Added a repair routine to rebuild missing accordion buttons from already-stored broken page content (no resave required).
- Applied theme colours to accordion UI states (active colour/background, focus ring, expanded chevron) so all themes render correctly.
- Improved spacing consistency by removing redundant inner
py-5padding in injected live sections. - Added hero / hero-image section styles to
components.cssso these sections render correctly both on the public page and inside the editor preview.
Production fix: document viewer & downloads no longer fail with GCS AccessDenied
- Fixed a production issue where the document viewer iframe (and downloads) could fail with anonymous GCS AccessDenied errors.