'Returns a set of permission strings that this user has through his/her
groups.'

def get_group_permissions(self, user_obj, obj=None):

    if (user_obj.is_anonymous() or (obj is not None)):
        return set()
    if (not hasattr(user_obj, u'_group_perm_cache')):
        if user_obj.is_superuser:
            perms = Permission.objects.all()
        else:
            user_groups_field = get_user_model()._meta.get_field(u'groups')
            user_groups_query = (u'group__%s' % user_groups_field.related_query_name())
            perms = Permission.objects.filter(**{user_groups_query: user_obj})
        perms = perms.values_list(u'content_type__app_label', u'codename').order_by()
        user_obj._group_perm_cache = set([(u'%s.%s' % (ct, name)) for (ct, name) in perms])
    return user_obj._group_perm_cache
