jenkins-bot has submitted this change and it was merged.
Change subject: Add ability to mark pages for deletion ......................................................................
Add ability to mark pages for deletion
When a non-admin tries Page.delete(), offer to mark the page for deletion using {{delete}}. If mark == True, the page will be marked for deletion automatically.
Change-Id: I91a93a6dccab15315d44404347d34ef9f57963c0 --- M pywikibot/page.py 1 file changed, 37 insertions(+), 22 deletions(-)
Approvals: Strainu: Looks good to me, but someone else must approve Merlijn van Deen: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py index a4a946c..f0150cd 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -1273,35 +1273,50 @@ def delete(self, reason=None, prompt=True, throttle=None, mark=False): """Deletes the page from the wiki. Requires administrator status.
- @param reason: The edit summary for the deletion. If None, ask for it. + @param reason: The edit summary for the deletion, or rationale + for deletion if requesting. If None, ask for it. @param prompt: If true, prompt user for confirmation before deleting. - @param mark: if true, and user does not have sysop rights, place a - speedy-deletion request on the page instead. + @param mark: If true, and user does not have sysop rights, place a + speedy-deletion request on the page instead. If false, non-sysops + will be asked before marking pages for deletion.
""" - # TODO: add support for mark if reason is None: pywikibot.output(u'Deleting %s.' % (self.title(asLink=True))) reason = pywikibot.input(u'Please enter a reason for the deletion:') - answer = u'y' - if prompt and not hasattr(self.site, '_noDeletePrompt'): - answer = pywikibot.inputChoice( - u'Do you want to delete %s?' % self.title(asLink=True, - forceInterwiki=True), - ['Yes', 'No', 'All'], - ['Y', 'N', 'A'], - 'N') - if answer in ['a', 'A']: - answer = 'y' - self.site._noDeletePrompt = True - if answer in ['y', 'Y']: - try: + + if self.site.logged_in(sysop=True): # If user is a sysop, delete the page + answer = u'y' + if prompt and not hasattr(self.site, '_noDeletePrompt'): + answer = pywikibot.inputChoice( + u'Do you want to delete %s?' % self.title(asLink=True, + forceInterwiki=True), + ['Yes', 'No', 'All'], + ['Y', 'N', 'A'], + 'N') + if answer in ['a', 'A']: + answer = 'y' + self.site._noDeletePrompt = True + if answer in ['y', 'Y']: return self.site.deletepage(self, reason) - except pywikibot.NoUsername as e: - if mark: - raise NotImplementedError( - "Marking pages for deletion is not yet available.") - raise e + else: # Otherwise mark it for deletion + if mark or hasattr(self.site, '_noMarkDeletePrompt'): + answer = 'y' + else: + answer = pywikibot.inputChoice( + u"Can't delete %s; do you want to mark it " + "for deletion instead?" % self.title(asLink=True, + forceInterwiki=True), + ['Yes', 'No', 'All'], + ['Y', 'N', 'A'], + 'N') + if answer in ['a', 'A']: + answer = 'y' + self.site._noMarkDeletePrompt = True + if answer in ['y', 'Y']: + template = '{{delete|1=%s}}\n' % reason + self.text = template + self.text + return self.save(comment=reason)
# all these DeletedRevisions methods need to be reviewed and harmonized # with the new framework; they do not appear functional
pywikibot-commits@lists.wikimedia.org