def get_one(self, file_id, revision_id=None): file_id = int(file_id) cache_path = CFG.get_instance().PREVIEW_CACHE preview_manager = PreviewManager(cache_path, create_folder=True) user = tmpl_context.current_user workspace = tmpl_context.workspace current_user_content = Context(CTX.CURRENT_USER, current_user=user).toDict(user) current_user_content.roles.sort(key=lambda role: role.workspace.name) content_api = ContentApi(user, show_archived=True, show_deleted=True) if revision_id: file = content_api.get_one_from_revision(file_id, self._item_type, workspace, revision_id) else: file = content_api.get_one(file_id, self._item_type, workspace) revision_id = file.revision_id file_path = content_api.get_one_revision_filepath(revision_id) nb_page = preview_manager.get_nb_page(file_path=file_path) preview_urls = [] for page in range(int(nb_page)): url_str = '/previews/{}/pages/{}?revision_id={}' url = url_str.format(file_id, page, revision_id) preview_urls.append(url) fake_api_breadcrumb = self.get_breadcrumb(file_id) fake_api_content = DictLikeClass(breadcrumb=fake_api_breadcrumb, current_user=current_user_content) fake_api = Context(CTX.FOLDER, current_user=user).toDict(fake_api_content) dictified_file = Context(self._get_one_context, current_user=user).toDict(file, 'file') result = DictLikeClass(result=dictified_file, fake_api=fake_api, nb_page=nb_page, url=preview_urls) return result
def get_one(self, file_id, revision_id=None): user = tmpl_context.current_user file_id = int(file_id) user = tmpl_context.current_user workspace = tmpl_context.workspace content_api = ContentApi( user, show_archived=True, show_deleted=True, ) if revision_id: file_content = content_api.get_one_from_revision( file_id, self._item_type, workspace, revision_id).file_content else: file_content = content_api.get_one(file_id, self._item_type, workspace).file_content file_name = content_api.get_one(file_id, self._item_type).file_name cache_path = '/home/alexis/Pictures/cache/' file = BytesIO() file.write(file_content) current_user_content = Context(CTX.CURRENT_USER, current_user=user).toDict(user) current_user_content.roles.sort(key=lambda role: role.workspace.name) with open('{}{}'.format(cache_path, file_name), 'wb') as temp_file: file.seek(0, 0) buffer = file.read(1024) while buffer: temp_file.write(buffer) buffer = file.read(1024) preview_manager = PreviewManager(cache_path, create_folder=True) nb_page = preview_manager.get_nb_page( file_path='/home/alexis/Pictures/cache/{}'.format(file_name), ) fake_api_breadcrumb = self.get_breadcrumb(file_id) fake_api_content = DictLikeClass(breadcrumb=fake_api_breadcrumb, current_user=current_user_content) fake_api = Context(CTX.FOLDER, current_user=user).toDict(fake_api_content) if revision_id: file = content_api.get_one_from_revision(file_id, self._item_type, workspace, revision_id) else: file = content_api.get_one(file_id, self._item_type, workspace) dictified_file = Context(self._get_one_context, current_user=user).toDict(file, 'file') url = [] for i in range(int(nb_page)): url.append('/previews/{}/pages/{}'.format(file_id, i)) return DictLikeClass( result=dictified_file, fake_api=fake_api, nb_page=nb_page, url=url, )