Skip to content

v1.4.0

Latest

Choose a tag to compare

@github-actions github-actions released this 02 May 06:43
· 6 commits to develop since this release

New Features

  • Dynamic Model support — generate reports from any database table without defining a Django model.
    New get_dynamic_model(table_name, database, schema) utility introspects a live table and returns a
    fully usable (unmanaged) Django model. Supports 20+ field types and PostgreSQL schemas
    (schema parameter generates "schema"."table_name" as the db table).
    Models are cached after first introspection.
  • table_name attribute on ReportGenerator and ReportView — shorthand for using a dynamic model.
    Setting table_name = "my_table" is equivalent to setting report_model = get_dynamic_model("my_table").
    Column validation is deferred to request time for table_name-based views so imports do not trigger
    database access.
  • Pre-computed crosstab reports — new crosstab_precomputed = True flag on ReportGenerator
    switches from live aggregation to reading existing column values and pivoting them.
    Use crosstab_columns to name the value columns and crosstab_field to identify the pivot field.
    Distinct values for crosstab_field are auto-discovered from the database if crosstab_ids is not set.
    Intended for materialized views, data-warehouse fact tables, and pre-aggregated ETL outputs.
  • Print / HTML export — new PrintHTMLExport class renders a clean, RTL-aware, print-ready HTML
    page and triggers window.print() automatically. Enabled by default on all ReportView subclasses
    via the new print_export_class attribute. The print export button opens in a new browser tab.
    Templates are split into print_report.html, print_report_header.html, print_report_footer.html,
    and print_report_controls.html for easy overriding.
  • Arabic (ar) and German (de) translations added.

Improvements

  • Static asset path resolution — template tags now consistently apply Django's static() to any
    relative URL in settings (jQuery URL, chart engine JS files, Font Awesome CSS URL). The
    slick_reporting_settings JSON block written to the page also contains fully resolved static URLs,
    ensuring correct paths with ManifestStaticFilesStorage or CDN-backed storages.
  • Export action metadataget_export_actions() now includes a new_window flag per action;
    the JS export handler opens a new tab when the flag is set, used by the print export.
  • Report form extracted — the filter form markup is now in its own report_form.html template
    (included by report.html) making it easier to override just the form section.
  • Select2 removed from core assets — Select2 was a demo-only dependency that made it into the default
    SLICK_REPORTING_SETTINGS["MEDIA"] JS/CSS lists and was auto-initialised in report_loader.js.
    It is now removed from the library defaults; demo project configures it separately.
  • fkeys_filter_func_hook — new static method on ReportViewBase that receives the dict of
    detected foreign-key fields before the filter form is built. Override it to exclude or rename fields
    (e.g. remove internal FK columns such as polymorphic_ctype_id).
  • Chart error recovery — chart rendering errors are now caught in report_loader.js and displayed
    as an inline message instead of silently breaking the rest of the page.

Bug Fixes

  • Fix crosstab_compute_remainder class-level attribute being ignored; the value was always read from
    the request instead of falling back to the class default.

Chart Engine Fixes

  • Update Highcharts wrapper to use the modern Highcharts.chart() API (v11+), replacing the removed
    jQuery plugin syntax. Switch default Highcharts CDN to jsDelivr (cdn.jsdelivr.net/npm/highcharts@11).
  • Fix Chart.js wrapper: corrected inverted is_time_series check; update to Chart.js v3/v4 API
    (plugins.title, plugins.tooltip, scales.y / scales.x).
  • Add crosstab support to the Chart.js wrapper.
  • Fix Chart.js area chart type to render as line with fill: true.
  • Fix Chart.js pie chart on time-series reports: automatically enables plot_total.
  • Fix Chart.js pie chart sizing with aspectRatio: 2.
  • Fix Chart.js chart cache key to include the element xpath, preventing chart destruction when
    the same report appears multiple times on a dashboard.