Skip to content

Releases: mpasternak/django-flexible-reports

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 24 Jul 12:16
96c994d
  • 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 Status moves from 3 - Alpha to
    5 - Production/Stable.

  • Internal: removed the last Python 2 leftovers (__future__ imports, UTF-8
    encoding headers, super(Class, self)) and turned on ruff's UP (pyupgrade)
    ruleset, which had been off, so that they cannot creep back in. No runtime
    behaviour changed.

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 22 Jul 15:24
  • 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 .mo catalogues rather than the .po sources, and *.mo is
    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 .mo files than .po files.

  • The example/ project, which could not start on any supported Django, is
    replaced by demo/ -- 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.rst included a README.rst that does not exist and
    rendered blank; the install instructions recommended easy_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
    psycopg2 at module load, so migrate failed on SQLite for anyone who
    had installed only the runtime dependencies.

  • Table and Report can 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.pk for
    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
    TemplateColumn used to recompile its template for every single cell.

0.3.1

Choose a tag to compare

@mpasternak mpasternak released this 31 May 21:10

Bugfix / follow-up release (everything merged since 0.3.0 — PRs #4 and #5).

  • New optional Datasource.sample_context field: example values for a query's template parameters, used to validate a parametrised query on save (both dsl and DjangoQL backends). Nullable; must be a JSON object.
  • Fix an admin 500 when clearing Sample parameters (sample_context is now nullable).
  • Don't HTML-escape DjangoQL query parameters — values with <, &, " are no longer corrupted (the django-dsl backend 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 ValidationError from the original backend error for clearer diagnostics.

PyPI: https://pypi.org/project/django-flexible-reports/0.3.1/