Revision: 6340
Author: russblau
Date: 2009-02-10 16:02:13 +0000 (Tue, 10 Feb 2009)
Log Message:
-----------
improve error-catching on page save
Modified Paths:
--------------
branches/rewrite/pywikibot/page.py
branches/rewrite/pywikibot/site.py
Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py 2009-02-09 14:41:27 UTC (rev 6339)
+++ branches/rewrite/pywikibot/page.py 2009-02-10 16:02:13 UTC (rev 6340)
@@ -673,16 +673,25 @@
def _save(self, comment, minor, watch, unwatch, callback):
err = None
+ link = self.title(asLink=True)
try:
done = self.site().editpage(self, summary=comment, minor=minor,
watch=watch, unwatch=unwatch)
if not done:
- pywikibot.output("Page %s not saved" % self.title(asLink=True),
+ pywikibot.output(u"Page %s not saved" % link,
level=pywikibot.WARNING)
+ raise pywikibot.PageNotSaved(link)
else:
- pywikibot.output("Page %s saved" % self.title(asLink=True))
+ pywikibot.output(u"Page %s saved" % link)
+ except pywikibot.LockedPage, err:
+ # re-raise the LockedPage exception so that calling program
+ # can re-try if appropriate
+ if not callback:
+ raise
+ # TODO: other "expected" error types to catch?
except pywikibot.Error, err:
- logger.exception("Error saving page %s\n" % self.title(asLink=True))
+ logger.exception(u"Error saving page %s\n" % link)
+ pywikibot.output(u"")
if callback:
callback(self, err)
Modified: branches/rewrite/pywikibot/site.py
===================================================================
--- branches/rewrite/pywikibot/site.py 2009-02-09 14:41:27 UTC (rev 6339)
+++ branches/rewrite/pywikibot/site.py 2009-02-10 16:02:13 UTC (rev 6340)
@@ -2194,6 +2194,8 @@
if err.code == "editconflict":
raise EditConflict(self._ep_errors[err.code] % errdata)
+ if err.code == "protectedpage":
+ raise LockedPage(errdata['title'])
if err.code in self._ep_errors:
raise Error(self._ep_errors[err.code] % errdata)
logger.debug("editpage: Unexpected error code '%s' received."