diff --git a/schilder2000/instance.py b/schilder2000/instance.py index f74d22e9ad6bf054c7161037fff184a38b8723d5..978ed0ce932a2e7c7a989f595f040e5e5241a051 100644 --- a/schilder2000/instance.py +++ b/schilder2000/instance.py @@ -1,6 +1,6 @@ from . import db from .models import Schild -from .helpers import Blueprint +from .helpers import Blueprint, get_template_attribute from flask import url_for @@ -25,3 +25,20 @@ def schild_html(ident): @bp.route("/schild/<ident>.pdf") def schild_pdf(ident): return render_pdf(url_for(".schild_html", ident=ident)) + + +def list_templates(): + schild = Schild() + loader = bp.jinja_loader + for t in loader.list_templates(): + if t.startswith("_"): + continue + yield dict( + name=t, + description=get_template_attribute( + bp.real_template_name(t), + "description", + vars=dict(schild=schild), + default=None, + ), + ) diff --git a/schilder2000/templates/schild.html.j2 b/schilder2000/templates/schild.html.j2 index f70557106dbe46f6bb144db8ff3ea24691a109ba..8915deb7c68f0bf863b17d1ee67ecb0462468125 100644 --- a/schilder2000/templates/schild.html.j2 +++ b/schilder2000/templates/schild.html.j2 @@ -24,6 +24,13 @@ {%- for field in form -%} {{ render_field(field) }} {%- endfor -%} + <select name="template"> + {%- for t in templates -%} + <option value="{{ t.name }}"> + {{ t.description or t.name }} + </option> + {% endfor %} + </select> <div class="box"> <input type="submit" value="Schild erstellen" /> </div> diff --git a/schilder2000/views.py b/schilder2000/views.py index 9738086a26c22d40fd55b161b5d5d7da9b8938ee..953afa3b75507e1ae6dc82e3d89da1c9787548ca 100644 --- a/schilder2000/views.py +++ b/schilder2000/views.py @@ -1,4 +1,5 @@ from . import db +from .instance import list_templates from .models import Schild from flask import Blueprint, render_template, request, redirect, url_for @@ -30,7 +31,7 @@ def schild(ident): db.session.commit() else: form = SchildForm(obj=schild) - return render_template("schild.html.j2", schild=schild, form=form) + return render_template("schild.html.j2", schild=schild, form=form, templates=list_templates()) @bp.route("/create", methods=["GET", "POST"])