'Removes permission ``perm`` for a ``queryset`` and given ``user_or_group``.
Please note that we do NOT fetch object permission from database - we
use ``Queryset.delete`` method for removing it. Main implication of this
is that ``post_delete`` signals would NOT be fired.'

def bulk_remove_perm(self, perm, user_or_group, queryset):

    filters = Q(**{self.user_or_group_field: user_or_group})
    if isinstance(perm, Permission):
        filters &= Q(permission=perm)
    else:
        ctype = get_content_type(queryset.model)
        filters &= Q(permission__codename=perm, permission__content_type=ctype)
    if self.is_generic():
        filters &= Q(object_pk__in=[str(pk) for pk in queryset.values_list(u'pk', flat=True)])
    else:
        filters &= Q(content_object__in=queryset)
    return self.filter(filters).delete()
