Browse Source

Gestion de l'erreur : impossible de trouver le template

pull/22/head
Louis 11 years ago
parent
commit
42fdcf97d8
  1. 14
      songbook_core/errors.py
  2. 13
      songbook_core/templates.py

14
songbook_core/errors.py

@ -10,6 +10,20 @@ class SongbookError(Exception):
""" """
pass pass
class TemplateError(SongbookError):
"""Error during template generation"""
def __init__(self, original, message = None):
super(TemplateError, self).__init__()
self.original = original
self.message = message
def __str__(self):
if self.message is None:
return str(self.original)
else:
return self.message
class LatexCompilationError(SongbookError): class LatexCompilationError(SongbookError):
"""Error during LaTeX compilation.""" """Error during LaTeX compilation."""

13
songbook_core/templates.py

@ -2,13 +2,15 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
"""Template for .tex generation settings and utilities""" """Template for .tex generation settings and utilities"""
from jinja2 import Environment, FileSystemLoader, ChoiceLoader, PackageLoader from jinja2 import Environment, FileSystemLoader, ChoiceLoader, PackageLoader, TemplateNotFound
from jinja2.meta import find_referenced_templates as find_templates from jinja2.meta import find_referenced_templates as find_templates
import os import os
import re import re
import json import json
import locale import locale
from songbook_core import errors
_LATEX_SUBS = ( _LATEX_SUBS = (
(re.compile(r'\\'), r'\\textbackslash'), (re.compile(r'\\'), r'\\textbackslash'),
(re.compile(r'([{}_#%&$])'), r'\\\1'), (re.compile(r'([{}_#%&$])'), r'\\\1'),
@ -57,8 +59,15 @@ class TexRenderer(object):
self.texenv.trim_blocks = True self.texenv.trim_blocks = True
self.texenv.lstrip_blocks = True self.texenv.lstrip_blocks = True
# TODO: catch the TemplateNotFound try:
self.template = self.texenv.get_template(template) self.template = self.texenv.get_template(template)
except TemplateNotFound as exception:
raise errors.TemplateError(
exception,
"""Template "{template}" not found.""".format(
template=exception.name
),
)
# Trick to get the language code # Trick to get the language code
self.lang = locale.getdefaultlocale()[0].split('-')[0].split('_')[0] self.lang = locale.getdefaultlocale()[0].split('-')[0].split('_')[0]

Loading…
Cancel
Save