From b317e4a23f95891ab1f724c2cbb38803759bcf22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20Br=C3=BCckl?= Date: Fri, 6 Apr 2018 11:39:35 +0200 Subject: [PATCH] Bugfix: Problem mit Deadlock behoben --- ext/custom-addons/dp_custom/models/res_partner.py | 2 +- .../dp_custom/wizards/portal_assign_company.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ext/custom-addons/dp_custom/models/res_partner.py b/ext/custom-addons/dp_custom/models/res_partner.py index 68e369bc..4e594046 100644 --- a/ext/custom-addons/dp_custom/models/res_partner.py +++ b/ext/custom-addons/dp_custom/models/res_partner.py @@ -216,7 +216,7 @@ class Partner(models.Model): _("Die Lieferbedingung mit dem Code \'%s\' kann nicht zugeordnet werden") % vals['incoterm']) if vals.get('company_odoo_id', False): - parent_id = self.env['res.partner'].search([('id', '=', vals['company_odoo_id'])]) + parent_id = self.env['res.partner'].with_context(active_test=False).search([('id', '=', vals['company_odoo_id'])]) if parent_id: vals['parent_id'] = parent_id.id vals['street'] = parent_id.street diff --git a/ext/custom-addons/dp_custom/wizards/portal_assign_company.py b/ext/custom-addons/dp_custom/wizards/portal_assign_company.py index 3e34d535..e68560f2 100644 --- a/ext/custom-addons/dp_custom/wizards/portal_assign_company.py +++ b/ext/custom-addons/dp_custom/wizards/portal_assign_company.py @@ -52,9 +52,12 @@ class PortalAssignCompany(models.TransientModel): if not partner: raise ValidationError(_('Der Partner konnte nicht gefuden werden.')) + # Wichtig hier ist, dass dieser Call vor dem ersten Write stattfindet, da das Portal + # parallel einen Call absetzt, dann dann blockieren würde. + self.send_to_portal(partner.portal_id, partner.id) partner.write({'portal_pending': False, 'active': True}) - return self.send_to_portal(partner.portal_id, partner.id) + return True def button_assign(self): self.ensure_one() @@ -63,10 +66,14 @@ class PortalAssignCompany(models.TransientModel): if not partner: raise ValidationError(_('Der Partner konnte nicht gefuden werden.')) portal_id = partner.portal_id + + # Wichtig hier ist, dass dieser Call vor dem ersten Write stattfindet, da das Portal + # parallel einen Call absetzt, dann dann blockieren würde. + self.send_to_portal(portal_id, self.main_partner_id.id) partner.unlink() if not self.main_partner_id.portal_id: self.main_partner_id.portal_id = portal_id - self.send_to_portal(self.main_partner_id.portal_id, self.main_partner_id.id) + return self.env.ref('base.action_partner_form').read()[0] return {'type': 'ir.actions.act_window_close'}