docs: def has_been_published(self):
          """
          Return True if the item is either published itself, or has an
          associated published copy.
  
          This is in contrast to ``is_published`` which only returns True if
          the specific object is a published copy, and will return False for
          a draft object that has an associated published copy.
          """
          if self.is_published:
              return True
          elif self.is_draft:
              return self.publishing_linked_id is not None
          raise ValueError(  # pragma: no cover
              "Publishable object %r is neither draft nor published" % self)