def create_document(prefix, path, parent=None, tree=None): """Create a Doorstop document from existing document information. :param prefix: existing document's prefix (for new items) :param path: new directory path to store this document's items :param parent: parent document's prefix (if one will exist) :param tree: explicit tree to add the document :return: imported Document """ if not tree: tree = _get_tree() # Attempt to create a document with the given parent log.info("importing document '{}'...".format(prefix)) try: document = tree.create_document(path, prefix, parent=parent) except DoorstopError as exc: if not parent: raise exc from None # Create the document despite an unavailable parent document = Document.new(tree, path, tree.root, prefix, parent=parent) log.warning(exc) _documents.append(document) # TODO: attempt to place unplaced documents? log.info("imported: {}".format(document)) return document
def create_document(self, path, value, sep=None, digits=None, parent=None): # pylint: disable=R0913 """Create a new document and add it to the tree. :param path: directory path for the new document :param value: document or prefix :param sep: separator between prefix and numbers :param digits: number of digits for the document's numbers :param parent: parent document's prefix :raises: :class:`~doorstop.common.DoorstopError` if the document cannot be created :return: newly created and placed document :class:`~doorstop.core.document.Document` """ prefix = Prefix(value) document = Document.new(self, path, self.root, prefix, sep=sep, digits=digits, parent=parent) try: self._place(document) except DoorstopError: msg = "deleting unplaced directory {}...".format(document.path) log.debug(msg) document.delete() raise else: log.info("added to tree: {}".format(document)) return document
def create_document(prefix, path, parent=None, tree=None): """Create a Doorstop document from existing document information. :param prefix: existing document's prefix (for new items) :param path: new directory path to store this document's items :param parent: parent document's prefix (if one will exist) :param tree: explicit tree to add the document :return: imported Document """ if not tree: tree = _get_tree() # Attempt to create a document with the given parent log.info("importing document '{}'...".format(prefix)) try: document = tree.create_document(path, prefix, parent=parent) except DoorstopError as exc: if not parent: raise exc from None # Create the document despite an unavailable parent document = Document.new(tree, path, tree.root, prefix, parent=parent) log.warning(exc) _documents.append(document) # TODO: attempt to place unplaced documents? log.info("imported: {}".format(document)) return document
def create_document(self, path, value, sep=None, digits=None, parent=None): # pylint: disable=R0913 """Create a new document and add it to the tree. :param path: directory path for the new document :param value: document or prefix :param sep: separator between prefix and numbers :param digits: number of digits for the document's numbers :param parent: parent document's prefix :raises: :class:`~doorstop.common.DoorstopError` if the document cannot be created :return: newly created and placed document :class:`~doorstop.core.document.Document` """ prefix = Prefix(value) document = Document.new(self, path, self.root, prefix, sep=sep, digits=digits, parent=parent) try: self._place(document) except DoorstopError: msg = "deleting unplaced directory {}...".format(document.path) log.debug(msg) document.delete() raise else: log.info("added to tree: {}".format(document)) return document