本文整理汇总了Python中tracim.lib.content.ContentApi.get_one方法的典型用法代码示例。如果您正苦于以下问题:Python ContentApi.get_one方法的具体用法?Python ContentApi.get_one怎么用?Python ContentApi.get_one使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类tracim.lib.content.ContentApi
的用法示例。
在下文中一共展示了ContentApi.get_one方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: download_pdf_one
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def download_pdf_one(self,
page_id: str,
revision_id: str=None,
*args, **kwargs):
file_id = int(tg.request.controller_state.routing_args.get('file_id'))
revision_id = int(revision_id) if revision_id != 'latest' else None
page = int(page_id)
cache_path = CFG.get_instance().PREVIEW_CACHE_DIR
preview_manager = PreviewManager(cache_path, create_folder=True)
user = tmpl_context.current_user
content_api = ContentApi(user,
show_archived=True,
show_deleted=True)
file = content_api.get_one(file_id, self._item_type)
if revision_id:
file_path = content_api.get_one_revision_filepath(revision_id)
else:
file = content_api.get_one(file_id, self._item_type)
file_path = content_api.get_one_revision_filepath(file.revision_id)
path = preview_manager.get_pdf_preview(file_path=file_path,
page=page)
file_suffix = ''
if page > -1:
file_suffix = '.page-{}'.format(page + 1)
tg.response.headers['Content-Disposition'] = \
'attachment; filename="{}{}.pdf"'.format(
file.label,
file_suffix,
)
with open(path, 'rb') as pdf:
return pdf.read()
示例2: put
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def put(self, item_id, folder_id='0'):
"""
:param item_id:
:param folder_id: id of the folder, in a style like 'workspace_14__content_1586'
:return:
"""
# TODO - SECURE THIS
workspace = tmpl_context.workspace
item_id = int(item_id)
new_workspace, new_parent = convert_id_into_instances(folder_id)
if new_workspace != workspace:
# check that user is at least
# - content manager in current workspace
# - content manager in new workspace
user = tmpl_context.current_user
if user.get_role(workspace) < UserRoleInWorkspace.CONTENT_MANAGER:
tg.flash(_('You are not allowed '
'to move this folder'), CST.STATUS_ERROR)
tg.redirect(self.parent_controller.url(item_id))
if user.get_role(new_workspace) < UserRoleInWorkspace.CONTENT_MANAGER:
tg.flash(_('You are not allowed to move '
'this folder to this workspace'), CST.STATUS_ERROR)
tg.redirect(self.parent_controller.url(item_id))
api = ContentApi(tmpl_context.current_user)
item = api.get_one(item_id, ContentType.Any, workspace)
api.move_recursively(item, new_parent, new_workspace)
next_url = tg.url('/workspaces/{}/folders/{}'.format(
new_workspace.workspace_id, item_id))
if new_parent:
tg.flash(_('Item moved to {} (workspace {})').format(
new_parent.label,
new_workspace.label), CST.STATUS_OK)
else:
tg.flash(_('Item moved to workspace {}').format(
new_workspace.label))
tg.redirect(next_url)
else:
# Default move inside same workspace
api = ContentApi(tmpl_context.current_user)
item = api.get_one(item_id, ContentType.Any, workspace)
api.move(item, new_parent)
next_url = self.parent_controller.url(item_id)
if new_parent:
tg.flash(_('Item moved to {}').format(new_parent.label), CST.STATUS_OK)
else:
tg.flash(_('Item moved to workspace root'))
tg.redirect(next_url)
示例3: get_one
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def get_one(self,
page_id: str='-1',
revision_id: str=None,
size: int=300,
*args, **kwargs):
file_id = int(tg.request.controller_state.routing_args.get('file_id'))
page = int(page_id)
revision_id = int(revision_id) if revision_id != 'latest' else None
cache_path = CFG.get_instance().PREVIEW_CACHE_DIR
preview_manager = PreviewManager(cache_path, create_folder=True)
user = tmpl_context.current_user
content_api = ContentApi(user,
show_archived=True,
show_deleted=True)
if revision_id:
file_path = content_api.get_one_revision_filepath(revision_id)
else:
file = content_api.get_one(file_id, self._item_type)
file_path = content_api.get_one_revision_filepath(file.revision_id)
try:
path = preview_manager.get_jpeg_preview(file_path=file_path,
page=page,
height=size,
width=size)
with open(path, 'rb') as large:
result = large.read()
except PreviewGeneratorException:
result = None
return result
示例4: put
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def put(self, item_id, label='',content=''):
# TODO - SECURE THIS
workspace = tmpl_context.workspace
try:
api = ContentApi(tmpl_context.current_user)
item = api.get_one(int(item_id), self._item_type, workspace)
with new_revision(item):
api.update_content(item, label, content)
if not self._path_validation.validate_new_content(item):
return render_invalid_integrity_chosen_path(
item.get_label(),
)
api.save(item, ActionDescription.REVISION)
msg = _('{} updated').format(self._item_type_label)
tg.flash(msg, CST.STATUS_OK)
tg.redirect(self._std_url.format(tmpl_context.workspace_id, tmpl_context.folder_id, item.content_id))
except SameValueError as e:
msg = _('{} not updated: the content did not change').format(self._item_type_label)
tg.flash(msg, CST.STATUS_WARNING)
tg.redirect(self._err_url.format(tmpl_context.workspace_id, tmpl_context.folder_id, item_id))
except ValueError as e:
msg = _('{} not updated - error: {}').format(self._item_type_label, str(e))
tg.flash(msg, CST.STATUS_ERROR)
tg.redirect(self._err_url.format(tmpl_context.workspace_id, tmpl_context.folder_id, item_id))
示例5: download
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def download(self, file_id, revision_id=None):
file_id = int(file_id)
revision_id = int(revision_id) if revision_id!='latest' else None
user = tmpl_context.current_user
workspace = tmpl_context.workspace
content_api = ContentApi(user)
revision_to_send = None
if revision_id:
item = content_api.get_one_from_revision(file_id, self._item_type, workspace, revision_id)
else:
item = content_api.get_one(file_id, self._item_type, workspace)
revision_to_send = None
if item.revision_to_serialize<=0:
for revision in item.revisions:
if not revision_to_send:
revision_to_send = revision
if revision.revision_id>revision_to_send.revision_id:
revision_to_send = revision
else:
for revision in item.revisions:
if revision.revision_id==item.revision_to_serialize:
revision_to_send = revision
break
content_type = 'application/x-download'
if revision_to_send.file_mimetype:
content_type = str(revision_to_send.file_mimetype)
tg.response.headers['Content-type'] = str(revision_to_send.file_mimetype)
tg.response.headers['Content-Type'] = content_type
tg.response.headers['Content-Disposition'] = str('attachment; filename="{}"'.format(revision_to_send.file_name))
return revision_to_send.file_content
示例6: put_delete_undo
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def put_delete_undo(self, item_id):
require_current_user_is_owner(int(item_id))
item_id = int(item_id)
content_api = ContentApi(tmpl_context.current_user, True, True) # Here we do not filter deleted items
item = content_api.get_one(item_id, self._item_type, tmpl_context.workspace)
try:
next_url = tg.url('/workspaces/{}/folders/{}/threads/{}').format(tmpl_context.workspace_id,
tmpl_context.folder_id,
tmpl_context.thread_id)
msg = _('{} undeleted.').format(self._item_type_label)
content_api.undelete(item)
content_api.save(item, ActionDescription.UNDELETION)
tg.flash(msg, CST.STATUS_OK)
tg.redirect(next_url)
except ValueError as e:
logger.debug(self, 'Exception: {}'.format(e.__str__))
back_url = tg.url('/workspaces/{}/folders/{}/threads/{}').format(tmpl_context.workspace_id,
tmpl_context.folder_id,
tmpl_context.thread_id)
msg = _('{} not un-deleted: {}').format(self._item_type_label, str(e))
tg.flash(msg, CST.STATUS_ERROR)
tg.redirect(back_url)
示例7: put_delete
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def put_delete(self, item_id):
require_current_user_is_owner(int(item_id))
# TODO - CHECK RIGHTS
item_id = int(item_id)
content_api = ContentApi(tmpl_context.current_user)
item = content_api.get_one(item_id, self._item_type, tmpl_context.workspace)
try:
next_url = tg.url('/workspaces/{}/folders/{}/threads/{}').format(tmpl_context.workspace_id,
tmpl_context.folder_id,
tmpl_context.thread_id)
undo_url = tg.url('/workspaces/{}/folders/{}/threads/{}/comments/{}/put_delete_undo').format(tmpl_context.workspace_id,
tmpl_context.folder_id,
tmpl_context.thread_id,
item_id)
msg = _('{} deleted. <a class="alert-link" href="{}">Cancel action</a>').format(self._item_type_label, undo_url)
content_api.delete(item)
content_api.save(item, ActionDescription.DELETION)
tg.flash(msg, CST.STATUS_OK, no_escape=True)
tg.redirect(next_url)
except ValueError as e:
back_url = tg.url('/workspaces/{}/folders/{}/threads/{}').format(tmpl_context.workspace_id,
tmpl_context.folder_id,
tmpl_context.thread_id)
msg = _('{} not deleted: {}').format(self._item_type_label, str(e))
tg.flash(msg, CST.STATUS_ERROR)
tg.redirect(back_url)
示例8: current_folder
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def current_folder(cls) -> Content:
content_api = ContentApi(tg.tmpl_context.current_user)
folder_id = int(tg.request.controller_state.routing_args.get('folder_id'))
folder = content_api.get_one(folder_id, ContentType.Folder, tg.tmpl_context.workspace)
tg.tmpl_context.folder_id = folder_id
tg.tmpl_context.folder = folder
return folder
示例9: _current_item_manually
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def _current_item_manually(cls, item_id: int, item_type: str) -> Content:
# in case thread or page or other stuff is instanciated, then force
# the associated item to be available through generic name tmpl_context.item to be available
content_api = ContentApi(tg.tmpl_context.current_user)
item = content_api.get_one(item_id, item_type, tg.tmpl_context.workspace)
tg.tmpl_context.item_id = item.content_id
tg.tmpl_context.item = item
return item
示例10: put_status
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def put_status(self, item_id, status):
item_id = int(item_id)
content_api = ContentApi(tmpl_context.current_user)
try:
item = content_api.get_one(item_id, self._item_type,
tmpl_context.workspace)
with new_revision(item):
content_api.set_status(item, status)
content_api.save(item, ActionDescription.STATUS_UPDATE)
msg = _('{} status updated').format(self._item_type_label)
tg.flash(msg, CST.STATUS_OK)
tg.redirect(self._std_url.format(item.workspace_id, item.parent_id, item.content_id))
except ValueError as e:
msg = _('{} status not updated: {}').format(self._item_type_label, str(e))
tg.flash(msg, CST.STATUS_ERROR)
tg.redirect(self._err_url.format(item.workspace_id, item.parent_id, item.content_id))
except NoResultFound as e:
# probably the content is deleted or archived => forbidden to update status
content_api = ContentApi(
tmpl_context.current_user,
show_archived=True,
show_deleted=True
)
item = content_api.get_one(
item_id,
self._item_type,
tmpl_context.workspace
)
next_url = self._std_url.format(
item.workspace_id, item.parent_id, item.content_id
)
msg = _('{} status not updated: the operation '
'is not allowed on deleted/archived content').format(
self._item_type_label
)
tg.flash(msg, CST.STATUS_ERROR)
tg.redirect(next_url)
示例11: put_status
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def put_status(self, item_id, status):
item_id = int(item_id)
content_api = ContentApi(tmpl_context.current_user)
item = content_api.get_one(item_id, self._item_type, tmpl_context.workspace)
try:
content_api.set_status(item, status)
content_api.save(item, ActionDescription.STATUS_UPDATE)
msg = _('{} status updated').format(self._item_type_label)
tg.flash(msg, CST.STATUS_OK)
tg.redirect(self._std_url.format(item.workspace_id, item.parent_id, item.content_id))
except ValueError as e:
msg = _('{} status not updated: {}').format(self._item_type_label, str(e))
tg.flash(msg, CST.STATUS_ERROR)
tg.redirect(self._err_url.format(item.workspace_id, item.parent_id, item.content_id))
示例12: get_all_fake
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def get_all_fake(self, context_workspace: Workspace, parent_id=None):
"""
fake methods are used in other controllers in order to simulate a client/server api.
the "client" controller method will include the result into its own fake_api object
which will be available in the templates
:param context_workspace: the workspace which would be taken from tmpl_context if we were in the normal behavior
:return:
"""
workspace = context_workspace
content_api = ContentApi(tmpl_context.current_user)
parent_folder = content_api.get_one(parent_id, ContentType.Folder)
folders = content_api.get_child_folders(parent_folder, workspace)
folders = Context(CTX.FOLDERS).toDict(folders)
return DictLikeClass(result = folders)
示例13: get_one
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def get_one(self, thread_id):
thread_id = int(thread_id)
user = tmpl_context.current_user
workspace = tmpl_context.workspace
current_user_content = Context(CTX.CURRENT_USER).toDict(user)
current_user_content.roles.sort(key=lambda role: role.workspace.name)
content_api = ContentApi(user)
thread = content_api.get_one(thread_id, ContentType.Thread, workspace)
fake_api_breadcrumb = self.get_breadcrumb(thread_id)
fake_api_content = DictLikeClass(breadcrumb=fake_api_breadcrumb, current_user=current_user_content)
fake_api = Context(CTX.FOLDER).toDict(fake_api_content)
dictified_thread = Context(CTX.THREAD).toDict(thread, 'thread')
return DictLikeClass(result = dictified_thread, fake_api=fake_api)
示例14: edit
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def edit(self, folder_id):
"""
Show the edit form (do not really edit the data)
:param item_id:
:return:
"""
folder_id = int(folder_id)
user = tmpl_context.current_user
workspace = tmpl_context.workspace
content_api = ContentApi(user)
folder = content_api.get_one(folder_id, ContentType.Folder, workspace)
dictified_folder = Context(CTX.FOLDER).toDict(folder, 'folder')
return DictLikeClass(result = dictified_folder)
示例15: post
# 需要导入模块: from tracim.lib.content import ContentApi [as 别名]
# 或者: from tracim.lib.content.ContentApi import get_one [as 别名]
def post(self, label, parent_id=None, can_contain_folders=False, can_contain_threads=False, can_contain_files=False, can_contain_pages=False):
# TODO - SECURE THIS
workspace = tmpl_context.workspace
api = ContentApi(tmpl_context.current_user)
redirect_url_tmpl = '/workspaces/{}/folders/{}'
redirect_url = ''
try:
parent = None
if parent_id:
parent = api.get_one(int(parent_id), ContentType.Folder, workspace)
folder = api.create(ContentType.Folder, workspace, parent, label)
subcontent = dict(
folder = True if can_contain_folders=='on' else False,
thread = True if can_contain_threads=='on' else False,
file = True if can_contain_files=='on' else False,
page = True if can_contain_pages=='on' else False
)
api.set_allowed_content(folder, subcontent)
api.save(folder)
tg.flash(_('Folder created'), CST.STATUS_OK)
redirect_url = redirect_url_tmpl.format(tmpl_context.workspace_id, folder.content_id)
except Exception as e:
logger.error(self, 'An unexpected exception has been catched. Look at the traceback below.')
traceback.print_exc()
tg.flash(_('Folder not created: {}').format(e.with_traceback()), CST.STATUS_ERROR)
if parent_id:
redirect_url = redirect_url_tmpl.format(tmpl_context.workspace_id, parent_id)
else:
redirect_url = '/workspaces/{}'.format(tmpl_context.workspace_id)
####
#
# INFO - D.A. - 2014-10-22 - Do not put redirect in a
# try/except block as redirect is using exceptions!
#
tg.redirect(tg.url(redirect_url))