From 6cba08b0020fa606fe1f465276656d815694b601 Mon Sep 17 00:00:00 2001 From: Samuel Mesa Date: Sat, 8 Dec 2018 16:37:44 -0500 Subject: [PATCH 1/4] Error GetFeature with parameter MAP in MapServer and QGIS Server Better handling of URL parameters. Error for URL with MAP parameter in Mapserver and QGIS SERVER --- owslib/feature/__init__.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/owslib/feature/__init__.py b/owslib/feature/__init__.py index ae15f8d62..df2341bc5 100644 --- a/owslib/feature/__init__.py +++ b/owslib/feature/__init__.py @@ -11,8 +11,10 @@ try: from urllib import urlencode + import urlparse except ImportError: from urllib.parse import urlencode + import urllib.parse as urlparse import logging from owslib.util import log from owslib.feature.schema import get_schema @@ -121,7 +123,6 @@ def getGETGetFeatureRequest(self, typename=None, filter=None, bbox=None, feature storedQueryParams = storedQueryParams or {} base_url = next((m.get('url') for m in self.getOperationByName('GetFeature').methods if m.get('type').lower() == method.lower())) - base_url = base_url if base_url.endswith("?") else base_url+"?" request = {'service': 'WFS', 'version': self.version, 'request': 'GetFeature'} @@ -158,9 +159,12 @@ def getGETGetFeatureRequest(self, typename=None, filter=None, bbox=None, feature if outputFormat is not None: request["outputFormat"] = outputFormat - data = urlencode(request, doseq=True) - - return base_url+data + url_parts = list(urlparse.urlparse(base_url)) + query = dict(urlparse.parse_qsl(url_parts[4])) + query.update(request) + url_parts[4] = urlencode(query, doseq=True) + + return urlparse.urlunparse(url_parts) def get_schema(self, typename): @@ -170,4 +174,3 @@ def get_schema(self, typename): return get_schema(self.url, typename, self.version) - From adb82563999bfc3362b07c77e1bf9e57ddb01169 Mon Sep 17 00:00:00 2001 From: Samuel Mesa Date: Mon, 7 Oct 2019 22:30:40 -0500 Subject: [PATCH 2/4] Update wfs200.py Patch url decode Mapsever with map parameter --- owslib/feature/wfs200.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/owslib/feature/wfs200.py b/owslib/feature/wfs200.py index e52bd558e..ed16ed5c6 100644 --- a/owslib/feature/wfs200.py +++ b/owslib/feature/wfs200.py @@ -29,6 +29,8 @@ except ImportError: from urllib.parse import urlencode +from urllib import unquote_plus + import logging from owslib.util import log @@ -228,7 +230,7 @@ def getfeature(self, typename=None, filter=None, bbox=None, featureid=None, # If method is 'Post', data will be None here - u = openURL(url, data, method, timeout=self.timeout, + u = openURL(unquote_plus(url), data, method, timeout=self.timeout, username=self.username, password=self.password) # check for service exceptions, rewrap, and return From 709810893ee64f3459d668d26bb1eaf2889518eb Mon Sep 17 00:00:00 2001 From: Samuel Mesa Date: Thu, 1 Apr 2021 08:33:08 -0500 Subject: [PATCH 3/4] Update __init__.py MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Actualizacion del parĂ¡metro query por filter para trabajar con Mapserver --- owslib/feature/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owslib/feature/__init__.py b/owslib/feature/__init__.py index df2341bc5..84793772c 100644 --- a/owslib/feature/__init__.py +++ b/owslib/feature/__init__.py @@ -132,7 +132,7 @@ def getGETGetFeatureRequest(self, typename=None, filter=None, bbox=None, feature elif bbox: request['bbox'] = self.getBBOXKVP(bbox,typename) elif filter: - request['query'] = str(filter) + request['filter'] = str(filter) if typename: typename = [typename] if type(typename) == type("") else typename if int(self.version.split('.')[0]) >= 2: From a317a5809b5ca6363f0ccb87dbff75ab7da86706 Mon Sep 17 00:00:00 2001 From: Samuel Mesa Date: Thu, 1 Apr 2021 11:59:52 -0500 Subject: [PATCH 4/4] Update util.py Cambiar Verify por False ya que falla con el VGA --- owslib/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/owslib/util.py b/owslib/util.py index b466d650e..2646395d8 100644 --- a/owslib/util.py +++ b/owslib/util.py @@ -135,7 +135,7 @@ def geturl(self): # @TODO: __getattribute__ for poking at response def openURL(url_base, data=None, method='Get', cookies=None, username=None, password=None, timeout=30, headers=None, - verify=True, cert=None): + verify=False, cert=None): """ Function to open URLs.