[FIX+IMP] account_financial_report: data can be None + no context mangling

Depending on the calling method, data can be something different from a dictionary
(like `None` if no keyword argument is provided), so this will crash. Example:
mis_builder is crashing in its tests.

We prevent that checking for a falsy value before trying to access the dictionary.

We also avoid context mangling for non AFR reports (those without the key
`account_financial_report_lang` in the dictionary), not callign to `with_context`
in that case.
pull/868/head
Pedro M. Baeza 2020-08-28 18:17:10 +02:00 committed by Jasmin Solanki
parent 1ae6530d59
commit 28f3aed4b0
2 changed files with 9 additions and 11 deletions

View File

@ -5,7 +5,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Account Financial Reports",
"version": "13.0.1.3.1",
"version": "13.0.1.3.2",
"category": "Reporting",
"summary": "OCA Financial Reports",
"author": "Camptocamp SA,"

View File

@ -9,19 +9,17 @@ class IrActionsReport(models.Model):
@api.model
def _prepare_account_financial_report_context(self, data):
lang = data.get("account_financial_report_lang")
return dict(self.env.context or {}, lang=lang) if lang else self.env.context
lang = data and data.get("account_financial_report_lang") or ""
return dict(self.env.context or {}, lang=lang) if lang else False
@api.model
def render_qweb_html(self, docids, data=None):
return super(
IrActionsReport,
self.with_context(self._prepare_account_financial_report_context(data)),
).render_qweb_html(docids, data)
context = self._prepare_account_financial_report_context(data)
obj = self.with_context(context) if context else self
return super(IrActionsReport, obj).render_qweb_html(docids, data)
@api.model
def render_xlsx(self, docids, data):
return super(
IrActionsReport,
self.with_context(self._prepare_account_financial_report_context(data)),
).render_xlsx(docids, data)
context = self._prepare_account_financial_report_context(data)
obj = self.with_context(context) if context else self
return super(IrActionsReport, obj).render_xlsx(docids, data)