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: