Releases: cuongnbms/django-admin-extended
Releases · cuongnbms/django-admin-extended
v6.0.2
Added
create_dbmanagement command: creates the database for a configured connection if it does not exist. Supports PostgreSQL and MySQL, reads connection details fromsettings.DATABASES, accepts a--databasealias (default:default), and is idempotent (skips creation when the database already exists).
Full changelog: https://github.com/cuongnbms/django-admin-extended/blob/master/CHANGELOG.md
v6.0.1
Fixed
change_form: Edit button in view-mode was gated onhas_change_permission or has_delete_permission. BecauseExtendedModelAdmin.has_change_permissionreturnsFalsein VIEW mode, the condition collapsed to delete permission — hiding the Edit button from users with only change permission, and showing it to delete-only users. The button is now gated on a newae_has_change_permissioncontext variable that reflects the underlying model-level change permission.
Changed
change_form: Edit button is now rendered after user-defined object tools, so it sits at the end of the object-tools toolbar.
Full changelog: https://github.com/cuongnb14/django-admin-extended/blob/master/CHANGELOG.md
v6.0.0
v6 is a complete re-architecture. No automatic upgrade path from v5.x. Use only for new installations or projects that accept manual migration. See CHANGELOG.md for the full v5 → v6 rename table and migration notes.
⚠️ Breaking changes
- Python 3.12+ required (was 3.8+).
- Django 5.2 LTS or Django 6.0+ required (was 4.0).
bookmarksandchartsare now separate Django sub-apps; addadmin_extended.bookmarksandadmin_extended.chartstoINSTALLED_APPSif you need them.- Public API renames — see the rename table in
docs/superpowers/specs/2026-05-20-v6-architecture-refactor-design.md.
Removed
BookmarkAdmin.add_bookmark_view(CSRF-disabled POST endpoint — security issue).request.page_typeattribute (useget_page_mode(request, object_id)orcurrent_page_mode()).ExtendedModelAdmin.get_html_*methods (use free functionsadmin_extended.display.html_*).ExtendedModelAdmin.TEXT_COLOR_*constants (useadmin_extended.display.html.{SUCCESS,ERROR,WARNING,DEFAULT}).setup.py,MANIFEST.in.- v5 packages
admin_extended.base,admin_extended.admin,admin_extended.models,admin_extended.utils,admin_extended.decorators,admin_extended.settings.
Fixed
TableDatashared mutable state via class-level lists (B1).BookmarkAdmin.add_bookmark_viewCSRF disabled (B2).- Mutable default arguments throughout the codebase (B3).
auto_registerreverse identity format — now canonicalapp_label.ModelName(B4).DefaultModelAdminJsonFieldtypo →JSONField(B5).request.page_typemutation — moved toContextVar(B6).DisplayLinkAdapterskipped the firstlist_displayentry (B7).parse_filtersdid not URL-decode (B8).extra_contextmutation could overwrite caller-supplied keys (B9).SCALE_MAPPINGduplicated between model and admin (B10).- Sidebar templatetag ran a DB query per render (B11) — now cached with signal-based invalidation.
metrics_apiraised bareException(B12) — now returns proper 400 JSON.- POST object-tool buttons now render inside the main change-form (previously emitted outside, breaking submission).
Added
- Type hints across the entire public API +
py.typedmarker. - Permission check for object tool views (H2).
TimeSeriesChart.max_pointsto cap returned buckets.TimeSeriesChart.cache_secondsfor per-chart result caching.TimeSeriesChart.clean()validates target model and field references.BOOKMARK_CACHE_SECONDS,DEFAULT_APP_ICONsettings.- pytest + pytest-django + tox matrix (Python 3.12/3.13 × Django 5.2/6.0) + CI workflow.
pyproject.toml,ruff,mypy --strict,setuptools-scmdynamic versioning.llms.md— single-file LLM-friendly reference for coding agents (Claude Code, Cursor, Copilot, etc.).
Changed
ExtendedAdminModelrenamed toExtendedModelAdminfor consistency with Django'sModelAdminconvention.