summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMagnus Hagander2025-09-17 13:07:33 +0000
committerMagnus Hagander2025-09-17 13:07:33 +0000
commitce808cec211055880bb29a3da073381aa268d453 (patch)
tree9a3fbd2c59ae1db9b53df77c07c227eed3876eb4
parentf083fbe98cd8118f9ef3d8cfd6d867b9e492b6d8 (diff)
Add template debug flag to jinjapdf.py
This will simply print the whole template output from jinja, before trying to load it as json. Helps debug when rendering problems generate output that just isn't json.
-rwxr-xr-xpostgresqleu/confreg/jinjapdf.py22
1 files changed, 15 insertions, 7 deletions
diff --git a/postgresqleu/confreg/jinjapdf.py b/postgresqleu/confreg/jinjapdf.py
index 2b51ead1..2b9a9f16 100755
--- a/postgresqleu/confreg/jinjapdf.py
+++ b/postgresqleu/confreg/jinjapdf.py
@@ -280,7 +280,7 @@ def test_inlist(v, thelist):
class JinjaRenderer(object):
- def __init__(self, rootdir, templatefile, fonts, debug=False, systemroot=None, orientation='portrait', pagesize='A4'):
+ def __init__(self, rootdir, templatefile, fonts, debug=False, jinjadebug=False, systemroot=None, orientation='portrait', pagesize='A4'):
if rootdir:
self.templatedir = os.path.join(rootdir, 'templates')
else:
@@ -291,6 +291,7 @@ class JinjaRenderer(object):
self.pagesize = landscape(self.pagesize)
self.debug = debug
+ self.jinjadebug = jinjadebug
self.border = self.pagebreaks = False
@@ -336,6 +337,12 @@ class JinjaRenderer(object):
def add_to_story(self, ctx):
ctx.update(self.context)
s = self.template.render(**ctx)
+ if self.jinjadebug:
+ print("Resulting json:")
+ print("------------------------")
+ print(s)
+ print("------------------------")
+ self.jinjadebug = False # For badges so we don't print one for each badge!
try:
js = json.loads(s)
except ValueError as e:
@@ -379,8 +386,8 @@ class JinjaRenderer(object):
class JinjaBadgeRenderer(JinjaRenderer):
- def __init__(self, rootdir, fonts, debug=False, border=False, pagebreaks=False, systemroot=None, orientation='portrait', pagesize='A4'):
- super(JinjaBadgeRenderer, self).__init__(rootdir, 'badge.json', fonts, debug=debug, systemroot=systemroot, orientation=orientation, pagesize=pagesize)
+ def __init__(self, rootdir, fonts, debug=False, jinjadebug=False, border=False, pagebreaks=False, systemroot=None, orientation='portrait', pagesize='A4'):
+ super(JinjaBadgeRenderer, self).__init__(rootdir, 'badge.json', fonts, debug=debug, jinjadebug=jinjadebug, systemroot=systemroot, orientation=orientation, pagesize=pagesize)
self.border = border
self.pagebreaks = pagebreaks
@@ -393,8 +400,8 @@ class JinjaBadgeRenderer(JinjaRenderer):
class JinjaTicketRenderer(JinjaRenderer):
- def __init__(self, rootdir, fonts, debug=False, systemroot=None):
- super(JinjaTicketRenderer, self).__init__(rootdir, 'ticket.json', fonts, debug=debug, systemroot=systemroot)
+ def __init__(self, rootdir, fonts, debug=False, jinjadebug=False, systemroot=None):
+ super(JinjaTicketRenderer, self).__init__(rootdir, 'ticket.json', fonts, debug=debug, jinjadebug=False, systemroot=systemroot)
def add_reg(self, reg, conference):
self.add_to_story({
@@ -431,6 +438,7 @@ if __name__ == "__main__":
parser.add_argument('--pagebreaks', action='store_true', help='Enable pagebreaks on written file')
parser.add_argument('--fontroot', type=str, help='fontroot for dejavu fonts')
parser.add_argument('--font', type=str, nargs=1, action='append', help='<font name>:<font path>')
+ parser.add_argument('--debug-template', action='store_true', help='Print template output before running')
args = parser.parse_args()
@@ -476,11 +484,11 @@ if __name__ == "__main__":
fonts.extend([f.split(':') for f in font])
if args.what == 'badge':
- renderer = JinjaBadgeRenderer(args.repopath, fonts, debug=True, border=args.borders, pagebreaks=args.pagebreaks)
+ renderer = JinjaBadgeRenderer(args.repopath, fonts, debug=True, jinjadebug=args.debug_template, border=args.borders, pagebreaks=args.pagebreaks)
for reg in a:
renderer.add_badge(reg, conference)
else:
- renderer = JinjaTicketRenderer(args.repopath, fonts, debug=True)
+ renderer = JinjaTicketRenderer(args.repopath, fonts, debug=True, jinjadebug=args.debug_template)
renderer.add_reg(a[0], conference)
with open(args.outputfile, 'wb') as output: