Changeset 58:1180376ab3cf

Show
Ignore:
Timestamp:
08/20/08 16:41:47 (5 months ago)
Author:
Nicolas ?vrard <nicoe@…>
Branch:
default
Message:

Added feature to use image report in odf report
Made the demo_*py files importable

Files:
6 modified

Legend:

Unmodified
Added
Removed
  • examples/demo_chart.py

    r57 r58  
    77repos.add_report(Invoice, 'image/png', 'line_chart', report_name='line') 
    88 
    9 #Image 
    10 pie_report, _ = repos.reports[Invoice]['pie'] 
    11 file('pie.png', 'w').write(pie_report(inv).render().getvalue()) 
    12 hbar_report, _ = repos.reports[Invoice]['hbar'] 
    13 file('hbar.png', 'w').write(hbar_report(inv).render().getvalue()) 
    14 vbar_report, _ = repos.reports[Invoice]['vbar'] 
    15 file('vbar.png', 'w').write(vbar_report(inv).render().getvalue()) 
    16 line_report, _ = repos.reports[Invoice]['line'] 
    17 file('line.png', 'w').write(line_report(inv).render().getvalue()) 
     9if __name__ == '__main__': 
     10    pie_report, _ = repos.reports[Invoice]['pie'] 
     11    file('pie.png', 'w').write(pie_report(inv).render().getvalue()) 
     12    hbar_report, _ = repos.reports[Invoice]['hbar'] 
     13    file('hbar.png', 'w').write(hbar_report(inv).render().getvalue()) 
     14    vbar_report, _ = repos.reports[Invoice]['vbar'] 
     15    file('vbar.png', 'w').write(vbar_report(inv).render().getvalue()) 
     16    line_report, _ = repos.reports[Invoice]['line'] 
     17    file('line.png', 'w').write(line_report(inv).render().getvalue()) 
  • examples/demo_context.py

    r57 r58  
    55                 report_name='ConTeXt') 
    66#PDF 
    7 pdf_report, _ = repos.reports[Invoice]['ConTeXt'] 
    8 file('bonham_basic.pdf', 'w').write(pdf_report(inv).render().getvalue()) 
     7if __name__ == '__main__': 
     8    pdf_report, _ = repos.reports[Invoice]['ConTeXt'] 
     9    file('bonham_basic.pdf', 'w').write(pdf_report(inv).render().getvalue()) 
    910 
  • examples/demo_odf.py

    r57 r58  
    11from cStringIO import StringIO 
    22from common import Invoice, repos, inv 
     3import demo_chart 
    34 
    45repos.add_report(Invoice, 'application/vnd.oasis.opendocument.text', 
     
    1112                 'presentation.odp', report_name='presentation') 
    1213 
    13 # ODT 
    14 basic_report, _ = repos.reports[Invoice]['basic'] 
    15 file('bonham_basic.odt', 'w').write(basic_report(inv).render().getvalue()) 
    16 report, _ = repos.reports[Invoice]['complicated'] 
    17 file('bonham_complicated.odt', 'w').write(report(inv).render().getvalue()) 
     14if __name__ == '__main__': 
     15    # Add a chart to the invoice 
     16    inv['chart'] = repos.reports[Invoice]['pie'] 
    1817 
    19 # ODS 
    20 ods_report, _ = repos.reports[Invoice]['pivot'] 
    21 file('bonham_pivot.ods', 'w').write(ods_report(inv).render().getvalue()) 
     18    # ODT 
     19    basic_report, _ = repos.reports[Invoice]['basic'] 
     20    file('bonham_basic.odt', 'w').write(basic_report(inv).render().getvalue()) 
     21    report, _ = repos.reports[Invoice]['complicated'] 
     22    file('bonham_complicated.odt', 'w').write(report(inv).render().getvalue()) 
    2223 
    23 # ODP 
    24 odp_report, _ = repos.reports[Invoice]['presentation'] 
    25 file('bonham_presentation.odp', 'w').write(odp_report(inv).render().getvalue()) 
     24    # ODS 
     25    ods_report, _ = repos.reports[Invoice]['pivot'] 
     26    file('bonham_pivot.ods', 'w').write(ods_report(inv).render().getvalue()) 
     27 
     28    # ODP 
     29    odp_report, _ = repos.reports[Invoice]['presentation'] 
     30    file('bonham_presentation.odp', 'w').write(odp_report(inv).render().getvalue()) 
  • relatorio/reporting.py

    r54 r58  
    120120 
    121121    def __call__(self, obj, **kwargs): 
    122         data = {} 
     122        data = kwargs.copy() 
    123123        data['o'] = obj 
    124         data['args'] = kwargs 
    125124        return data 
    126125 
  • relatorio/templates/opendocument.py

    r46 r58  
    3535import genshi.output 
    3636from genshi.template import MarkupTemplate 
     37from relatorio.reporting import Report 
    3738 
    3839GENSHI_EXPR = re.compile(r'''((/)?(for|choose|otherwise|when|if|with)( (\w+)=["'](.*)["']|)|.*)''') 
     
    5556class ImageHref: 
    5657     
    57     def __init__(self, zipfile): 
     58    def __init__(self, zipfile, context): 
    5859        self.zip = zipfile 
     60        self.context = context.copy() 
     61        self.obj = self.context.pop('o') 
    5962 
    6063    def __call__(self, expr, name): 
    6164        bitstream, mimetype = expr 
     65        if isinstance(bitstream, Report): 
     66            bitstream = bitstream(self.obj, **self.context).render() 
    6267        bitstream.seek(0) 
    6368        file_content = bitstream.read() 
     
    275280    def generate(self, *args, **kwargs): 
    276281        serializer = OOSerializer(self.filepath) 
    277         kwargs['make_href'] = ImageHref(serializer.outzip) 
     282        kwargs['make_href'] = ImageHref(serializer.outzip, kwargs) 
    278283        generate_all = super(Template, self).generate(*args, **kwargs) 
    279284