Revision: 4790
Author: filnik
Date: 2008-01-02 15:14:56 +0000 (Wed, 02 Jan 2008)
Log Message:
-----------
Adding a feature (control if the page is blocked to move or not when someone use -move argument) BugFIX: 1861995
Modified Paths:
--------------
trunk/pywikipedia/blockpageschecker.py
Modified: trunk/pywikipedia/blockpageschecker.py
===================================================================
--- trunk/pywikipedia/blockpageschecker.py 2008-01-01 17:24:13 UTC (rev 4789)
+++ trunk/pywikipedia/blockpageschecker.py 2008-01-02 15:14:56 UTC (rev 4790)
@@ -13,6 +13,7 @@
it will ask you if it should open the page on your browser.
(attention: pages included may give false positives..)
-page Work only on one page
+-move The bot will check if the page is blocked also for the move option, not only for edit
Note: This script uses also genfactory, you can use those generator as default.
@@ -89,6 +90,17 @@
#######################################################
#------------------ END PREFERENCES ------------------#
################## -- Edit above! -- ##################
+
+def moveBlockChecker(page, site):
+ """ Function to check if a page is protected or not to move """
+ urlText = site.getUrl('/w/api.php?action=query&prop=info&inprop=protection&titles=%s' % page.urlname())
+ res = re.findall(r'<pr type="move" level="(.*?)&', urlText)
+ if res == []:
+ return 'editable'
+ elif res != [] and res[0] == 'autoconfirmed':
+ return 'autoconfirmed'
+ else:
+ return 'sysop'
def main():
# Loading the comments
@@ -97,14 +109,17 @@
wikipedia.output(u"Your project is not supported by this script. You have to edit the script and add it!")
wikipedia.stopme()
# always, define a generator to understand if the user sets one, defining what's genFactory
- always = False; generator = False; debug = False; genFactory = pagegenerators.GeneratorFactory()
+ always = False; generator = False; debug = False
+ moveBlockCheck = False; genFactory = pagegenerators.GeneratorFactory()
# To prevent Infinite loops
errorCount = 0
# Loading the default options.
for arg in wikipedia.handleArgs():
if arg == '-always':
always = True
- if arg == '-debug':
+ elif arg == '-move':
+ moveBlockCheck = True
+ elif arg == '-debug':
debug = True
elif arg.startswith('-page'):
if len(arg) == 5:
@@ -144,6 +159,11 @@
except wikipedia.IsRedirectPage:
wikipedia.output("%s is a redirect! Skipping..." % pagename)
continue
+ if moveBlockCheck == True and editRestriction != 'sysop'and editRestriction != 'autoconfirmed':
+ editRestriction = moveBlockChecker(page, site)
+ if editRestriction != 'editable':
+ wikipedia.output(u'The page is protected to move (to %s), skipping...' % editRestriction)
+ continue
if editRestriction == 'sysop':
wikipedia.output(u'The page is protected to the sysop, skipping...')
continue