diff --git a/geonode/services/serviceprocessors/wms.py b/geonode/services/serviceprocessors/wms.py index ea1f8be7b25..2564ab2b430 100644 --- a/geonode/services/serviceprocessors/wms.py +++ b/geonode/services/serviceprocessors/wms.py @@ -46,7 +46,7 @@ from ..enumerations import INDEXED from .. import models from .. import utils -from . import base +from . import base, get_service_handler logger = logging.getLogger(__name__) @@ -288,7 +288,13 @@ def __init__(self, url, geonode_service_id=None, *args, **kwargs): @property def parsed_service(self): cleaned_url, service, version, request = WmsServiceHandler.get_cleaned_url_params(self.ows_endpoint()) - _url, _parsed_service = WebMapService(cleaned_url.geturl(), version=version) + _parsed_service = get_service_handler( + cleaned_url.geturl(), + service.type, + service.id, + username=service.username if service.needs_authentication else None, + password=service.get_password() if service.needs_authentication else None, + ) return _parsed_service def probe(self): diff --git a/geonode/services/views.py b/geonode/services/views.py index 67f054e8a1a..915615e274e 100644 --- a/geonode/services/views.py +++ b/geonode/services/views.py @@ -97,7 +97,13 @@ def _get_service_handler(request, service): multiple Capabilities requests (this is a time saver on servers that feature many layers. """ - service_handler = get_service_handler(service.service_url, service.type, service.id) + service_handler = get_service_handler( + service.service_url, + service.type, + service.id, + username=service.username if service.needs_authentication else None, + password=service.get_password() if service.needs_authentication else None, + ) if not service_handler.geonode_service_id: service_handler.geonode_service_id = service.id # commented out due to jsonserializer error, will be replaced with cache @@ -320,6 +326,7 @@ def remove_service(request, service_id): elif request.method == "POST": service.dataset_set.all().delete() # by deleting the harvester we delete also the service + service_cache.delete(service.base_url) service.harvester.delete() messages.add_message(request, messages.INFO, _(f"Service {service.title} has been deleted")) return HttpResponseRedirect(reverse("services"))