From 23ca8cfb91e61f94290909fa40e447ef42d64bff Mon Sep 17 00:00:00 2001 From: sbsimo Date: Tue, 23 Jan 2018 11:18:53 +0100 Subject: [PATCH] add authorization when checking fields on chart save --- django_project/wfs_harvest/utils.py | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/django_project/wfs_harvest/utils.py b/django_project/wfs_harvest/utils.py index e66d68f..1693bfa 100644 --- a/django_project/wfs_harvest/utils.py +++ b/django_project/wfs_harvest/utils.py @@ -7,22 +7,24 @@ from geonode.layers.models import Layer from django.conf import settings +USER = settings.OGC_SERVER['default']['USER'] +PASSWD = settings.OGC_SERVER['default']['PASSWORD'] + def get_fields(layer_id): - layer = Layer.objects.get(pk=layer_id) - lyrname = layer.typename - params = urllib.urlencode({ - 'service':'WFS', - 'version':'1.1.0', - 'request':'DescribeFeatureType', - 'typename':lyrname - }) + lyr = Layer.objects.get(pk=layer_id) + wfs_baseurl = lyr.link_set.get(link_type='OGC:WFS').url - wfs_request = urllib.urlopen('http://localhost/geoserver/ows?%s' - % params) - content = wfs_request.read() + payload = { + 'service': 'WFS', + 'version': '1.1.0', + 'request': 'DescribeFeatureType', + 'typename': lyr.typename, + } + + r = requests.get(wfs_baseurl, params=payload, auth=(USER, PASSWD)) + root = ET.fromstring(r.text) - root = ET.fromstring(content) namespace = root.tag.split('}')[0] + '}' xpath = ('./{0}complexType/{0}complexContent/' '{0}extension/{0}sequence/{0}element').format(namespace) @@ -44,9 +46,6 @@ def get_featno(layer_id): lyr = Layer.objects.get(pk=layer_id) wfs_baseurl = lyr.link_set.get(link_type='OGC:WFS').url - USER = settings.OGC_SERVER['default']['USER'] - PASSWD = settings.OGC_SERVER['default']['PASSWORD'] - payload = { 'service': 'WFS', 'version': '1.1.0',