jenkins-bot has submitted this change and it was merged.
Change subject: standardize delete.py ......................................................................
standardize delete.py
- DeletionRobot extends pywikibot.Bot with an options dict and built-in 'always' option
- Bug 63800: call handleArgs before GeneratorFactory per I134529f3a914225d3473b95ca771cf7e7be01a36
Change-Id: I7ded2d3e2ab2ce3452f1a99819c1843dbfb33a8e --- M scripts/delete.py 1 file changed, 21 insertions(+), 18 deletions(-)
Approvals: John Vandenberg: Looks good to me, approved jenkins-bot: Verified
diff --git a/scripts/delete.py b/scripts/delete.py index bbce21b..8b023ac 100644 --- a/scripts/delete.py +++ b/scripts/delete.py @@ -33,8 +33,7 @@ #
import pywikibot -from pywikibot import i18n -from pywikibot import pagegenerators +from pywikibot import i18n, pagegenerators, Bot
# This is required for the text that is shown when you run this script # with the parameter -help. @@ -43,20 +42,25 @@ }
-class DeletionRobot: +class DeletionRobot(Bot): """ This robot allows deletion of pages en masse. """
- def __init__(self, generator, summary, always=False, undelete=True): + def __init__(self, generator, summary, **kwargs): """ - Arguments: - * generator - A page generator. - * always - Delete without prompting? + Constructor.
+ @param generator: the pages to work on + @type generator: iterable + @param summary: the reason for the (un)deletion + @type summary: unicode """ + self.availableOptions.update({ + 'undelete': False, + }) + super(DeletionRobot, self).__init__(**kwargs) + self.generator = generator self.summary = summary - self.prompt = not always - self.undelete = undelete
def run(self): """ Start the robot's action: @@ -65,27 +69,26 @@ """ for page in self.generator: pywikibot.output(u'Processing page %s' % page.title()) - if self.undelete: + if self.getOption('undelete'): page.undelete(self.summary) else: - page.delete(self.summary, self.prompt) + page.delete(self.summary, not self.getOption('always'))
def main(): - genFactory = pagegenerators.GeneratorFactory() pageName = '' summary = None - always = False - undelete = False generator = None + options = {}
# read command line parameters local_args = pywikibot.handleArgs() + genFactory = pagegenerators.GeneratorFactory() mysite = pywikibot.Site()
for arg in local_args: if arg == '-always': - always = True + options['always'] = True elif arg.startswith('-summary'): if len(arg) == len('-summary'): summary = pywikibot.input(u'Enter a reason for the deletion:') @@ -96,7 +99,7 @@ 'Please use -imageused instead.\03{default}\n') local_args.append('-imageused' + arg[7:]) elif arg.startswith('-undelete'): - undelete = True + options['undelete'] = True else: genFactory.handleArg(arg) found = arg.find(':') + 1 @@ -125,8 +128,8 @@ if generator: if summary is None: summary = pywikibot.input(u'Enter a reason for the %sdeletion:' - % ['', 'un'][undelete]) - bot = DeletionRobot(generator, summary, always, undelete) + % ['', 'un'][options.get('undelete', False)]) + bot = DeletionRobot(generator, summary, **options) bot.run() else: # Show help text from the top of this file
pywikibot-commits@lists.wikimedia.org