Working to expand and improve pager behavior.

This commit is contained in:
Yaro Kasear 2025-08-28 09:56:15 -05:00
parent 0c2a9847cb
commit bdec7202df
3 changed files with 76 additions and 12 deletions

View file

@ -106,14 +106,31 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
expand = _collect_expand_from_paths(fields)
spec = QuerySpec(filters=filters, order_by=[sort] if sort else [], page=page, per_page=per_page, expand=expand)
s = session(); svc = CrudService(s, default_eager_policy)
rows, total = svc.list(Model, spec)
rows, _ = svc.list(Model, spec)
html = render_template("crudkit/rows.html", items=rows, fields=fields, getp=_getp)
return html
@bp.get("/<model>/frag/pager")
def pager(model):
Model = registry.get(model) or abort(404)
page = request.args.get("page", type=int) or 1
per_page = request.args.get("per_page", type=int) or 20
filters = _parse_filters(request.args)
sort = request.args.get("sort")
fields_csv = request.args.get("fields_csv") or "id,name"
fields = _paths_from_csv(fields_csv)
expand = _collect_expand_from_paths(fields)
spec = QuerySpec(filters=filters, order_by=[sort] if sort else [], page=page, per_page=per_page, expand=expand)
s = session(); svc = CrudService(s, default_eager_policy)
_, total = svc.list(Model, spec)
pages = max(1, ceil(total / per_page))
rows_html = render_template("crudkit/rows.html", items=rows, fields=fields, getp=_getp)
pager_html = render_template("crudkit/pager.html", model=model, page=page, pages=pages,
html = render_template("crudkit/pager.html", model=model, page=page, pages=pages,
per_page=per_page, sort=sort, filters=filters, fields_csv=fields_csv)
return rows_html + pager_html
return html
@bp.get("/<model>/frag/form")
def form(model):