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.is_remote: # we need to delete the maplayers here because in the post save layer.service is not available anymore # REFACTOR from geonode.maps.models import MapLayer if instance.typename: logger.debug("Going to delete associated maplayers for [%s]", instance.typename.encode('utf-8')) MapLayer.objects.filter(name=instance.typename, ows_url=instance.ows_url).delete() return logger.debug("Going to delete the styles associated for [%s]", instance.typename.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 adjust_map_permissions(self, instance, validated_data): request = self.context.get("request") map = instance.map if request and hasattr(request, "user") and map: user = request.user # roles = self.get_roles(user) # ensure basic flags are set properly map.is_published = False map.featured = False map.group = None remove_object_permissions(map) set_owner_permissions(map) res = map.get_self_resource() # this is a list of GroupProfile objects for group in user.group_list_all(): if not map.group and not 'anonymous' == group.slug.lower(): map.group = Group.objects.get(name=group.slug) try: for perm in ADMIN_PERMISSIONS: assign_perm(perm, group.group, res) except Exception, err: log.error( 'could not assing permissions to map %s for Group %s: %s', map, group, err, exc_info=err) map.save() instance.map = map
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.is_remote: # we need to delete the maplayers here because in the post save layer.service is not available anymore # REFACTOR from geonode.maps.models import MapLayer if instance.typename: logger.debug( "Going to delete associated maplayers for [%s]", instance.typename.encode('utf-8')) MapLayer.objects.filter( name=instance.typename, ows_url=instance.ows_url).delete() return logger.debug( "Going to delete the styles associated for [%s]", instance.typename.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 adjust_map_permissions(self): self.check_map_permissions() map = self.map # ensure basic flags are set properly map.is_published = False map.featured = False # map.group = None remove_object_permissions(map) set_owner_permissions(map) map.save()
def set_permissions(self, perm_spec): remove_object_permissions(self) try: from geonode.security.utils import (set_owner_permissions) set_owner_permissions(self) except BaseException: pass if 'users' in perm_spec and "AnonymousUser" in perm_spec['users']: anonymous_group = Group.objects.get(name='anonymous') for perm in perm_spec['users']['AnonymousUser']: assign_perm(perm, anonymous_group, self.get_self_resource()) if 'groups' in perm_spec: for group, perms in perm_spec['groups'].items(): group = Group.objects.get(name=group) for perm in perms: assign_perm(perm, group, self.get_self_resource())
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.service: return logger.debug("Going to delete the styles associated for [%s]", instance.typename.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.service: return logger.debug("Going to delete the styles associated for [%s]", instance.typename.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_service(instance, sender, **kwargs): for layer in [s.layer for s in instance.servicelayer_set.all()]: layer.delete() # if instance.method == 'H': # gn = Layer.objects.gn_catalog # gn.control_harvesting_task('stop', [instance.external_id]) # gn.control_harvesting_task('remove', [instance.external_id]) if instance.method == 'C': try: _user = settings.OGC_SERVER['default']['USER'] _password = settings.OGC_SERVER['default']['PASSWORD'] gs = Catalog(settings.OGC_SERVER['default']['LOCATION'] + "rest", _user, _password) cascade_store = gs.get_store( instance.name, settings.CASCADE_WORKSPACE) gs.delete(cascade_store, recurse=True) except FailedRequestError: logger.error( "Could not delete cascading WMS Store for %s - maybe already gone" % instance.name) remove_object_permissions(instance.get_self_resource())
def pre_delete_service(instance, sender, **kwargs): for layer in instance.layer_set.all(): layer.delete() # if instance.method == 'H': # gn = Layer.objects.gn_catalog # gn.control_harvesting_task('stop', [instance.external_id]) # gn.control_harvesting_task('remove', [instance.external_id]) if instance.method == 'C': try: _user = settings.OGC_SERVER['default']['USER'] _password = settings.OGC_SERVER['default']['PASSWORD'] gs = Catalog(settings.OGC_SERVER['default']['LOCATION'] + "rest", _user, _password) cascade_store = gs.get_store( instance.name, settings.CASCADE_WORKSPACE) gs.delete(cascade_store, recurse=True) except FailedRequestError: logger.error( "Could not delete cascading WMS Store for %s - maybe already gone" % instance.name) remove_object_permissions(instance.get_self_resource())
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_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_appinstance(instance, sender, **kwargs): if not isinstance(instance, AppInstance): return remove_object_permissions(instance.get_self_resource())
def pre_delete_appinstance(instance, sender, **kwargs): if not isinstance(instance, AppInstance): return remove_object_permissions(instance.get_self_resource())