Add filter to list all templates in a directory
authorMagnus Hagander <magnus@hagander.net>
Tue, 27 Oct 2020 11:09:55 +0000 (12:09 +0100)
committerMagnus Hagander <magnus@hagander.net>
Wed, 28 Oct 2020 15:39:27 +0000 (16:39 +0100)
pgweb/core/templatetags/pgfilters.py

index 213ff4d6f489b10bf14ce3e98212d813c0a7691e..f2fc82320670949b5ac9d19e9f36ab54433f323d 100644 (file)
@@ -2,7 +2,10 @@ from django.template.defaultfilters import stringfilter
 from django import template
 from django.utils.safestring import mark_safe
 from django.template.loader import get_template
+from django.conf import settings
 
+import os
+from pathlib import Path
 import json
 import pynliner
 
@@ -103,6 +106,13 @@ def joinandor(value, andor):
     return ", ".join([str(x) for x in value[:-1]]) + ' ' + andor + ' ' + str(value[-1])
 
 
+@register.filter()
+def list_templates(value):
+    for f in Path(os.path.join(settings.PROJECT_ROOT, '../templates/', value)).iterdir():
+        if f.is_file() and f.suffix == '.html':
+            yield f.stem
+
+
 @register.simple_tag(takes_context=True)
 def git_changes_link(context):
     return mark_safe('<a href="https://git.postgresql.org/gitweb/?p=pgweb.git;a=history;f=templates/{}">View</a> change history.'.format(context.template_name))