diff --git a/geonode/geoserver/helpers.py b/geonode/geoserver/helpers.py index b3a1ff73fe2..0b6a598a929 100755 --- a/geonode/geoserver/helpers.py +++ b/geonode/geoserver/helpers.py @@ -66,6 +66,7 @@ from geonode.catalogue.models import catalogue_post_save from geonode.layers.models import Dataset, Attribute, Style from geonode.layers.enumerations import LAYER_ATTRIBUTE_NUMERIC_DATA_TYPES +from geonode.resource.utils import KeywordHandler from geonode.resource.utils import is_remote_resource from geonode.utils import ( @@ -104,6 +105,15 @@ DEFAULT_STYLE_NAME = ["generic", "line", "point", "polygon", "raster"] +def _sync_geoserver_keywords_to_instance(instance, keywords): + if not keywords: + return + try: + KeywordHandler(instance=instance, keywords=list(keywords)).set_keywords() + except Exception: + logger.exception(f"Error while importing keywords from GeoServer for dataset {instance.name}") + + if not hasattr(settings, "OGC_SERVER"): msg = ( "Please configure OGC_SERVER when enabling geonode.geoserver." @@ -1969,6 +1979,8 @@ def sync_instance_with_geoserver(instance_id, *args, **kwargs): setattr(instance, key, get_dataset_storetype(values[key])) if updatemetadata: + _sync_geoserver_keywords_to_instance(instance, gs_resource.keywords) + # Get metadata links metadata_links = [] for link in instance.link_set.metadata():