{% from 'base/utils.html' import render_icon, arg_url_for %} {% macro build_url(record, endpoint, url_tuples, model, pk_field) %} {% if model != None %} {% set record = model.query.get(record[pk_field]) %} {% endif %} {% with url_params = {} -%} {%- do url_params.update(request.view_args if not endpoint else {}), url_params.update(request.args if not endpoint else {}) -%} {% for url_parameter, db_field in url_tuples %} {% if db_field.startswith(':') and '.' in db_field %} {%- set db_field = db_field[1:].split('.') -%} {%- do url_params.update({url_parameter: record[db_field[0]][db_field[1]]}) -%} {% elif db_field.startswith(':') %} {%- set db_field = db_field[1:] -%} {%- do url_params.update({url_parameter: record[db_field]}) -%} {% else %} {%- do url_params.update({url_parameter: db_field}) -%} {% endif %} {% endfor %} {{ arg_url_for(endpoint, url_params) }} {%- endwith %} {%- endmacro %} {% macro render_table(data, titles=None, primary_key='id', primary_key_title='#', caption=None, table_classes=None, header_classes=None, body_classes=None, responsive=False, responsive_class='table-responsive', safe_columns=None, urlize_columns=None, model=None, show_actions=False, actions_title='Actions', custom_actions=None, view_url=None, edit_url=None, delete_url=None, new_url=None, action_pk_placeholder=':id') %} {% if not titles %} {% set titles = get_table_titles(data, primary_key, primary_key_title) %} {% endif %} {% if responsive %}
{{ title[1] }} | {% endfor %} {% if show_actions %}{{ actions_title }} {% if new_url %} {{ render_icon('plus-circle-fill') }} {% endif %} | {% endif %}|
---|---|---|
{%- else -%} | {%- endif -%} {%- if value is string -%} {%- if safe_columns and key in safe_columns -%} {{ value|safe }} {%- else -%} {%- if urlize_columns and key in urlize_columns -%} {{ value|urlize }} {%- else -%} {{ value }} {%- endif -%} {%- endif -%} {%- elif value.__class__.__base__.__name__ == 'Enum' -%} {{ value.value }} {%- else -%} {{ value }} {%- endif -%} {%- if key == primary_key -%} {%- else -%} | {%- endif -%} {% endfor %} {% if show_actions %}{% if custom_actions %} {% for (action_name, action_icon, action_url) in custom_actions %} {{ render_icon(action_icon) }} {% endfor %} {% endif %} {% if view_url %} {{ render_icon('eye-fill') }} {% endif %} {% if edit_url -%} {{ render_icon('pencil-fill') }} {%- endif %} {% if delete_url %} {% endif %} | {% endif %}