示例#1
0
 def _iter(self, reload=False):
     """Yield the document's items."""
     if self._itered and not reload:
         msg = "iterating document {}'s loaded items...".format(self)
         log.debug(msg)
         yield from list(self._items)
         return
     log.info("loading document {}'s items...".format(self))
     # Reload the document's item
     self._items = []
     for dirpath, dirnames, filenames in os.walk(self.path):
         for dirname in list(dirnames):
             path = os.path.join(dirpath, dirname, Document.CONFIG)
             if os.path.exists(path):
                 path = os.path.dirname(path)
                 dirnames.remove(dirname)
                 log.trace("skipped embedded document: {}".format(path))
         for filename in filenames:
             path = os.path.join(dirpath, filename)
             try:
                 item = Item(path, root=self.root,
                             document=self, tree=self.tree)
             except DoorstopError:
                 pass  # skip non-item files
             else:
                 self._items.append(item)
                 if reload:
                     item.load(reload=reload)
                 if settings.CACHE_ITEMS and self.tree:
                     self.tree._item_cache[item.uid] = item  # pylint: disable=W0212
                     log.trace("cached item: {}".format(item))
     # Set meta attributes
     self._itered = True
     # Yield items
     yield from list(self._items)
示例#2
0
 def test_load_save(self):
     """Verify text formatting is preserved."""
     item = Item(self.ITEM)
     item.load()
     item.save()
     text = common.read_text(self.ITEM)
     self.assertEqual(self.backup, text)
示例#3
0
 def test_load_save(self):
     """Verify text formatting is preserved."""
     item = Item(self.ITEM)
     item.load()
     item.save()
     text = common.read_text(self.ITEM)
     self.assertEqual(self.backup, text)
示例#4
0
 def test_load_save(self):
     """Verify text formatting is preserved."""
     item = Item(self.ITEM)
     item.load()
     item.save()
     with open(self.ITEM, 'r') as infile:
         text = infile.read()
         self.assertEqual(self.backup, text)
示例#5
0
 def _iter(self, reload=False):
     """Yield the document's items."""
     if self._itered and not reload:
         msg = "iterating document {}'s loaded items...".format(self)
         log.debug(msg)
         yield from list(self._items)
         return
     log.info("loading document {}'s items...".format(self))
     # Reload the document's item
     self._items = []
     for dirpath, dirnames, filenames in os.walk(self.path):
         for dirname in list(dirnames):
             path = os.path.join(dirpath, dirname, Document.CONFIG)
             if os.path.exists(path):
                 path = os.path.dirname(path)
                 dirnames.remove(dirname)
                 log.trace("skipped embedded document: {}".format(path))
         for filename in filenames:
             path = os.path.join(dirpath, filename)
             try:
                 item = Item(path,
                             root=self.root,
                             document=self,
                             tree=self.tree)
             except DoorstopError:
                 pass  # skip non-item files
             else:
                 self._items.append(item)
                 if reload:
                     try:
                         item.load(reload=reload)
                     except Exception:
                         log.error("Unable to load: %s", item)
                         raise
                 if settings.CACHE_ITEMS and self.tree:
                     self.tree._item_cache[item.uid] = item  # pylint: disable=W0212
                     log.trace("cached item: {}".format(item))
     # Set meta attributes
     self._itered = True
     # Yield items
     yield from list(self._items)