Show
Ignore:
Timestamp:
07/15/08 10:26:58 (5 years ago)
Author:
Nicolas Evrard <nicoe@…>
Branch:
default
Message:

- Use PEAK entrypoints to load template engines

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • relatorio/reporting.py

    r13 r16  
    1919############################################################################### 
    2020 
    21 __revision__ = "$Id: reporting.py 14 2008-07-14 22:09:55Z nicoe $" 
     21__revision__ = "$Id: reporting.py 17 2008-07-15 10:26:58Z nicoe $" 
    2222__metaclass__ = type 
    2323 
     
    2525import warnings 
    2626import cStringIO 
    27 from genshi.template import MarkupTemplate, TextTemplate 
     27 
     28import pkg_resources 
    2829from genshi.template import TemplateLoader 
    29  
    30 from templates import NullTemplate 
    31 from templates.odt import Template as OOTemplate 
    32  
    33 try: 
    34     from templates.pdf import Template as PDFTemplate 
    35 except ImportError: 
    36     PDFTemplate = NullTemplate 
    37     warnings.warn("trml2pdf is not installed on your system. You will not " 
    38                   "be able to create PDF files.") 
    3930 
    4031def _absolute(path): 
     
    6657    """ 
    6758 
    68     factories = {'pdf': PDFTemplate, 
    69                  'oo.org': OOTemplate, 
    70                  'text': TextTemplate, 
    71                  'markup': MarkupTemplate} 
     59    factories = {} 
    7260 
    7361    mime_func = [_guess_type] 
     
    9280        if id_function is not None: 
    9381            cls.mime_func.append(id_function) 
     82 
     83    @classmethod 
     84    def load_template_engines(cls): 
     85        """loads template engines found via PEAK's pkg_resources""" 
     86        for entrypoint in pkg_resources.iter_entry_points( 
     87                                        'relatorio.templates.engines'): 
     88            try: 
     89                engine = entrypoint.load() 
     90                cls.add_factory(entrypoint.name, engine) 
     91            except ImportError: 
     92                warnings.warn('We were not able to load %s. You will not ' 
     93                              'be able to use its functonlities' % 
     94                              entrypoint.module_name) 
    9495 
    9596