diff --git a/addons/report/controllers/main.py b/addons/report/controllers/main.py index 01992d64c60..c6bc13d38f8 100644 --- a/addons/report/controllers/main.py +++ b/addons/report/controllers/main.py @@ -50,12 +50,7 @@ class ReportController(Controller): if data.get('options'): options_data = simplejson.loads(data['options']) if data.get('context'): - # Ignore 'lang' here, because the context in data is the one from the webclient *but* if - # the user explicitely wants to change the lang, this mechanism overwrites it. - data_context = simplejson.loads(data['context']) - if data_context.get('lang'): - del data_context['lang'] - context.update(data_context) + context.update(simplejson.loads(data['context'])) if converter == 'html': html = report_obj.get_html(cr, uid, docids, reportname, data=options_data, context=context) diff --git a/addons/report/models/report.py b/addons/report/models/report.py index 5bfc79733e4..cbbee7fcebd 100644 --- a/addons/report/models/report.py +++ b/addons/report/models/report.py @@ -34,8 +34,10 @@ import lxml.html import cStringIO import subprocess from distutils.version import LooseVersion -from functools import partial -from pyPdf import PdfFileWriter, PdfFileReader +try: + from pyPdf import PdfFileWriter, PdfFileReader +except ImportError: + PdfFileWriter = PdfFileReader = None _logger = logging.getLogger(__name__) @@ -69,6 +71,23 @@ class Report(osv.Model): public_user = None + MINIMAL_HTML_PAGE = """ + + + + + + + + + + {subst} + + + {body} + +""" + #-------------------------------------------------------------------------- # Extension of ir_ui_view.render with arguments frequently used in reports #-------------------------------------------------------------------------- @@ -115,7 +134,6 @@ class Report(osv.Model): website = None if request and hasattr(request, 'website'): website = request.website - context.update(translatable=context.get('lang') != request.website.default_lang_code) values.update({ 'time': time, 'translate_doc': translate_doc, @@ -179,11 +197,6 @@ class Report(osv.Model): footerhtml = [] base_url = self.pool['ir.config_parameter'].get_param(cr, uid, 'web.base.url') - # Minimal page renderer - view_obj = self.pool['ir.ui.view'] - render_minimal = partial(view_obj.render, cr, uid, 'report.minimal_layout', context=context) - - # The received html report must be simplified. We convert it in a xml tree # in order to extract headers, bodies and footers. try: @@ -194,12 +207,12 @@ class Report(osv.Model): for node in root.xpath("//div[@class='header']"): body = lxml.html.tostring(node) - header = render_minimal(dict(css=css, subst=subst, body=body, base_url=base_url)) + header = self.MINIMAL_HTML_PAGE.format(css=css, subst=subst, body=body, base_url=base_url) headerhtml.append(header) for node in root.xpath("//div[@class='footer']"): body = lxml.html.tostring(node) - footer = render_minimal(dict(css=css, subst=subst, body=body, base_url=base_url)) + footer = self.MINIMAL_HTML_PAGE.format(css=css, subst=subst, body=body, base_url=base_url) footerhtml.append(footer) for node in root.xpath("//div[@class='page']"): @@ -216,7 +229,7 @@ class Report(osv.Model): reportid = False body = lxml.html.tostring(node) - reportcontent = render_minimal(dict(css=css, subst='', body=body, base_url=base_url)) + reportcontent = self.MINIMAL_HTML_PAGE.format(css=css, subst='', body=body, base_url=base_url) # FIXME: imo the best way to extract record id from html reports is by using the # qweb branding. As website editor is not yet splitted in a module independant from diff --git a/addons/report/views/layouts.xml b/addons/report/views/layouts.xml index e5ce9a896fb..f9c0ea7ef73 100644 --- a/addons/report/views/layouts.xml +++ b/addons/report/views/layouts.xml @@ -1,41 +1,55 @@ - - report.layout - - primary - qweb - - - - data_report_margin_top if data_report_margin_top else None - data_report_header_spacing if data_report_header_spacing else None - data_report_dpi if data_report_dpi else None - - - - - - +