Example #1
0
    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
Example #2
0
    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,
        )