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.14.2.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

mui_data_grid-0.14.2-py3-none-any.whl (85.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mui_data_grid-0.14.2.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/24.1.0

File hashes

Hashes for mui_data_grid-0.14.2.tar.gz
Algorithm Hash digest
SHA256 a8a854bc8206e3a57276e347277e7db2dc1d11feae6ba7343924b147481a15d0
MD5 e433c13625482f3cb1a65280f42ba5d9
BLAKE2b-256 99faa5bc1308af9aaa76cd076c3a8fbf8db41ed7e7a2f573dee7fa6041ed508b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: mui_data_grid-0.14.2-py3-none-any.whl
  • Upload date:
  • Size: 85.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.4 CPython/3.13.0 Darwin/24.1.0

File hashes

Hashes for mui_data_grid-0.14.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a88a2730d579a37c83d9f373f1af03c07093b99525171a2003f3bab7811a7ea5
MD5 1ef4a9722a58b93579726b4e090dc5ec
BLAKE2b-256 663ec1bd76a7ee58385bb47b0d0b9f13bc02db3664d605907c66af6f4bc0de2a

See more details on using hashes here.

Supported by

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