Beispiel #1
0
    def create(self,
               content_type: str,
               workspace: Workspace,
               parent: Content = None,
               label: str = '',
               do_save=False,
               is_temporary: bool = False) -> Content:
        assert content_type in ContentType.allowed_types()

        if content_type == ContentType.Folder and not label:
            label = self.generate_folder_label(workspace, parent)

        content = Content()
        content.owner = self._user
        content.parent = parent
        content.workspace = workspace
        content.type = content_type
        content.label = label
        content.is_temporary = is_temporary
        content.revision_type = ActionDescription.CREATION

        if content.type in (
                ContentType.Page,
                ContentType.Thread,
        ):
            content.file_extension = '.html'

        if do_save:
            self._session.add(content)
            self.save(content, ActionDescription.CREATION)
        return content
Beispiel #2
0
 def delete(self, content: Content):
     content.owner = self._user
     content.is_deleted = True
     # TODO - G.M - 12-03-2018 - Inspect possible label conflict problem
     # INFO - G.M - 12-03-2018 - Set label name to avoid trouble when
     # un-deleting file.
     content.label = '{label}-{action}-{date}'.format(
         label=content.label,
         action='deleted',
         date=current_date_for_filename())
     content.revision_type = ActionDescription.DELETION
Beispiel #3
0
 def update_content(self,
                    item: Content,
                    new_label: str,
                    new_content: str = None) -> Content:
     if item.label == new_label and item.description == new_content:
         # TODO - G.M - 20-03-2018 - Fix internatization for webdav access.
         # Internatization disabled in libcontent for now.
         raise SameValueError('The content did not changed')
     item.owner = self._user
     item.label = new_label
     item.description = new_content if new_content else item.description  # TODO: convert urls into links
     item.revision_type = ActionDescription.EDITION
     return item
Beispiel #4
0
    def create_comment(self,
                       workspace: Workspace = None,
                       parent: Content = None,
                       content: str = '',
                       do_save=False) -> Content:
        assert parent and parent.type != ContentType.Folder
        item = Content()
        item.owner = self._user
        item.parent = parent
        item.workspace = workspace
        item.type = ContentType.Comment
        item.description = content
        item.label = ''
        item.revision_type = ActionDescription.COMMENT

        if do_save:
            self.save(item, ActionDescription.COMMENT)
        return item
Beispiel #5
0
    def _create_content_and_test(self, name, workspace, *args,
                                 **kwargs) -> Content:
        """
        All extra parameters (*args, **kwargs) are for Content init
        :return: Created Content instance
        """
        content = Content(*args, **kwargs)
        content.label = name
        content.workspace = workspace
        self.session.add(content)
        self.session.flush()

        content_api = ContentApi(
            current_user=None,
            session=self.session,
            config=self.app_config,
        )
        eq_(
            1,
            content_api.get_canonical_query().filter(
                Content.label == name).count())
        return content_api.get_canonical_query().filter(
            Content.label == name).one()