예제 #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
예제 #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
예제 #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
예제 #4
0
 def update_file_data(self, item: Content, new_filename: str,
                      new_mimetype: str, new_content: bytes) -> Content:
     if new_mimetype == item.file_mimetype and \
             new_content == item.depot_file.file.read():
         raise SameValueError('The content did not changed')
     item.owner = self._user
     item.file_name = new_filename
     item.file_mimetype = new_mimetype
     item.depot_file = FileIntent(
         new_content,
         new_filename,
         new_mimetype,
     )
     item.revision_type = ActionDescription.REVISION
     return item
예제 #5
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
예제 #6
0
 def undelete(self, content: Content):
     content.owner = self._user
     content.is_deleted = False
     content.revision_type = ActionDescription.UNDELETION
예제 #7
0
 def unarchive(self, content: Content):
     content.owner = self._user
     content.is_archived = False
     content.revision_type = ActionDescription.UNARCHIVING