本文整理汇总了Python中tracim.lib.content.ContentApi.get_one_revision方法的典型用法代码示例。如果您正苦于以下问题:Python ContentApi.get_one_revision方法的具体用法?Python ContentApi.get_one_revision怎么用?Python ContentApi.get_one_revision使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tracim.lib.content.ContentApi
的用法示例。
在下文中一共展示了ContentApi.get_one_revision方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: exists
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one_revision [as 别名]
def exists(self, path, environ) -> bool:
"""
Called by wsgidav to check if a certain path is linked to a _DAVResource
"""
path = normpath(path)
working_path = self.reduce_path(path)
root_path = environ['http_authenticator.realm']
parent_path = dirname(working_path)
if path == root_path:
return True
user = UserApi(None).get_one_by_email(environ['http_authenticator.username'])
workspace = self.get_workspace_from_path(path, WorkspaceApi(user))
if parent_path == root_path or workspace is None:
return workspace is not None
# TODO bastien: Arnaud avait mis a True, verif le comportement
# lorsque l'on explore les dossiers archive et deleted
content_api = ContentApi(user, show_archived=False, show_deleted=False)
revision_id = re.search(r'/\.history/[^/]+/\((\d+) - [a-zA-Z]+\) ([^/].+)$', path)
is_archived = self.is_path_archive(path)
is_deleted = self.is_path_delete(path)
if revision_id:
revision_id = revision_id.group(1)
content = content_api.get_one_revision(revision_id)
else:
content = self.get_content_from_path(working_path, content_api, workspace)
return content is not None \
and content.is_deleted == is_deleted \
and content.is_archived == is_archived
示例2: getResourceInst
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one_revision [as 别名]
def getResourceInst(self, path: str, environ: dict):
"""
Called by wsgidav whenever a request is called to get the _DAVResource corresponding to the path
"""
if not self.exists(path, environ):
return None
path = normpath(path)
root_path = environ['http_authenticator.realm']
# If the requested path is the root, then we return a Root resource
if path == root_path:
return sql_resources.Root(path, environ)
user = UserApi(None).get_one_by_email(environ['http_authenticator.username'])
workspace_api = WorkspaceApi(user)
workspace = self.get_workspace_from_path(path, workspace_api)
# If the request path is in the form root/name, then we return a Workspace resource
parent_path = dirname(path)
if parent_path == root_path:
if not workspace:
return None
return sql_resources.Workspace(path, environ, workspace)
# And now we'll work on the path to establish which type or resource is requested
content_api = ContentApi(
user,
show_archived=False, # self._show_archive,
show_deleted=False, # self._show_delete
)
content = self.get_content_from_path(
path=path,
content_api=content_api,
workspace=workspace
)
# Easy cases : path either end with /.deleted, /.archived or /.history, then we return corresponding resources
if path.endswith(SpecialFolderExtension.Archived) and self._show_archive:
return sql_resources.ArchivedFolder(path, environ, workspace, content)
if path.endswith(SpecialFolderExtension.Deleted) and self._show_delete:
return sql_resources.DeletedFolder(path, environ, workspace, content)
if path.endswith(SpecialFolderExtension.History) and self._show_history:
is_deleted_folder = re.search(r'/\.deleted/\.history$', path) is not None
is_archived_folder = re.search(r'/\.archived/\.history$', path) is not None
type = HistoryType.Deleted if is_deleted_folder \
else HistoryType.Archived if is_archived_folder \
else HistoryType.Standard
return sql_resources.HistoryFolder(path, environ, workspace, content, type)
# Now that's more complicated, we're trying to find out if the path end with /.history/file_name
is_history_file_folder = re.search(r'/\.history/([^/]+)$', path) is not None
if is_history_file_folder and self._show_history:
return sql_resources.HistoryFileFolder(
path=path,
environ=environ,
content=content
)
# And here next step :
is_history_file = re.search(r'/\.history/[^/]+/\((\d+) - [a-zA-Z]+\) .+', path) is not None
if self._show_history and is_history_file:
revision_id = re.search(r'/\.history/[^/]+/\((\d+) - [a-zA-Z]+\) ([^/].+)$', path).group(1)
content_revision = content_api.get_one_revision(revision_id)
content = self.get_content_from_revision(content_revision, content_api)
if content.type == ContentType.File:
return sql_resources.HistoryFile(path, environ, content, content_revision)
else:
return sql_resources.HistoryOtherFile(path, environ, content, content_revision)
# And if we're still going, the client is asking for a standard Folder/File/Page/Thread so we check the type7
# and return the corresponding resource
if content is None:
return None
if content.type == ContentType.Folder:
return sql_resources.Folder(path, environ, content.workspace, content)
elif content.type == ContentType.File:
return sql_resources.File(path, environ, content)
else:
return sql_resources.OtherFile(path, environ, content)