From a1c233b9f2b679cf59253b417ca1f2ce0c129e21 Mon Sep 17 00:00:00 2001 From: Andreas Osim Date: Wed, 19 Aug 2020 14:59:24 +0200 Subject: [PATCH] Fix for sending pricelist for existing (assigned) partner --- .../wizards/portal_assign_company.py | 48 +++++++++++++------ 1 file changed, 33 insertions(+), 15 deletions(-) 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 359a9aae..b04f3740 100644 --- a/ext/custom-addons/dp_custom/wizards/portal_assign_company.py +++ b/ext/custom-addons/dp_custom/wizards/portal_assign_company.py @@ -7,6 +7,7 @@ import requests from odoo import tools, api, fields, models, _ from odoo.exceptions import ValidationError, UserError +import ssl class PortalAssignCompany(models.TransientModel): _name = 'portal.assign_company' @@ -44,21 +45,36 @@ class PortalAssignCompany(models.TransientModel): 'portal_id': lPortal_id, 'company_odoo_id': odoo_id } - response = requests.post(portal_url + '/api/v1/set-odoo-id/?secret=' + application_id, - data=json.dumps(data)) - if response.status_code != 200: - error_content = True - error_msg = "" - try: - error_msg = json.loads(response.content.decode()) - except Exception: - error_content = False - if error_content and error_msg.get('errors'): - raise UserError(_('%s') % (error_msg.get('errors')[0])) - else: - raise UserError(_('Die Odoo id konnte für den Partner nicht gesetzt werden. ' - 'Status Code: %s, Reason: %s') % (response.status_code, response.reason)) + try: + _create_unverified_https_context = ssl._create_unverified_context + except AttributeError: + # Legacy Python that doesn't verify HTTPS certificates by default + pass + else: + # Handle target environment that doesn't support HTTPS verification + ssl._create_default_https_context = _create_unverified_https_context + + try: + response = requests.post(portal_url + '/api/v1/set-odoo-id/?secret=' + application_id, + data=json.dumps(data)) + + if response.status_code != 200: + error_content = True + error_msg = "" + try: + error_msg = json.loads(response.content.decode()) + except Exception: + error_content = False + + if error_content and error_msg.get('errors'): + raise UserError(_('%s') % (error_msg.get('errors')[0])) + else: + raise UserError(_('Die Odoo id konnte für den Partner nicht gesetzt werden. ' + 'Status Code: %s, Reason: %s') % (response.status_code, response.reason)) + + except Exception: + pass def button_activate(self): self.ensure_one() @@ -69,7 +85,7 @@ class PortalAssignCompany(models.TransientModel): # Wichtig hier ist, dass dieser Call vor dem ersten Write stattfindet, da das Portal # parallel einen Call absetzt, der dann blockieren würde. self.send_to_portal(partner.portal_id, partner.id) - partner.write({'portal_pending': False, 'active': True}) + partner.write({'portal_pending': False, 'portal_pending': False, 'active': True}) return True @@ -88,6 +104,8 @@ class PortalAssignCompany(models.TransientModel): if not self.main_partner_id.portal_id: self.main_partner_id.portal_id = portal_id + self.env['res.partner'].export_portal_partner_pricelist(self.main_partner_id) + action = self.env.ref('base.action_partner_form').read()[0] action['res_id'] = self.main_partner_id.id return action