From 443fc32a7a72a3553456f8eba4d728e47a96126f Mon Sep 17 00:00:00 2001 From: Mattia Date: Mon, 27 Jan 2025 17:21:23 +0100 Subject: [PATCH] [Backport Fixes #12828] New remote datasets are not registered inside proxy allowed hosts when GeoNode runs asynchoronously --- geonode/proxy/utils.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/geonode/proxy/utils.py b/geonode/proxy/utils.py index 95bd7232e3a..05a54c748f0 100644 --- a/geonode/proxy/utils.py +++ b/geonode/proxy/utils.py @@ -2,7 +2,7 @@ from django.conf import settings from django.db.models import signals - +from django.utils.timezone import now site_url = urlsplit(settings.SITEURL) @@ -11,6 +11,8 @@ class ProxyUrlsRegistry: _first_init = True + _last_registry_load = None + _registry_reload_threshold = getattr(settings, "PROXY_RELOAD_REGISTRY_THRESHOLD_DAYS", 1) def initialize(self): from geonode.base.models import Link @@ -30,12 +32,16 @@ def initialize(self): signals.post_delete.connect(link_post_delete, sender=Link) self._first_init = False + self._last_registry_load = now() + def set(self, hosts): self.proxy_allowed_hosts = set(hosts) + self._last_registry_load = now() return self def clear(self): self.proxy_allowed_hosts = set() + self._last_registry_load = now() return self def register_host(self, host): @@ -45,6 +51,11 @@ def unregister_host(self, host): self.proxy_allowed_hosts.remove(host) def get_proxy_allowed_hosts(self): + if ( + self._last_registry_load is None + or (now() - self._last_registry_load).days >= self._registry_reload_threshold + ): + self.initialize() return self.proxy_allowed_hosts