I think it'd be more inheritance-friendly to do this:

    return object.is_public() and self.has_permission(request, view)

Although it really doesn't matter.