Revision: 5509
Author: nicdumz
Date: 2008-06-03 20:56:23 +0000 (Tue, 03 Jun 2008)
Log Message:
-----------
Fix for bug #1983819 [category.py move crashes when a talk page exists] :
(NoPage, PageNotSaved) sanitizing around wikipedia::move calls
Modified Paths:
--------------
trunk/pywikipedia/category.py
trunk/pywikipedia/movepages.py
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/category.py
===================================================================
--- trunk/pywikipedia/category.py 2008-06-03 20:23:58 UTC (rev 5508)
+++ trunk/pywikipedia/category.py 2008-06-03 20:56:23 UTC (rev 5509)
@@ -422,8 +422,16 @@
oldTalk = self.oldCat.toggleTalkPage()
if oldTalk.exists():
newTalkTitle = newCat.toggleTalkPage().title()
- if oldTalk.move(newTalkTitle, reason):
- oldMovedTalk = oldTalk
+ try:
+ talkMoved = oldTalk.move(newTalkTitle, reason)
+ except (wikipedia.NoPage, wikipedia.PageNotSaved), e:
+ #in order :
+ #Source talk does not exist, or
+ #Target talk already exists
+ wikipedia.output(e.message)
+ else:
+ if talkMoved:
+ oldMovedTalk = oldTalk
# Move articles
gen = pagegenerators.CategorizedPageGenerator(self.oldCat,
Modified: trunk/pywikipedia/movepages.py
===================================================================
--- trunk/pywikipedia/movepages.py 2008-06-03 20:23:58 UTC (rev 5508)
+++ trunk/pywikipedia/movepages.py 2008-06-03 20:56:23 UTC (rev 5509)
@@ -99,6 +99,9 @@
wikipedia.output(u'Page %s is a redirect; skipping.' % page.title())
except wikipedia.LockedPage:
wikipedia.output(u'Page %s is locked!' % page.title())
+ except wikipedia.PageNotSaved, e:
+ #target newPageTitle already exists
+ wikipedia.output(e.message)
def treat(self, page):
# Show the title of the page we're working on.
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2008-06-03 20:23:58 UTC (rev 5508)
+++ trunk/pywikipedia/wikipedia.py 2008-06-03 20:56:23 UTC (rev 5509)
@@ -2086,14 +2086,13 @@
# Try to delete and move
return self.move(newtitle = newtitle, reason = reason,
movetalkpage = movetalkpage, throttle = throttle, deleteAndMove = True)
except NoUsername:
+ #We dont have the user rights to delete
output(u'Page moved failed: Target page [[%s]] already
exists.' % newtitle)
return False
elif not self.exists():
raise NoPage(u'Page move failed: Source page [[%s]] does not
exist.' % newtitle)
- return False
- elif Page(self.site(),newtitle).exists():
+ elif Page(self.site(),newtitle).exists():
raise PageNotSaved(u'Page move failed: Target page [[%s]] already
exists.' % newtitle)
- return False
else:
output(u'Page move failed for unknown reason.')
try:
Show replies by date