CRUDkit fixes and changes.
This commit is contained in:
parent
9d36d600bb
commit
7ddfe084ba
5 changed files with 98 additions and 43 deletions
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -1,12 +1,20 @@
|
|||
<table>
|
||||
{% if objects %}
|
||||
{% if rows %}
|
||||
<thead>
|
||||
<tr>
|
||||
{% for field in objects[0].__table__.columns %}<th>{{ field.name }}</th>{% endfor %}
|
||||
{% if headers %}
|
||||
{% for header in headers %}<th>{{ header }}</th>{% endfor %}
|
||||
{% else %}
|
||||
{% for field in fields if field != "id" %}<th>{{ field }}</th>{% endfor %}
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% for obj in objects %}
|
||||
<tr>{% for field in obj.__table__.columns %}<td>{{ obj[field.name] }}</td>{% endfor %}</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for row in rows %}
|
||||
<tr>{% for _, cell in row.items() if _ != "id" %}<td>{{ cell if cell else "-" }}</td>{% endfor %}</tr>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<tr><th>No data.</th></tr>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<tr><th>No data.</th></tr>
|
||||
{% endif %}
|
||||
</tbody>
|
||||
</table>
|
||||
Loading…
Add table
Add a link
Reference in a new issue