def rename_file()

in jupyter-gcs-contents-manager/gcs_contents_manager.py [0:0]


  def rename_file(self, old_path, new_path):
    if (old_path in ['', '/']) or (new_path in ['', '/']):
      raise HTTPError(403, 'The top-level directory is read-only')
    try:
      old_cm, old_relative_path, old_prefix = self._content_manager_for_path(
          old_path)
      if (old_relative_path in ['', '/']) or (old_prefix in ['', '/']):
        raise HTTPError(403, 'The top-level directory contents are read-only')
      if not old_cm:
        raise HTTPError(404,
                        'No content manager defined for "{}"'.format(old_path))

      new_cm, new_relative_path, new_prefix = self._content_manager_for_path(
          new_path)
      if (new_relative_path in ['', '/']) or (new_prefix in ['', '/']):
        raise HTTPError(403, 'The top-level directory contents are read-only')
      if not new_cm:
        raise HTTPError(404,
                        'No content manager defined for "{}"'.format(new_path))

      if old_cm != new_cm:
        raise HTTPError(400, 'Unsupported rename across file systems')
      return old_cm.rename_file(old_relative_path, new_relative_path)
    except HTTPError as err:
      raise err
    except Exception as ex:
      raise HTTPError(
          500, 'Internal server error: [{}] {}'.format(type(ex), str(ex)))