mirror of
https://github.com/bringout/oca-ocb-core.git
synced 2026-04-20 06:12:04 +02:00
18.0 vanilla
This commit is contained in:
parent
d72e748793
commit
0a7ae8db93
337 changed files with 399651 additions and 232598 deletions
57
odoo-bringout-oca-ocb-base/odoo/_monkeypatches/stdnum.py
Normal file
57
odoo-bringout-oca-ocb-base/odoo/_monkeypatches/stdnum.py
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
# ruff: noqa: PLC0415
|
||||
|
||||
_soap_clients = {}
|
||||
|
||||
|
||||
def new_get_soap_client(wsdlurl, timeout=30):
|
||||
# stdnum library does not set the timeout for the zeep Transport class correctly
|
||||
# (timeout is to fetch the wsdl and operation_timeout is to perform the call),
|
||||
# requiring us to monkey patch the get_soap_client function.
|
||||
# Can be removed when https://github.com/arthurdejong/python-stdnum/issues/444 is
|
||||
# resolved and the version of the dependency is updated.
|
||||
# The code is a copy of the original apart for the line related to the Transport class.
|
||||
# This was done to keep the code as similar to the original and to reduce the possibility
|
||||
# of introducing import errors, even though some imports are not in the requirements.
|
||||
# See https://github.com/odoo/odoo/pull/173359 for a more thorough explanation.
|
||||
if (wsdlurl, timeout) not in _soap_clients:
|
||||
try:
|
||||
from zeep.transports import Transport
|
||||
transport = Transport(operation_timeout=timeout, timeout=timeout) # operational_timeout added here
|
||||
from zeep import CachingClient
|
||||
client = CachingClient(wsdlurl, transport=transport).service
|
||||
except ImportError:
|
||||
# fall back to non-caching zeep client
|
||||
try:
|
||||
from zeep import Client
|
||||
client = Client(wsdlurl, transport=transport).service
|
||||
except ImportError:
|
||||
# other implementations require passing the proxy config
|
||||
try:
|
||||
from urllib import getproxies
|
||||
except ImportError:
|
||||
from urllib.request import getproxies
|
||||
# fall back to suds
|
||||
try:
|
||||
from suds.client import Client
|
||||
client = Client(
|
||||
wsdlurl, proxy=getproxies(), timeout=timeout).service
|
||||
except ImportError:
|
||||
# use pysimplesoap as last resort
|
||||
try:
|
||||
from pysimplesoap.client import SoapClient
|
||||
client = SoapClient(
|
||||
wsdl=wsdlurl, proxy=getproxies(), timeout=timeout)
|
||||
except ImportError:
|
||||
raise ImportError(
|
||||
'No SOAP library (such as zeep) found')
|
||||
_soap_clients[(wsdlurl, timeout)] = client
|
||||
return _soap_clients[(wsdlurl, timeout)]
|
||||
|
||||
|
||||
def patch_stdnum():
|
||||
try:
|
||||
from stdnum import util
|
||||
except ImportError:
|
||||
return # nothing to patch
|
||||
|
||||
util.get_soap_client = new_get_soap_client
|
||||
Loading…
Add table
Add a link
Reference in a new issue