Granular replacement of fragments!

This commit is contained in:
Yaro Kasear 2025-09-02 15:28:42 -05:00
parent cfb25f098a
commit 699a866a21

View file

@ -1,13 +1,29 @@
from jinja2 import Environment, FileSystemLoader
from jinja2 import Environment, FileSystemLoader, ChoiceLoader
from sqlalchemy.orm import class_mapper, RelationshipProperty
from flask import current_app
import os
FRAGMENT_PATH = os.path.join(os.path.dirname(__file__), 'templates')
env = Environment(loader=FileSystemLoader(FRAGMENT_PATH))
def get_env():
app_loader = current_app.jinja_loader
default_path = os.path.join(os.path.dirname(__file__), 'templates')
fallback_loader = FileSystemLoader(default_path)
env = Environment(loader=ChoiceLoader([
app_loader,
fallback_loader
]))
return env
def get_crudkit_template(env, name):
try:
return env.get_template(f'crudkit/{name}')
except Exception:
return env.get_template(name)
def render_field(field, value):
print(field)
template = env.get_template('field.html')
env = get_env()
template = get_crudkit_template(env, 'field.html')
return template.render(
field_name=field['name'],
field_label=field.get('label', field['name']),
@ -16,13 +32,14 @@ def render_field(field, value):
options=field.get('options', None)
)
def render_table(objects):
template = env.get_template('table.html')
env = get_env()
template = get_crudkit_template(env, 'table.html')
return template.render(objects=objects)
def render_form(model_cls, values, session=None):
template = env.get_template('form.html')
env = get_env()
template = get_crudkit_template(env, 'form.html')
fields = []
fk_fields = set()