[Pywikipedia-l] SVN: [4935] trunk/pywikipedia/movepages.py

rotem at svn.wikimedia.org rotem at svn.wikimedia.org
Thu Jan 24 18:05:51 UTC 2008


Revision: 4935
Author:   rotem
Date:     2008-01-24 18:05:50 +0000 (Thu, 24 Jan 2008)

Log Message:
-----------
(patch 1878609) Adding -skipredirects option to movepages.py, and after the move, marking the redirect for deletion if requested and no sysop rights are available.

Modified Paths:
--------------
    trunk/pywikipedia/movepages.py

Modified: trunk/pywikipedia/movepages.py
===================================================================
--- trunk/pywikipedia/movepages.py	2008-01-24 17:58:27 UTC (rev 4934)
+++ trunk/pywikipedia/movepages.py	2008-01-24 18:05:50 UTC (rev 4935)
@@ -11,7 +11,7 @@
 
 -from and -to     The page to move from and the page to move to.
 
--del              After moving the page, delete the redirect.
+-del              After moving the page, delete the redirect or mark it for deletion.
 
 -prefix           Move pages by adding a namespace prefix to the names of the pages.
                   (Will remove the old namespace prefix if any)
@@ -19,6 +19,8 @@
 
 -always           Don't prompt to make changes, just do them.
 
+-skipredirects    Skip redirect pages (Warning: increases server load)
+
 """
 #
 # (C) Leonardo Gregianin, 2006
@@ -64,20 +66,21 @@
 }
 
 class MovePagesBot:
-    def __init__(self, generator, addprefix, delete, always):
+    def __init__(self, generator, addprefix, delete, always, skipredirects):
         self.generator = generator
         self.addprefix = addprefix
         self.delete = delete
         self.always = always
+        self.skipredirects = skipredirects
 
-    def moveOne(self, page, newPageTitle,delete):
+    def moveOne(self, page, newPageTitle, delete):
         try:
             msg = wikipedia.translate(wikipedia.getSite(), summary)
             wikipedia.output(u'Moving page %s to [[%s]]' % (page.aslink(), newPageTitle))
             if page.move(newPageTitle, msg, throttle=True):
                 if delete:
                     deletemsg = wikipedia.translate(wikipedia.getSite(), deletesummary)
-                    page.delete(deletemsg)
+                    page.delete(deletemsg, mark=True)
         except wikipedia.NoPage:
             wikipedia.output(u'Page %s does not exist!' % page.title())
         except wikipedia.IsRedirectPage:
@@ -89,6 +92,9 @@
         # Show the title of the page we're working on.
         # Highlight the title in purple.
         wikipedia.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"% page.title())
+        if self.skipredirects and page.isRedirectPage():
+            wikipedia.output(u'Page %s is a redirect; skipping.' % page.title())
+            return
         pagetitle = page.titleWithoutNamespace()
         namesp = page.site().namespace(page.namespace())
         if self.appendAll:
@@ -190,6 +196,7 @@
     newName = None
     delete = False
     always = False
+    skipredirects = False
 
     # This factory is responsible for processing command line arguments
     # that are also used by other scripts and that determine on which pages
@@ -201,6 +208,8 @@
             delete = True
         elif arg == '-always':
             always = True
+        if arg == '-skipredirects':
+            skipredirects = True
         elif arg.startswith('-from:'):
             oldName = arg[len('-from:'):]
         elif arg.startswith('-to:'):
@@ -217,11 +226,11 @@
 
     if oldName and newName:
         page = wikipedia.Page(wikipedia.getSite(), oldName)
-        bot = MovePagesBot(None, prefix, delete, always)
+        bot = MovePagesBot(None, prefix, delete, always, skipredirects)
         bot.moveOne(page, newName, delete)
     elif gen:
         preloadingGen = pagegenerators.PreloadingGenerator(gen)
-        bot = MovePagesBot(preloadingGen, prefix, delete, always)
+        bot = MovePagesBot(preloadingGen, prefix, delete, always, skipredirects)
         bot.run()
     else:
         wikipedia.showHelp('movepages')





More information about the Pywikipedia-l mailing list