Skip to content

Changelog

0.4.2

Merge of staging tag v0.4.1 with related-records building blocks (0.4.0).

Added

  • Everything in 0.4.0 and 0.4.1 below, combined on one branch.
  • ChildOf "New" button script preserved in the merged layout.html.

0.4.1

Tagged release on staging (v0.4.1).

Added

  • List UI: overridden layout.html, list.html, and _macros.html for breadcrumbs, page title bar, pinned sidebar logout, and client-side per-column header filters (cf_<column>=<text>).
  • Column filters: column_filters.py with automatic RBACModelView.list_query() integration and auto-sortable plain columns in RBACModelView.__init__.

Changed

  • Sidebar/list-table polish: dedupe single-segment breadcrumb, fix collapsed-sidebar content gap, column show/hide toggle, lighter header/selected-row colors, darker sidebar, tighter column widths and row height, selected-row link contrast fix.

0.4.0

Added

  • Related records: ChildOf, Related, RelatedRecordsMixin for parent/child admin tables with multi-select parent filters, related links (optional counts) on the parent list, single-id parent prefill on create, and Save redirect back to a filtered list (sqladmin 0.31 query preservation + layout "New" button script).
  • Custom page RBAC: RBACBaseView with automatic is_accessible / is_visible gating and Kloudmint.register() support; get_all_actions() for permission grid extras like use.
  • Filters: MultiSelectForeignKeyFilter, MultiSelectValueFilter, ExactValueFilter with kloudmint filter templates.
  • Mixins: SoftDeleteMixin, DynamicChoicesMixin, FileUploadMixin + FileSpec.
  • Storage: StorageBackend protocol, LocalStorage, S3Storage (optional s3 extra); Kloudmint(..., storage=) propagates to upload mixins.
  • Formatters: kloudmint.formatters factories (badge, bool_badge, date, pre, json_pretty, link, action_links, file_preview, expiry_badge).
  • Audit: create_activity_log_model, KloudmintAuditBackend, AuditDiffMixin, ActivityLogAdminBase.
  • Detail pages: DetailPage, Section, auto-mounted from detail_pages= on a model view.
  • Engine: hide_empty_categories, audit_backend, activity_log_model; register() handles RBACBaseView and detail pages.
  • Docs: docs/BuildingBlocks.md.

Changed

  • Requires sqladmin>=0.31,<0.32 (was >=0.16.0).
  • RelatedRecordsMixin.get_list_value is async (matches sqladmin 0.31 async templates).
  • AuditDiffMixin.after_model_change returns super()'s result (preserves future redirect hooks).
  • Sidebar empty categories are hidden by default (hide_empty_categories=True).

Known limitations

  • ChildOf does not prefill when the filter query carries multiple ids.
  • "Save and add another" on a filtered child create opens an unfiltered create form.
  • can_export still cannot be gated per-role (sqladmin has no async export hook).