WebGrid is a datagrid library for Flask and other Python web frameworks designed to work with SQLAlchemy ORM entities and queries.
With a grid configured from one or more entities, WebGrid provides these features for reporting:
-
Automated SQL query construction based on specified columns and query join/filter/sort options
-
Renderers to various targets/formats
- HTML output paired with JS (jQuery) for dynamic features
- Excel (XLSX)
- CSV
-
User-controlled data filters
- Per-column selection of filter operator and value(s)
- Generic single-entry search
-
Session storage/retrieval of selected filter options, sorting, and paging
Install via pip or uv:
# Just the package
pip install webgrid
uv pip install webgrid
# or, preferably in a uv project:
uv add webgrid
Some basic internationalization features are available via extra requirements:
pip install webgrid[i18n]
uv pip install webgrid[i18n]
# or, preferably in a uv project:
uv add webgrid --extra i18n
For a quick start, see the Getting Started guide in the docs.
Project structure and tooling mostly derives from the Coppy, see its documentation for context and additional instructions.
This project can be updated from the upstream repo, see Updating a Project.
From zero to hero (passing tests that is):
-
Ensure host dependencies are installed
-
Start docker service dependencies (if needed):
❯ docker compose config --services mssql pg ❯ docker compose up -d ...
-
Sync project virtualenv w/ lock file:
uv sync
-
Configure pre-commit:
pre-commit install
-
Install mssql driver if intending to run mssql tests
mise odbc-driver-install
-
View sessions then run sessions:
❯ nox --list # all sessions ❯ nox # selected sessions ❯ nox -e ...
Versions are date based. A bump
action exists to help manage versions:
# Show current version
mise bump --show
# Bump version based on date, tag, and push:
mise bump
# See other options
mise bump -- --help
PyPI publishing is automated in the nox.yaml
GitHub action:
- "v" tags will publish to pypi.org (production)
- Anything else that triggers the Nox GH action will publish to test.pypi.org
Auth for test.pypi.org is separate from production so users who should be able to manage the PyPI project need to be given access in both systems.
The RTD project will automatically build on pushes to master.