docs: def is_editable(obj, request):
      """
      Returns ``True`` if the object is editable for the request. First
      check for a custom ``editable`` handler on the object, otherwise
      use the logged in user and check change permissions for the
      object's model.
      """
      if hasattr(obj, "is_editable"):
          return obj.is_editable(request)
      else:
          codename = get_permission_codename("change", obj._meta)
          perm = "%s.%s" % (obj._meta.app_label, codename)
          return (request.user.is_authenticated() and
                  has_site_permission(request.user) and
                  request.user.has_perm(perm))