|
34 | 34 | from django.template.defaultfilters import slugify |
35 | 35 | from requests.auth import HTTPBasicAuth |
36 | 36 | from geonode.layers.models import Dataset |
37 | | -from geonode.base.models import ResourceBase |
| 37 | +from geonode.base.models import Link, ResourceBase |
38 | 38 | from geonode.layers.enumerations import GXP_PTYPES |
39 | 39 | from geonode.thumbs.thumbnails import create_thumbnail |
40 | 40 |
|
@@ -216,11 +216,11 @@ def wms_call(self, kind="GetCapabilities", override_version=None, additional_par |
216 | 216 | service = has_basic_auth.first() |
217 | 217 | basic_auth = HTTPBasicAuth(service.username, service.get_password()) |
218 | 218 |
|
219 | | - get_capabilities_response = self.http_session.get( |
| 219 | + response = self.http_session.get( |
220 | 220 | self.get_ogc_wms_url(wms_url, version=_version), params=params, auth=basic_auth |
221 | 221 | ) |
222 | | - get_capabilities_response.raise_for_status() |
223 | | - return get_capabilities_response |
| 222 | + response.raise_for_status() |
| 223 | + return response |
224 | 224 |
|
225 | 225 | def get_num_available_resources(self) -> int: |
226 | 226 | data = self._get_data() |
@@ -549,13 +549,28 @@ def finalize_resource_update( |
549 | 549 | overwrite=True, |
550 | 550 | ) |
551 | 551 | # ref GeoNode #13010 |
552 | | - # A describeLayer is perfomed to see if we can add the WDS link |
| 552 | + # A describeLayer is perfomed to see if we can add the WDS link |
553 | 553 | # to the resource |
554 | 554 | response = self.wms_call( |
555 | | - kind="DescribeLayer", |
556 | | - override_version="1.1.1", |
557 | | - additional_params={"layers": geonode_resource.alternate} |
| 555 | + kind="DescribeLayer", override_version="1.1.1", additional_params={"layers": geonode_resource.alternate} |
558 | 556 | ) |
| 557 | + # check if the owsType is WFS |
| 558 | + if response: |
| 559 | + if ( |
| 560 | + etree.fromstring(response.content, parser=XML_PARSER).find("LayerDescription").attrib.get("owsType") |
| 561 | + == "WFS" |
| 562 | + ): |
| 563 | + Link.objects.get_or_create( |
| 564 | + resource=geonode_resource, |
| 565 | + url=geonode_resource.ows_url, |
| 566 | + name=f"OGC WFS: {geonode_resource.workspace} Service", |
| 567 | + defaults=dict( |
| 568 | + extension="html", |
| 569 | + url=geonode_resource.ows_url, |
| 570 | + mime="text/html", |
| 571 | + link_type="OGC:WFS", |
| 572 | + ), |
| 573 | + ) |
559 | 574 |
|
560 | 575 |
|
561 | 576 | def _get_nsmap(original: typing.Dict): |
|
0 commit comments