Releases: mpasternak/django-flexible-reports
Release list
v0.4.1
-
Python 3.14 is supported and tested, against both Django 5.2 LTS and 6.0.
-
PyPI metadata is fuller: real keywords instead of just the package name, and
links to the documentation, repository, issue tracker and changelog rather
than the homepage alone.Development Statusmoves from3 - Alphato
5 - Production/Stable. -
Internal: removed the last Python 2 leftovers (
__future__imports, UTF-8
encoding headers,super(Class, self)) and turned on ruff'sUP(pyupgrade)
ruleset, which had been off, so that they cannot creep back in. No runtime
behaviour changed.
v0.4.0
-
Backwards incompatible: the minimum supported Django is now 5.2 LTS.
Tested against Django 5.2 and 6.0. -
The Polish translation now actually works when installed from PyPI. Django
reads compiled.mocatalogues rather than the.posources, and*.mois
gitignored, so every release up to and including 0.3.2 shipped the.po
alone and the translation silently did nothing. Releases now compile the
catalogues before building, and the build fails if the wheel ends up with
fewer.mofiles than.pofiles. -
The
example/project, which could not start on any supported Django, is
replaced bydemo/-- a working project that runs against either the plain
admin (make demo) or grappelli (make demo-grappelli) from one set of
models and seed data. -
Documentation is rewritten and published to
https://mpasternak.github.io/django-flexible-reports/. The previous
docs/readme.rstincluded aREADME.rstthat does not exist and
rendered blank; the install instructions recommendedeasy_install.The manual is now built with MkDocs and the
Material theme instead of
Sphinx, and its sources are Markdown. -
Three migrations no longer import
django.contrib.postgres.fields.jsonb. That import pulled in
psycopg2at module load, somigratefailed on SQLite for anyone who
had installed only the runtime dependencies. -
TableandReportcan now be cloned from the admin, using a Clone
button on the change form. Cloning a table copies its columns and its sort
order; cloning a report copies its elements, which keep pointing at the same
tables and datasources. The clone's name gets a translatable(copy)
suffix.Both are also available programmatically as
Table.clone()and
Report.clone(). Neither modifies the source object.The button is verified to work with
grappelli, which ships its own
admin/change_form.html; a regression test guards it. -
Fix stale table headers. A cached table class was kept per
Table.pkfor
the lifetime of the process and never invalidated, so editing a column's
label -- or deleting a column -- only became visible after restarting
Django. With several workers the page alternated between old and new
headers depending on which worker answered.The cache is gone. Compiled column templates are cached instead, keyed by
the template source so no invalidation is needed, which more than pays the
removal back: rendering a 500-row table is ~1.25x faster than before, since
TemplateColumnused to recompile its template for every single cell.
0.3.1
Bugfix / follow-up release (everything merged since 0.3.0 — PRs #4 and #5).
- New optional
Datasource.sample_contextfield: example values for a query's template parameters, used to validate a parametrised query on save (bothdslandDjangoQLbackends). Nullable; must be a JSON object. - Fix an admin 500 when clearing Sample parameters (
sample_contextis now nullable). - Don't HTML-escape
DjangoQLquery parameters — values with<,&,"are no longer corrupted (thedjango-dslbackend got the same fix in django-dsl 0.1.14). - Fix the except-catchall element lookup so the "everything except" table renders its rows instead of being silently empty.
- Escape the datasource query shown in the admin changelist.
- Chain
ValidationErrorfrom the original backend error for clearer diagnostics.
PyPI: https://pypi.org/project/django-flexible-reports/0.3.1/