jenkins-bot has submitted this change and it was merged.
Change subject: Fix delete and switch to using must_be
......................................................................
Fix delete and switch to using must_be
This patch follows Merlijn van Deen's suggestion to use must_be
instead of calling APISite.login directly. It also fixes Page.delete
to support switching between bot and sysop account and consequently
partially fixes bug 60278.
Change-Id: Ibc94da881fce312f42ce58fd9a440d1fb5e06109
---
M pywikibot/page.py
M pywikibot/site.py
2 files changed, 3 insertions(+), 15 deletions(-)
Approvals:
Pyfisch: Verified; Looks good to me, approved
jenkins-bot: Verified
diff --git a/pywikibot/page.py b/pywikibot/page.py
index 2949fa2..91d2038 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -1294,7 +1294,7 @@
pywikibot.output(u'Deleting %s.' % (self.title(asLink=True)))
reason = pywikibot.input(u'Please enter a reason for the deletion:')
- if self.site.logged_in(sysop=True): # If user is a sysop, delete the page
+ if self.site.username(sysop=True): # If user is a sysop, delete the page
answer = u'y'
if prompt and not hasattr(self.site, '_noDeletePrompt'):
answer = pywikibot.inputChoice(
diff --git a/pywikibot/site.py b/pywikibot/site.py
index 3048834..a4e8d19 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -3026,6 +3026,7 @@
"cantdelete": "Could not delete [[%(title)s]]. Maybe it was
deleted already.",
} # other errors shouldn't occur because of pre-submission checks
+ @must_be(group='sysop')
def deletepage(self, page, summary):
"""Delete page from the wiki. Requires appropriate privilege
level.
@@ -3033,13 +3034,6 @@
@param summary: Edit summary (required!).
"""
- try:
- self.login(sysop=True)
- except pywikibot.NoUsername as e:
- raise NoUsername("delete: Unable to login as sysop (%s)"
- % e.__class__.__name__)
- if not self.logged_in(sysop=True):
- raise NoUsername("delete: Unable to login as sysop")
token = self.token(page, "delete")
self.lock_page(page)
req = api.Request(site=self, action="delete", token=token,
@@ -3070,6 +3064,7 @@
"protect-invalidlevel": "Invalid protection level"
}
+ @must_be(group='sysop')
def protect(self, page, edit, move, summary):
"""(Un)protect a wiki page. Requires administrator status.
@@ -3084,13 +3079,6 @@
@param prompt: If true, ask user for confirmation.
"""
- try:
- self.login(sysop=True)
- except pywikibot.NoUsername as e:
- raise NoUsername("protect: Unable to login as sysop (%s)"
- % e.__class__.__name__)
- if not self.logged_in(sysop=True):
- raise NoUsername("protect: Unable to login as sysop")
token = self.token(page, "protect")
self.lock_page(page)
req = api.Request(site=self, action="protect", token=token,
--
To view, visit
https://gerrit.wikimedia.org/r/109339
To unsubscribe, visit
https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: merged
Gerrit-Change-Id: Ibc94da881fce312f42ce58fd9a440d1fb5e06109
Gerrit-PatchSet: 2
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Nullzero <nullzero.free(a)gmail.com>
Gerrit-Reviewer: Ladsgroup <ladsgroup(a)gmail.com>
Gerrit-Reviewer: Legoktm <legoktm.wikipedia(a)gmail.com>
Gerrit-Reviewer: Merlijn van Deen <valhallasw(a)arctus.nl>
Gerrit-Reviewer: Pyfisch <pyfisch(a)gmail.com>
Gerrit-Reviewer: Xqt <info(a)gno.de>
Gerrit-Reviewer: jenkins-bot <>