'Provide a single point of entry for deciding whether any given global
permission exists.'

def get_with_permission(self, user, site_id, perm):

    this_site = Q(**{perm: True, 'sites__in': [site_id]})
    all_sites = Q(**{perm: True, 'sites__isnull': True})
    return self.with_user(user).filter((this_site | all_sites))
