Changeset 79:483deadeaec2

Show
Ignore:
Timestamp:
11/13/08 07:30:47 (22 months ago)
Author:
Nicolas ?vrard <nicoe@…>
Branch:
default
Message:

Splitted mimetypes and ids in ReportDict?

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • relatorio/reporting.py

    r72 r79  
    2222 
    2323import os, sys 
    24 import warnings 
    2524 
    2625import pkg_resources 
     
    7978    def add_factory(cls, abbr_mimetype, template_factory, id_function=None): 
    8079        """adds a template factory to the already known factories""" 
    81         if abbr_mimetype in cls.factories: 
    82             warnings.warn('You are overriding an already defined link.') 
    8380        cls.factories[abbr_mimetype] = template_factory 
    8481        if id_function is not None: 
     
    116113 
    117114 
    118 class ReportDict(dict): 
     115class ReportDict: 
    119116 
    120117    def __init__(self, *args, **kwargs): 
    121         self.mimetypes = set() 
    122         super(ReportDict, self).__init__(*args, **kwargs) 
     118        self.mimetypes = {} 
     119        self.ids = {} 
    123120 
    124121 
     
    131128 
    132129    def __init__(self, datafactory=DefaultFactory): 
    133         self.reports = {} 
     130        self.classes = {} 
    134131        self.default_factory = datafactory 
    135132        self.loader = MIMETemplateLoader(auto_reload=True) 
     
    148145        if data_factory is None: 
    149146            data_factory = self.default_factory 
    150         reports = self.reports.setdefault(klass, ReportDict()) 
     147        reports = self.classes.setdefault(klass, ReportDict()) 
    151148        report = Report(_absolute(template_path), mimetype, data_factory(), 
    152149                        self.loader) 
    153         reports[report_name] = report, mimetype 
    154         reports.setdefault(mimetype, []).append((report, report_name)) 
    155         if hasattr(reports, 'mimetypes'): 
    156             reports.mimetypes.add(mimetype) 
    157         else: 
    158             reports.mimetypes = set([mimetype]) 
     150        reports.ids[report_name] = report, mimetype 
     151        reports.mimetypes.setdefault(mimetype, []).append((report, report_name)) 
    159152 
     153    def by_mime(self, klass, mimetype): 
     154        """gets a list of report related to a class by specifying the mimetype 
     155        """ 
     156        return self.classes[klass].mimetypes[mimetype] 
     157 
     158    def by_id(self, klass, id): 
     159        """get a report related to a class by its id 
     160        """ 
     161        return self.classes[klass].ids[id]