EOX GitLab Instance

Skip to content
Snippets Groups Projects
Commit ea7b1429 authored by Fabian Schindler's avatar Fabian Schindler
Browse files

Allowing to set the service visibility

for a given product type or globally
parent 49943f20
No related branches found
No related tags found
No related merge requests found
Pipeline #21281 failed
......@@ -79,10 +79,12 @@ class EOxServerBackend(ItemBackend):
instance_name: str,
product_types: List[ItemToProductTypeMapping],
auto_create_product_types: bool = False,
automatic_visibilities: Optional[List[str]] = None,
):
self.product_types = product_types
self.instance_name = instance_name
self.auto_create_product_types = auto_create_product_types
self.automatic_visibilities = automatic_visibilities
path = os.path.join(instance_base_path, instance_name)
if path not in sys.path:
sys.path.append(path)
......@@ -219,6 +221,7 @@ class EOxServerBackend(ItemBackend):
storage,
product_type: Optional[ItemToProductTypeMapping],
create_product_type_model: bool = False,
automatic_visibilities: Optional[List[str]] = None,
):
from eoxserver.backends import models as backends
from eoxserver.resources.coverages import models
......@@ -226,6 +229,7 @@ class EOxServerBackend(ItemBackend):
register_stac_product,
create_product_type_from_stac_item,
)
from eoxserver.services import models as service_models
# TODO: flag to re-use product type?
if create_product_type_model:
......@@ -288,6 +292,27 @@ class EOxServerBackend(ItemBackend):
replace=replace,
)
if product_type:
service_visibilities = product_type.get(
"service_visibility", automatic_visibilities or []
)
else:
service_visibilities = automatic_visibilities or []
# make product visible for certain services
for service in service_visibilities:
(
service_visibility,
_,
) = service_models.ServiceVisibility.objects.get_or_create(
eo_object=product,
service=service,
)
service_visibility.visibility = True
service_visibility.full_clean()
service_visibility.save()
logger.info(
f"Successfully {'replaced' if replaced else 'registered'} "
f"Product {product.identifier}"
......@@ -344,7 +369,13 @@ class EOxServerBackend(ItemBackend):
models.collection_insert_eo_object(collection, product)
elif self.auto_create_product_types:
product = self._register_with_stac(
source, item, replace, storage, None, True
source,
item,
replace,
storage,
product_type=None,
create_product_type_model=True,
automatic_visibilities=self.automatic_visibilities,
)
else:
raise RegistrationError(f"{item} not matched to any product_type")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment