changeset 212:5bf00af997ac

The `cache` command can optionally force resolve all pages.
author Ludovic Chabant <ludovic@chabant.com>
date Mon, 17 Feb 2014 14:37:53 -0800
parents 43a3434d6cfb
children 841175200700
files wikked/commands/manage.py wikked/page.py wikked/wiki.py
diffstat 3 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/wikked/commands/manage.py	Mon Feb 17 14:37:00 2014 -0800
+++ b/wikked/commands/manage.py	Mon Feb 17 14:37:53 2014 -0800
@@ -57,8 +57,10 @@
                 "whole wiki.")
 
     def setupParser(self, parser):
-        pass
+        parser.add_argument('-f', '--force',
+                help="Force cache all pages",
+                action='store_true')
 
     def run(self, ctx):
-        ctx.wiki._cachePages()
+        ctx.wiki._cachePages(force_resolve=ctx.args.force)
 
--- a/wikked/page.py	Mon Feb 17 14:37:00 2014 -0800
+++ b/wikked/page.py	Mon Feb 17 14:37:53 2014 -0800
@@ -126,14 +126,18 @@
     def _onExtendedDataLoaded(self):
         pass
 
-    def _ensureExtendedData(self):
-        if self._data is not None and self._data.has_extended_data:
+    def _ensureExtendedData(self, force=False):
+        if (not force and 
+                self._data is not None and 
+                self._data.has_extended_data):
             return
 
         self._ensureData()
 
         self._onExtendedDataLoading()
-        if self._data.has_extended_data and not self._force_resolve:
+        if (self._data.has_extended_data and
+                not force and
+                not self._force_resolve):
             return
 
         try:
--- a/wikked/wiki.py	Mon Feb 17 14:37:00 2014 -0800
+++ b/wikked/wiki.py	Mon Feb 17 14:37:53 2014 -0800
@@ -111,6 +111,7 @@
     def getSpecialFilenames(self):
         yield '.wikirc'
         yield '.wiki'
+        yield '_files'
         if self.config.has_section('ignore'):
             for name, val in self.config.items('ignore'):
                 yield val
@@ -320,12 +321,15 @@
     def getSpecialFilenames(self):
         return self.special_filenames
 
-    def _cachePages(self, only_urls=None):
+    def _cachePages(self, only_urls=None, force_resolve=False):
         logger.debug("Caching extended page data...")
         if only_urls:
             for url in only_urls:
                 page = self.getPage(url)
-                page._ensureExtendedData()
+                page._ensureExtendedData(force=force_resolve)
+        elif force_resolve:
+            for page in self.db.getPages():
+                page._ensureExtendedData(force=True)
         else:
             for page in self.db.getUncachedPages():
                 page._ensureExtendedData()