本文整理汇总了Python中tracim_backend.lib.core.content.ContentApi.copy方法的典型用法代码示例。如果您正苦于以下问题:Python ContentApi.copy方法的具体用法?Python ContentApi.copy怎么用?Python ContentApi.copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tracim_backend.lib.core.content.ContentApi
的用法示例。
在下文中一共展示了ContentApi.copy方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: FileResource
# 需要导入模块: from tracim_backend.lib.core.content import ContentApi [as 别名]
# 或者: from tracim_backend.lib.core.content.ContentApi import copy [as 别名]
class FileResource(DAVNonCollection):
"""
FileResource resource corresponding to tracim's files
"""
def __init__(
self,
path: str,
environ: dict,
content: Content,
tracim_context: 'WebdavTracimContext'
) -> None:
super(FileResource, self).__init__(path, environ)
self.tracim_context = tracim_context
self.content = content
self.user = tracim_context.current_user
self.session = tracim_context.dbsession
self.content_api = ContentApi(
current_user=self.user,
config=tracim_context.app_config,
session=self.session,
)
# this is the property that windows client except to check if the file is read-write or read-only,
# but i wasn't able to set this property so you'll have to look into it >.>
# self.setPropertyValue('Win32FileAttributes', '00000021')
def __repr__(self) -> str:
return "<DAVNonCollection: FileResource (%d)>" % self.content.revision_id
@webdav_check_right(is_reader)
def getContentLength(self) -> int:
return self.content.depot_file.file.content_length
@webdav_check_right(is_reader)
def getContentType(self) -> str:
return self.content.file_mimetype
@webdav_check_right(is_reader)
def getCreationDate(self) -> float:
return mktime(self.content.created.timetuple())
@webdav_check_right(is_reader)
def getDisplayName(self) -> str:
return webdav_convert_file_name_to_display(self.content.file_name)
@webdav_check_right(is_reader)
def getDisplayInfo(self):
return {
'type': self.content.type.capitalize(),
}
@webdav_check_right(is_reader)
def getLastModified(self) -> float:
return mktime(self.content.updated.timetuple())
@webdav_check_right(is_reader)
def getContent(self) -> typing.BinaryIO:
filestream = compat.BytesIO()
filestream.write(self.content.depot_file.file.read())
filestream.seek(0)
return filestream
def beginWrite(self, contentType: str=None) -> FakeFileStream:
return FakeFileStream(
content=self.content,
content_api=self.content_api,
file_name=self.content.file_name,
workspace=self.content.workspace,
path=self.path,
session=self.session,
)
def moveRecursive(self, destpath):
"""As we support recursive move, copymovesingle won't be called, though with copy it'll be called
but i have to check if the client ever call that function..."""
destpath = normpath(destpath)
self.tracim_context.set_destpath(destpath)
if normpath(dirname(destpath)) == normpath(dirname(self.path)):
# INFO - G.M - 2018-12-12 - renaming case
checker = is_contributor
else:
# INFO - G.M - 2018-12-12 - move case
checker = can_move_content
try:
checker.check(self.tracim_context)
except TracimException as exc:
raise DAVError(HTTP_FORBIDDEN)
invalid_path = False
# if content is either deleted or archived, we'll check that we try moving it to the parent
# if yes, then we'll unarchive / undelete them, else the action's not allowed
if self.content.is_deleted or self.content.is_archived:
# we remove all archived and deleted from the path and we check to the destpath
# has to be equal or else path not valid
# ex: /a/b/.deleted/resource, to be valid destpath has to be = /a/b/resource (no other solution)
current_path = re.sub(r'/\.(deleted|archived)', '', self.path)
#.........这里部分代码省略.........