CRUDkit fixes and changes.

This commit is contained in:
Yaro Kasear 2025-09-10 09:18:31 -05:00
parent 9d36d600bb
commit 7ddfe084ba
5 changed files with 98 additions and 43 deletions

View file

@ -1,7 +1,9 @@
import os
from flask import current_app
from jinja2 import Environment, FileSystemLoader, ChoiceLoader
from sqlalchemy.orm import class_mapper, RelationshipProperty
from flask import current_app
import os
from typing import List
def get_env():
app_loader = current_app.jinja_loader
@ -32,10 +34,15 @@ def render_field(field, value):
options=field.get('options', None)
)
def render_table(objects):
def render_table(objects, headers: List[str] | None = None):
env = get_env()
template = get_crudkit_template(env, 'table.html')
return template.render(objects=objects)
if not objects:
return template.render(fields=[], rows=[])
proj = getattr(objects[0], "__crudkit_projection__", None)
rows = [obj.as_dict(proj) for obj in objects]
fields = list(rows[0].keys())
return template.render(fields=fields, rows=rows, headers=headers)
def render_form(model_cls, values, session=None):
env = get_env()