docs: def get_draft(self):
          """
          Return self if this object is a draft, otherwise return the draft
          copy of a published item.
          """
          if self.is_draft:
              return self
          elif self.is_published:
              draft = self.publishing_draft
              # Previously the reverse relation could be `DraftItemBoobyTrapped`
              # in some cases. This should be fixed by extra monkey-patching of
              # the `publishing_draft` field in icekit.publishing.apps, but we
              # will leave this extra sanity check here just in case.
              if hasattr(draft, 'get_draft_payload'):
                  draft = draft.get_draft_payload()
              return draft
          raise ValueError(  # pragma: no cover
              "Publishable object %r is neither draft nor published" % self)