Got much of the table behavior working with CRUDKit.
This commit is contained in:
parent
56debd88c2
commit
0c2a9847cb
11 changed files with 38 additions and 43 deletions
|
|
@ -20,7 +20,7 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
|
|||
GET /<model>/frag/rows -> <tr>...</tr> + pager markup if wanted
|
||||
GET /<model>/frag/form -> <form>...</form> (auto-generated)
|
||||
"""
|
||||
bp = Blueprint(name, __name__, template_folder="templates/crudkit")
|
||||
bp = Blueprint(name, __name__, template_folder="templates")
|
||||
def session(): return scoped_session(db_session_factory)()
|
||||
|
||||
def _parse_filters(args):
|
||||
|
|
@ -74,7 +74,7 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
|
|||
s = session(); svc = CrudService(s, default_eager_policy)
|
||||
items, _ = svc.list(Model, spec)
|
||||
|
||||
return render_template("options.html", items=items, value_attr=value_attr, label_path=label_path, getp=_getp)
|
||||
return render_template("crudkit/options.html", items=items, value_attr=value_attr, label_path=label_path, getp=_getp)
|
||||
|
||||
@bp.get("/<model>/frag/lis")
|
||||
def lis(model):
|
||||
|
|
@ -91,7 +91,7 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
|
|||
s = session(); svc = CrudService(s, default_eager_policy)
|
||||
rows, total = svc.list(Model, spec)
|
||||
pages = (ceil(total / per_page) if page and per_page else 1)
|
||||
return render_template("lis.html", items=rows, label_path=label_path, sublabel_path=sublabel_path, page=page or 1, per_page=per_page or 1, total=total, model=model, sort=sort, filters=filters, getp=_getp)
|
||||
return render_template("crudkit/lis.html", items=rows, label_path=label_path, sublabel_path=sublabel_path, page=page or 1, per_page=per_page or 1, total=total, model=model, sort=sort, filters=filters, getp=_getp)
|
||||
|
||||
@bp.get("/<model>/frag/rows")
|
||||
def rows(model):
|
||||
|
|
@ -108,7 +108,12 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
|
|||
s = session(); svc = CrudService(s, default_eager_policy)
|
||||
rows, total = svc.list(Model, spec)
|
||||
pages = max(1, ceil(total / per_page))
|
||||
return render_template("rows.html", items=rows, fields=fields, page=page, pages=pages, per_page=per_page, total=total, model=model, sort=sort, filters=filters, getp=_getp)
|
||||
|
||||
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,
|
||||
per_page=per_page, sort=sort, filters=filters, fields_csv=fields_csv)
|
||||
|
||||
return rows_html + pager_html
|
||||
|
||||
@bp.get("/<model>/frag/form")
|
||||
def form(model):
|
||||
|
|
@ -123,7 +128,7 @@ def make_fragments_blueprint(db_session_factory, registry: Dict[str, Any], *, na
|
|||
schema = build_form_schema(Model, s, obj=obj, include=include)
|
||||
|
||||
hx = request.args.get("hx", type=int) == 1
|
||||
return render_template("form.html", model=model, obj=obj, schema=schema, hx=hx)
|
||||
return render_template("crudkit/form.html", model=model, obj=obj, schema=schema, hx=hx)
|
||||
|
||||
def coerce_form_types(Model, data: dict) -> dict:
|
||||
"""Turn HTML string inputs into the Python types your columns expect."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue