Skip to main content

Unofficial backend utilities for using Material-UI's X-Data-Grid component

Project description

MUI Data Grid

This is an unofficial toolbox to make integrating a Python web application with Material UI's data grid simpler.

Documentation

Requirements

  • Python 3.9.0+

Features

  • Grid Sort Model support
  • Grid Filter Model support (partial: missing quick filter support)
  • Grid Pagination Model support (LIMIT / OFFSET based, cursor not currently supported)
  • Flask integration
  • SQLAlchemy integration

Installation

Pip

python -m pip install -U 'mui-data-grid'

or with extras:

python -m pip install -U 'mui-data-grid[flask]'
python -m pip install -U 'mui-data-grid[sqlalchemy]'
python -m pip install -U 'mui-data-grid[flask, sqlalchemy]'

Poetry

poetry add mui-data-grid

Usage

Integrations

Flask

#!/usr/bin/env python
# examples/main.py

from flask import Flask, jsonify
from flask.wrappers import Response

from mui.v5.integrations.flask import get_grid_models_from_request
# for v6 support, replace this import with:
# from mui.v6.integrations.flask import get_grid_models_from_request

app = Flask(__name__)

FILTER_MODEL_KEY = "filter_model"
SORT_MODEL_KEY = "sort_model[]"
PAGINATION_MODEL_KEY = None  # stored inline in the query string, not encoded as an obj


@app.route("/")
def print_sorted_details() -> Response:
    # models will return default values if the keys don't exist,
    # so you can choose what features you integrate, and when.
    models = get_grid_models_from_request(
        filter_model_key=FILTER_MODEL_KEY,
        pagination_model_key=PAGINATION_MODEL_KEY,
        sort_model_key=SORT_MODEL_KEY,
    )
    return jsonify(
        {
            # sort_model is a list[GridSortItem]
            SORT_MODEL_KEY: [model.model_dump() for model in models.sort_model],
            # filter_model is GridFilterModel
            FILTER_MODEL_KEY: models.filter_model.model_dump(),
            # pagination_model is a GridPaginationModel
            # providing a consistent interface to pagination parameters
            PAGINATION_MODEL_KEY: models.pagination_model,
        }
    )


if __name__ == "__main__":
    app.run()

SQLAlchemy

    # please see examples/main.py for the full code
    models = get_grid_models_from_request(
        filter_model_key=FILTER_MODEL_KEY,
        pagination_model_key=PAGINATION_MODEL_KEY,
        sort_model_key=SORT_MODEL_KEY,
    )
    session = Session()
    try:
        base_query = session.query(ExampleModel)
        dg_query = apply_request_grid_models_to_query(
            query=base_query,
            request_model=models,
            column_resolver=example_model_resolver,
        )
        # we calculate total separately so that we can reuse the result
        # rather than have .pages() fire off an additional db query.
        total = dg_query.total()
        def item_factory(item: ExampleModel) -> Dict[str, int]:
            return item.model_dump()
        return jsonify(
            {
                "items": dg_query.items(factory=item_factory),
                "page": dg_query.page,
                "pageSize": dg_query.page_size,
                "pages": dg_query.pages(total=total),
                "total": total,
            }
        )
    finally:
        session.close()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mui_data_grid-0.15.0.tar.gz (38.8 kB view details)

Uploaded Source

Built Distribution

mui_data_grid-0.15.0-py3-none-any.whl (86.0 kB view details)

Uploaded Python 3

File details

Details for the file mui_data_grid-0.15.0.tar.gz.

File metadata

  • Download URL: mui_data_grid-0.15.0.tar.gz
  • Upload date:
  • Size: 38.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.2 Darwin/24.3.0

File hashes

Hashes for mui_data_grid-0.15.0.tar.gz
Algorithm Hash digest
SHA256 9d396d91dea076c6876b526be2e99b09021e0dde70ffeea73ae2fde52f756efd
MD5 8063b7c29c511a2148276a209ee7a3ae
BLAKE2b-256 5c2304de0a9187e540d2f5016a08c6e39dfbe686ceda85cbcd39f0ac32d65898

See more details on using hashes here.

File details

Details for the file mui_data_grid-0.15.0-py3-none-any.whl.

File metadata

  • Download URL: mui_data_grid-0.15.0-py3-none-any.whl
  • Upload date:
  • Size: 86.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.1 CPython/3.13.2 Darwin/24.3.0

File hashes

Hashes for mui_data_grid-0.15.0-py3-none-any.whl
Algorithm Hash digest
SHA256 020b09d44e40474728a3edbe944cbf725d9602f35fa6c61e4859eb5f8dc2ece6
MD5 3d38d0481c250b906bba686d77ec090f
BLAKE2b-256 9c1bb9c61a32203e5ad14efb4bbb9fd3f7a51fa5e96f330b5901281eb919d02e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page