Skip to content

Commit a2bf0f0

Browse files
modular
1 parent 6385c7a commit a2bf0f0

File tree

7 files changed

+34
-22
lines changed

7 files changed

+34
-22
lines changed

docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,8 @@ services:
142142
healthcheck:
143143
test: "pg_isready -d postgres -U postgres"
144144
# uncomment to enable remote connections to postgres
145-
#ports:
146-
# - "5432:5432"
145+
ports:
146+
- "5432:5432"
147147

148148
# Vanilla Redis service. This is needed by celery
149149
redis:

geonode/base/models.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
from geonode import GeoNodeException
6363

6464
from geonode.base import enumerations
65+
from geonode.geoserver.ows import _wms_link
6566
from geonode.singleton import SingletonModel
6667
from geonode.groups.conf import settings as groups_settings
6768
from geonode.base.bbox_utils import BBOXHelper, polygon_from_bbox
@@ -952,6 +953,13 @@ def compact_permission_labels(cls):
952953
def raw_abstract(self):
953954
return self._remove_html_tags(self.abstract)
954955

956+
@property
957+
def can_be_downloaded(self):
958+
return self.subtype in ["vector", "raster", "vector_time"]
959+
960+
def can_have_wfs_links(self):
961+
return self.subtype == "vector"
962+
955963
@property
956964
def raw_purpose(self):
957965
return self._remove_html_tags(self.purpose)
@@ -1913,6 +1921,19 @@ def get_linked_resources(self, as_target: bool = False):
19131921
if as_target
19141922
else LinkedResource.get_linked_resources(source=self)
19151923
)
1924+
1925+
def prepare_wms_links(self, wms_url, identifier, bbox, srid, height, width):
1926+
types = [
1927+
("jpg", _("JPEG"), "image/jpeg"),
1928+
("pdf", _("PDF"), "application/pdf"),
1929+
("png", _("PNG"), "image/png"),
1930+
]
1931+
output = []
1932+
for ext, name, mime in types:
1933+
url = _wms_link(wms_url, identifier, mime, height, width, srid, bbox)
1934+
output.append((ext, name, mime, url))
1935+
return output
1936+
19161937

19171938

19181939
class LinkManager(models.Manager):

geonode/geoserver/helpers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1012,7 +1012,7 @@ def set_attributes_from_geoserver(layer, overwrite=False):
10121012
f"Error while retrieving info for {layer.subtype} '{layer.alternate or layer.typename}'", exc_info=True
10131013
)
10141014
attribute_map = []
1015-
elif layer.subtype in {"vector", "tileStore", "remote", "wmsStore", "vector_time"}:
1015+
elif layer.subtype in WPS_ACCEPTABLE_FORMATS.values():
10161016
typename = layer.alternate if layer.alternate else layer.typename
10171017
logger.info(f"Getting WFS info for {layer.subtype} '{typename}'")
10181018
dft_url_path = re.sub(r"\/wms\/?$", "/", server_url)

geonode/geoserver/ows.py

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -354,16 +354,3 @@ def _wms_link(wms_url, identifier, mime, height, width, srid=None, bbox=None):
354354
wms_params["bbox"] = bbox
355355
_query_separator = "?" if not wms_url.endswith("?") else ""
356356
return f"{wms_url}{_query_separator}{urlencode(wms_params)}"
357-
358-
359-
def wms_links(wms_url, identifier, bbox, srid, height, width):
360-
types = [
361-
("jpg", _("JPEG"), "image/jpeg"),
362-
("pdf", _("PDF"), "application/pdf"),
363-
("png", _("PNG"), "image/png"),
364-
]
365-
output = []
366-
for ext, name, mime in types:
367-
url = _wms_link(wms_url, identifier, mime, height, width, srid, bbox)
368-
output.append((ext, name, mime, url))
369-
return output

geonode/layers/download_handler.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ def download_url(self):
7575
resource = self.get_resource()
7676
if not resource:
7777
return None
78-
if resource.subtype not in ["vector", "raster", "vector_time"]:
78+
if not resource.can_be_downloaded:
7979
logger.info("Download URL is available only for datasets that have been harvested and copied locally")
8080
return None
8181

@@ -117,7 +117,7 @@ def process_dowload(self, resource=None):
117117
logger.error("The format provided is not valid for the selected resource")
118118
return JsonResponse({"error": "The format provided is not valid for the selected resource"}, status=500)
119119

120-
_format = "application/zip" if resource.is_vector() else "image/tiff"
120+
_format = resource.download_format()
121121
# getting default payload
122122
tpl = get_template("geoserver/dataset_download.xml")
123123
ctx = {"alternate": resource.alternate, "download_format": download_format or _format}

geonode/layers/models.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,11 +394,15 @@ def get_linked_resources(self, as_target: bool = False):
394394

395395
@property
396396
def download_url(self):
397-
if self.subtype not in ["vector", "raster", "vector_time"]:
397+
if self.can_be_downloaded:
398398
logger.info("Download URL is available only for datasets that have been harvested and copied locally")
399399
return None
400400
return build_absolute_uri(reverse("dataset_download", args=(self.alternate,)))
401401

402+
@property
403+
def download_format(self):
404+
return "application/zip" if self.is_vector() else "image/tiff"
405+
402406
@property
403407
def maplayers(self):
404408
from geonode.maps.models import MapLayer

geonode/utils.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1211,7 +1211,7 @@ def set_resource_default_links(instance, layer, prune=False, **kwargs):
12111211
logger.debug(" -- Resource Links[Prune old links]...done!")
12121212

12131213
if check_ogc_backend(geoserver.BACKEND_PACKAGE):
1214-
from geonode.geoserver.ows import wcs_links, wfs_links, wms_links
1214+
from geonode.geoserver.ows import wcs_links, wfs_links
12151215
from geonode.geoserver.helpers import ogc_server_settings, gs_catalog
12161216

12171217
# Compute parameters for the new links
@@ -1273,7 +1273,7 @@ def set_resource_default_links(instance, layer, prune=False, **kwargs):
12731273
# Set download links for WMS, WCS or WFS and KML
12741274
logger.debug(" -- Resource Links[Set download links for WMS, WCS or WFS and KML]...")
12751275
instance_ows_url = f"{instance.ows_url}?" if instance.ows_url else f"{ogc_server_settings.public_url}ows?"
1276-
links = wms_links(instance_ows_url, instance.alternate, bbox, srid, height, width)
1276+
links = instance.prepare_wms_links(instance_ows_url, instance.alternate, bbox, srid, height, width)
12771277

12781278
for ext, name, mime, wms_url in links:
12791279
try:
@@ -1452,7 +1452,7 @@ def set_resource_default_links(instance, layer, prune=False, **kwargs):
14521452
),
14531453
)
14541454

1455-
if instance.subtype == "vector":
1455+
if instance.can_have_wfs_links:
14561456
ogc_wfs_url = instance.ows_url or urljoin(ogc_server_settings.public_url, "ows")
14571457
ogc_wfs_name = f"OGC WFS: {instance.workspace} Service"
14581458
if (

0 commit comments

Comments
 (0)