Code source de geonature.utils.json

from packaging import version

from flask import g
from flask.json.provider import DefaultJSONProvider
from flask_sqlalchemy.pagination import Pagination
import sqlalchemy as sa

if version.parse(sa.__version__) >= version.parse("1.4"):
    from sqlalchemy.engine import Row
else:  # retro-compatibility SQLAlchemy 1.3
    from sqlalchemy.engine import RowProxy as Row


[docs] class MyJSONProvider(DefaultJSONProvider): @staticmethod
[docs] def default(o): if isinstance(o, Row): return o._asdict() if isinstance(o, Pagination): if "pagination_schema" in g: items = g.pagination_schema.dump(o.items, many=True) else: items = [item.as_dict() for item in o.items] return { "items": items, "page": o.page, "per_page": o.per_page, "pages": o.pages, "total": o.total, "prev_num": o.prev_num, "next_num": o.next_num, } return DefaultJSONProvider.default(o)