From 74170e6138926a2e2ac40c8b8fa66bede667a32f Mon Sep 17 00:00:00 2001 From: Ronald Portier Date: Mon, 22 Apr 2019 12:35:40 +0200 Subject: [PATCH] [FIX] partner_multi_relation_tab. Prevent key errors. There are situations where tabs are added by fields_view_get, but not yet visible for other functions, presumably in other workers. Handle the errors caused by this. So far only seen in mapped function. --- partner_multi_relation_tabs/models/res_partner.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/partner_multi_relation_tabs/models/res_partner.py b/partner_multi_relation_tabs/models/res_partner.py index 8a15440db..cbf376881 100644 --- a/partner_multi_relation_tabs/models/res_partner.py +++ b/partner_multi_relation_tabs/models/res_partner.py @@ -33,6 +33,18 @@ class ResPartner(models.Model): result['fields'][fieldname] = original_fields[fieldname] return result + def mapped(self, func): + """Handle situation where mapped refers to not yet added tab field.""" + try: + return super(ResPartner, self).mapped(func) + except KeyError: + # Retry if error caused by tab field + if isinstance(func, basestring) and 'tab' in func: + for tab in self._get_tabs(): # get all tabs + self.add_field(tab) + return super(ResPartner, self).mapped(func) + raise + def _add_tab_pages(self, view): """Adds the relevant tabs to the partner's formview.""" # pylint: disable=no-member