Xqt has uploaded a new change for review.
https://gerrit.wikimedia.org/r/307326
Change subject: Remove blockreview.py from framework
......................................................................
Remove blockreview.py from framework
- This script is not finished and was never used.
Put it out of the scope of the framework and delete it.
Change-Id: Ic47c233e85bb33b5bc6e460e0b392418a8c058b3
---
D blockreview.py
1 file changed, 0 insertions(+), 330 deletions(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/compat
refs/changes/26/307326/1
diff --git a/blockreview.py b/blockreview.py
deleted file mode 100644
index b59ed35..0000000
--- a/blockreview.py
+++ /dev/null
@@ -1,330 +0,0 @@
-#!/usr/bin/python
-# -*- coding: utf-8 -*-
-"""
-This bot implements a blocking review process for de-wiki first.
-For other sites this bot script must be changed.
-
-This script is run by [[de:User:xqt]]. It should
-not be run by other users without prior contact.
-
-The following parameters are supported:
-
--
-
-All other parameters will be regarded as part of the title of a single page,
-and the bot will only work on that single page.
-"""
-#
-# (C) xqt, 2010-2013
-#
-# Distributed under the terms of the MIT license.
-#
-__version__ = '$Id$'
-#
-
-import wikipedia as pywikibot
-import userlib
-import query
-
-
-class BlockreviewBot:
- # notes
- note_admin = {
- 'de': u"""
-
-== Sperrprüfungswunsch ==
-Hallo %(admin)s,
-
-[[%(user)s]] wünscht die Prüfung seiner/ihrer Sperre vom %(time)s über die
Dauer von %(duration)s. Kommentar war ''%(comment)s''. Bitte äußere Dich dazu
auf der [[%(usertalk)s#%(section)s|Diskussionsseite]]. -~~~~"""
- }
-
- note_project = {
- 'de': u"""
-
-== [[%(user)s]] ==
-* gesperrt am %(time)s durch {{Benutzer|%(admin)s}} für eine Dauer von
%(duration)s.
-* Kommentar war ''%(comment)s''.
-* [[Benutzer:%(admin)s]] wurde [[Benutzer
Diskussion:%(admin)s#Sperrprüfungswunsch|benachrichtigt]].
-* [[%(usertalk)s#%(section)s|Link zur Diskussion]]
-:<small>-~~~~</small>
-;Antrag entgegengenommen"""
- }
-
- # edit summaries
- msg_admin = {
- 'de': u'Bot-Benachrichtigung: Sperrprüfungswunsch von [[%(user)s]]',
- }
-
- msg_user = {
- 'de': u'Bot: Administrator [[Benutzer:%(admin)s|%(admin)s]] für
Sperrprüfung benachrichtigt',
- }
-
- msg_done = {
- 'de': u'Bot: Sperrprüfung abgeschlossen. Benutzer ist entsperrt.',
- }
-
- unblock_tpl = {
- 'de': u'Benutzer:TAXman/Sperrprüfungsverfahren',
- 'pt': u'Predefinição:Discussão de bloqueio',
- }
-
- review_cat = {
- 'de': u'Wikipedia:Sperrprüfung',
- }
-
- project_name = {
- 'de': u'Benutzer:TAXman/Sperrprüfung Neu',
- 'pt': u'Wikipedia:Pedidos a administradores/Discussão de bloqueio',
- }
-
- def __init__(self, dry):
- """
- Constructor. Parameters:
- * generator - The page generator that determines on which pages
- to work on.
- * dry - If True, doesn't do any real changes, but only shows
- what would have been changed.
- """
- self.site = pywikibot.getSite()
- self.dry = dry
- self.info = None
- self.parts = None
-
- def run(self):
- # TODO: change the generator for template to the included category
- try:
- genPage = pywikibot.Page(self.site,
- self.unblock_tpl[self.site.lang],
- defaultNamespace=10)
- except KeyError:
- pywikibot.error(u'Language "%s" not supported by this bot.'
- % self.site.lang)
- else:
- for page in genPage.getReferences(follow_redirects=False,
- withTemplateInclusion=True,
- onlyTemplateInclusion=True):
- if page.namespace() == 3:
- self.treat(page)
- else:
- pywikibot.output(u'Ignoring %s, user namespace required'
- % page.title(asLink=True))
-
- def treat(self, userPage):
- """
- Loads the given page, does some changes, and saves it.
- """
- talkText = self.load(userPage)
- if not talkText:
- # sanity check. No talk page found.
- return
- unblock_tpl = self.unblock_tpl[self.site.lang]
- project_name = self.project_name[self.site.lang]
- user = userlib.User(self.site, userPage.title(withNamespace=False))
- saveAdmin = saveProject = False
- talkComment = None
- for templates in userPage.templatesWithParams():
- if templates[0] == unblock_tpl:
- self.getInfo(user)
- # Step 1
- # a new template is set on blocked users talk page.
- # Notify the blocking admin
- if templates[1] == [] or templates[1][0] == u'1':
- if self.info['action'] == 'block' or user.isBlocked():
- if self.site.sitename() == 'wikipedia:de':
- admin = userlib.User(self.site, self.info['user'])
- adminPage = admin.getUserTalkPage()
- adminText = adminPage.get()
- note = pywikibot.translate(self.site.lang,
- self.note_admin,
- self.parts)
- comment = pywikibot.translate(self.site.lang,
- self.msg_admin,
- self.parts)
- adminText += note
- self.save(adminText, adminPage, comment, False)
- ### test for pt-wiki
- ### just print all sysops talk pages
- elif self.site.sitename() == 'wikipedia:pt':
- import pagegenerators as pg
- gen = pg.PreloadingGenerator(self.SysopGenerator())
- for sysop in gen:
- print sysop.title()
-
- talkText = talkText.replace(u'{{%s}}' % unblock_tpl,
- u'{{%s|2}}' % unblock_tpl)
- talkText = talkText.replace(u'{{%s|1}}' % unblock_tpl,
- u'{{%s|2}}' % unblock_tpl)
- talkComment = pywikibot.translate(self.site.lang,
- self.msg_user
- % self.parts)
-
- # some test stuff
- if pywikibot.logger.isEnabledFor(pywikibot.DEBUG) \
- and self.site().loggedInAs() == u'Xqbot:':
- testPage = pywikibot.Page(self.site,
- 'Benutzer:Xqt/Test')
- test = testPage.get()
- test += note
- self.save(test, testPage,
- '[[WP:BA#SPP-Bot|SPPB-Test]]')
- else:
- # nicht blockiert. Fall auf DS abschließen
- talkText = talkText.replace(u'{{%s}}' % unblock_tpl,
- u'{{%s|4}}' % unblock_tpl)
- talkText = talkText.replace(u'{{%s|1}}' % unblock_tpl,
- u'{{%s|4}}' % unblock_tpl)
- talkComment = pywikibot.translate(self.site.lang,
- self.msg_done)
- # Step 2
- # Admin has been notified.
- # Wait for 2 hours, than put a message to the project page
- elif templates[1][0] == u'2':
- if self.info['action'] == 'block' or user.isBlocked():
- # TODO: check whether wait time is gone
- # check whether this entry already esists
- project = pywikibot.Page(self.site, project_name)
- projText = project.get()
- note = pywikibot.translate(self.site.lang,
- self.note_project,
- self.parts)
- comment = pywikibot.translate(self.site.lang,
- self.msg_admin,
- self.parts)
- projText += note
- self.save(projText, project, comment, botflag=False)
- talkText = talkText.replace(u'{{%s|2}}' % unblock_tpl,
- u'{{%s|3}}' % unblock_tpl)
- talkComment = u'Bot: [[%s|Wikipedia:Sperrprüfung]]
eingetragen' \
- % project_name
- else:
- # User is unblocked. Review can be closed
- talkText = talkText.replace(u'{{%s|2}}' % unblock_tpl,
- u'{{%s|4}}' % unblock_tpl)
- talkComment = pywikibot.translate(self.site.lang,
- self.msg_done)
- # Step 3
- # Admin is notified, central project page has a message
- # Discussion is going on
- # Check whether it can be closed
- elif templates[1][0] == u'3':
- if self.info['action'] == 'block' or user.isBlocked():
- pass
- else:
- # User is unblocked. Review can be closed
- talkText = talkText.replace(u'{{%s|3}}' % unblock_tpl,
- u'{{%s|4}}' % unblock_tpl)
- talkComment = pywikibot.translate(self.site.lang,
- self.msg_done)
- # Step 4
- # Review is closed
- elif templates[1][0] == u'4':
- # nothing left to do
- pass
- else:
- # wrong template found
- pass
-
- # at last if there is a talk comment, users talk page must be changed
- if talkComment:
- self.save(talkText, userPage, talkComment)
-
- def getInfo(self, user):
- if not self.info:
- self.info = self.site.logpages(1, mode='block',
- title=user.getUserPage().title(),
- dump=True).next()
- self.parts = {
- 'admin': self.info['user'],
- 'user': self.info['title'],
- 'usertalk': user.getUserTalkPage().title(),
- 'section': u'Sperrprüfung',
- 'time': self.info['timestamp'],
- 'duration': self.info['block']['duration'],
- 'comment': self.info['comment'],
- }
-
- def SysopGenerator(self):
- params = param = {
- 'action': 'query',
- 'list': 'allusers',
- 'augroup': 'sysop',
- 'auprop': 'groups',
- 'aulimit': 500,
- }
- data = query.GetData(params, self.site)
- for user in data['query']['allusers']:
- # exclude sysop bots
- if 'bot' not in user['groups']:
- # yield the sysop talkpage
- yield pywikibot.Page(self.site, user['name'],
- defaultNamespace=3)
-
- def load(self, page):
- """
- Loads the given page, does some changes, and saves it.
- """
- try:
- # Load the page
- text = page.get()
- except pywikibot.NoPage:
- pywikibot.output(u"Page %s does not exist; skipping."
- % page.title(asLink=True))
- except pywikibot.IsRedirectPage:
- pywikibot.output(u"Page %s is a redirect; skipping."
- % page.title(asLink=True))
- else:
- return text
- return None
-
- def save(self, text, page, comment, minorEdit=True, botflag=True):
- if text != page.get():
- # Show the title of the page we're working on.
- # Highlight the title in purple.
- pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
- % page.title())
- # show what was changed
- pywikibot.showDiff(page.get(), text)
- pywikibot.output(u'Comment: %s' % comment)
- if not self.dry:
- choice = pywikibot.inputChoice(
- u'Do you want to accept these changes?',
- ['Yes', 'No'], ['y', 'N'], 'N')
- if choice == 'y':
- try:
- # Save the page
- page.put(text, comment=comment, minorEdit=minorEdit,
- botflag=botflag)
- except pywikibot.LockedPage:
- pywikibot.output(u"Page %s is locked; skipping."
- % page.title(asLink=True))
- except pywikibot.EditConflict:
- pywikibot.output(
- u'Skipping %s because of edit conflict'
- % (page.title()))
- except pywikibot.SpamfilterError, error:
- pywikibot.output(
- u'Cannot change %s because of spam blacklist entry
'
- u'%s' % (page.title(), error.url))
- else:
- return True
- return
-
-
-def main():
- show = False
-
- # Parse command line arguments
- for arg in pywikibot.handleArgs():
- show = True
-
- if not show:
- bot = BlockreviewBot(pywikibot.simulate)
- bot.run()
- else:
- pywikibot.showHelp()
-
-if __name__ == "__main__":
- try:
- main()
- finally:
- pywikibot.stopme()
--
To view, visit https://gerrit.wikimedia.org/r/307326
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic47c233e85bb33b5bc6e460e0b392418a8c058b3
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/compat
Gerrit-Branch: master
Gerrit-Owner: Xqt <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits