def pre_delete_layer(instance, sender, **kwargs): """ Remove any associated style to the layer, if it is not used by other layers. Default style will be deleted in post_delete_layer """ if instance.remote_service is not None and instance.remote_service.method == INDEXED: # we need to delete the maplayers here because in the post save layer.remote_service is not available anymore # REFACTOR from geonode.maps.models import MapLayer logger.debug( "Going to delete associated maplayers for [%s]", instance.alternate.encode('utf-8')) MapLayer.objects.filter( name=instance.alternate, ows_url=instance.ows_url).delete() return logger.debug( "Going to delete the styles associated for [%s]", instance.alternate.encode('utf-8')) ct = ContentType.objects.get_for_model(instance) OverallRating.objects.filter( content_type=ct, object_id=instance.id).delete() default_style = instance.default_style for style in instance.styles.all(): if style.layer_styles.all().count() == 1: if style != default_style: style.delete() # Delete object permissions remove_object_permissions(instance)
def pre_delete_layer(instance, sender, **kwargs): """ Remove any associated style to the layer, if it is not used by other layers. Default style will be deleted in post_delete_layer """ if instance.remote_service is not None and instance.remote_service.method == INDEXED: # we need to delete the maplayers here because in the post save layer.remote_service is not available anymore # REFACTOR from geonode.maps.models import MapLayer logger.debug("Going to delete associated maplayers for [%s]", instance.alternate.encode('utf-8')) MapLayer.objects.filter(name=instance.alternate, ows_url=instance.ows_url).delete() return logger.debug("Going to delete the styles associated for [%s]", instance.alternate.encode('utf-8')) ct = ContentType.objects.get_for_model(instance) OverallRating.objects.filter(content_type=ct, object_id=instance.id).delete() default_style = instance.default_style for style in instance.styles.all(): if style.layer_styles.all().count() == 1: if style != default_style: style.delete() # Delete object permissions remove_object_permissions(instance)
def post_save_service(instance, sender, **kwargs): """Get information from catalogue""" resources = ResourceBase.objects.filter(id=instance.resourcebase_ptr.id) LOGGER.warn(f'*** POST SAVING SERVICE "{instance.uuid}"') if resources.exists(): # Update the Catalog try: catalogue = get_catalogue() catalogue.create_record(instance) record = catalogue.get_record(instance.uuid) except EnvironmentError as err: if err.errno == errno.ECONNREFUSED: LOGGER.warning( f'Could not connect to catalogue to save information for layer "{instance.name}"', err) return else: raise err if not record: LOGGER.exception( f'Metadata record for service {instance.title} does not exist, check the catalogue signals.' ) return # generate an XML document if instance.metadata_uploaded and instance.metadata_uploaded_preserve: md_doc = etree.tostring(dlxml.fromstring(instance.metadata_xml)) else: LOGGER.info(f'Rebuilding metadata document for "{instance.uuid}"') template = getattr(settings, 'CATALOG_SERVICE_METADATA_TEMPLATE', 'xml/service-template.xml') md_doc = create_metadata_document(instance, template) try: csw_anytext = catalogue.catalogue.csw_gen_anytext(md_doc) except Exception as e: LOGGER.exception(e) csw_anytext = '' for r in resources: if instance.is_published: anonymous_group = Group.objects.get(name='anonymous') assign_perm('view_resourcebase', anonymous_group, r) else: remove_object_permissions(r) resources.update(metadata_xml=md_doc, csw_anytext=csw_anytext) else: LOGGER.warn( f'*** The resource selected does not exists or or more than one is selected "{instance.uuid}"' )
def pre_delete_layer(instance, sender, **kwargs): """ Remove any associated style to the layer, if it is not used by other layers. Default style will be deleted in post_delete_layer """ if instance.remote_service is not None and instance.remote_service.method == INDEXED: # we need to delete the maplayers here because in the post save layer.remote_service is not available anymore # REFACTOR from geonode.maps.models import MapLayer logger.debug( "Going to delete associated maplayers for [%s]", instance.alternate) MapLayer.objects.filter( name=instance.alternate, ows_url=instance.ows_url).delete() return logger.debug( "Going to delete the styles associated for [%s]", instance.alternate) ct = ContentType.objects.get_for_model(instance) OverallRating.objects.filter( content_type=ct, object_id=instance.id).delete() default_style = instance.default_style for style in instance.styles.all(): if style.layer_styles.all().count() == 1: if style != default_style: style.delete() if 'geonode.upload' in settings.INSTALLED_APPS and \ settings.UPLOADER['BACKEND'] == 'geonode.importer': from geonode.upload.models import Upload # Need to call delete one by one in ordee to invoke the # 'delete' overridden method for upload in Upload.objects.filter(layer_id=instance.id): upload.delete() # Delete object permissions remove_object_permissions(instance)
def pre_delete_document(instance, sender, **kwargs): remove_object_permissions(instance.get_self_resource())
def pre_delete_map(instance, sender, **kwrargs): ct = ContentType.objects.get_for_model(instance) OverallRating.objects.filter(content_type=ct, object_id=instance.id).delete() remove_object_permissions(instance.get_self_resource())
def pre_delete_map(instance, sender, **kwrargs): ct = ContentType.objects.get_for_model(instance) OverallRating.objects.filter( content_type=ct, object_id=instance.id).delete() remove_object_permissions(instance.get_self_resource())
def pre_delete_service(instance, sender, **kwargs): remove_object_permissions(instance)
def pre_delete_document(instance, sender, **kwargs): remove_object_permissions(instance.get_self_resource())