Exemplo n.º 1
0
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)
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
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)
Exemplo n.º 4
0
    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()
Exemplo n.º 5
0
    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())
Exemplo n.º 6
0
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)
Exemplo n.º 7
0
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)
Exemplo n.º 8
0
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())
Exemplo n.º 9
0
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())
Exemplo n.º 10
0
def pre_delete_document(instance, sender, **kwargs):
    remove_object_permissions(instance.get_self_resource())
Exemplo n.º 11
0
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())
Exemplo n.º 12
0
def pre_delete_document(instance, sender, **kwargs):
    remove_object_permissions(instance.get_self_resource())
Exemplo n.º 13
0
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())
Exemplo n.º 14
0
def pre_delete_appinstance(instance, sender, **kwargs):
    if not isinstance(instance, AppInstance):
        return
    remove_object_permissions(instance.get_self_resource())
Exemplo n.º 15
0
def pre_delete_appinstance(instance, sender, **kwargs):
    if not isinstance(instance, AppInstance):
        return
    remove_object_permissions(instance.get_self_resource())