[MediaWiki-commits] [Gerrit] code improvements - change (pywikibot/core)
Pyfisch has submitted this change and it was merged. Change subject: code improvements .. code improvements - check for a valid speedy deletion template on live wiki. The result is hold in the class container so we need to check only once. - use Site instead of Site.lang as key for twn dictionaries this should also solve that bug pointed out at https://sourceforge.net/p/pywikipediabot/bugs/1577/ i18n library uses the right code even the key would be changed from code to lang on twn dict in future or there might be a fallback from code to lang on i18n library. - test whether we are logged in as sysop because we have no exception here like in compat Change-Id: I39dd03bc04846f129ee20c7959a57e4685e87d94 --- M scripts/redirect.py 1 file changed, 29 insertions(+), 9 deletions(-) Approvals: Pyfisch: Verified; Looks good to me, approved diff --git a/scripts/redirect.py b/scripts/redirect.py index 0487f2a..d43d0d5 100755 --- a/scripts/redirect.py +++ b/scripts/redirect.py @@ -379,6 +379,7 @@ self.number = number self.delete = delete self.exiting = False +self._valid_template = None def prompt(self, question): if not self.always: @@ -393,6 +394,24 @@ elif choice == 'a': self.always = True return True + +def has_valid_template(self, twtitle): +Check whether a template from translatewiki.net does exist on real +wiki. We assume we are always working on self.site + +@param twtitle - a sting which is the i18n key + + +if self._valid_template is None: +self._valid_template = False +if i18n.twhas_key(self.site, twtitle): +template_msg = i18n.twtranslate(self.site, twtitle) +template = re.findall(u'.*?{{(.*?)[|}]', template_msg) +if template: +title = template[0] +page = pywikibot.Page(self.site, title, ns=10) +self._valid_template = page.exists() +return self._valid_template def delete_broken_redirects(self): # get reason for deletion text @@ -476,22 +495,23 @@ redir_page.title(asLink=True))): reason = i18n.twtranslate(self.site, 'redirect-remove-broken') -try: +if self.site.logged_in(sysop=True): redir_page.delete(reason, prompt=False) -except pywikibot.NoUsername: -if ((i18n.twhas_key( - targetPage.site.lang, - 'redirect-broken-redirect-template') and - i18n.twhas_key(targetPage.site.lang, -'redirect-remove-broken')) or -targetPage.site.lang == '-'): +else: +assert targetPage.site == self.site, ( +u'target page is on different site %s' +% targetPage.site) +if (self.has_valid_template( +'redirect-broken-redirect-template') and +i18n.twhas_key(targetPage.site, + 'redirect-remove-broken')): pywikibot.output(uNo sysop in user-config.py, uput page to speedy deletion.) content = redir_page.get(get_redirect=True) ### TODO: Add bot's signature if needed ### Not supported via TW yet content = i18n.twtranslate( -targetPage.site.lang, +targetPage.site, 'redirect-broken-redirect-template' ) + \n + content redir_page.put(content, reason) -- To view, visit https://gerrit.wikimedia.org/r/104811 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: I39dd03bc04846f129ee20c7959a57e4685e87d94 Gerrit-PatchSet: 3 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Xqt i...@gno.de Gerrit-Reviewer: Alex S.H. Lin ale...@mail2000.com.tw Gerrit-Reviewer: DrTrigon dr.tri...@surfeu.ch Gerrit-Reviewer: Huji huji.h...@gmail.com Gerrit-Reviewer: Ladsgroup ladsgr...@gmail.com Gerrit-Reviewer: Meno25 meno25m...@gmail.com Gerrit-Reviewer: Merlijn van Deen valhall...@arctus.nl Gerrit-Reviewer: Pyfisch pyfi...@gmail.com Gerrit-Reviewer: Russell Blau russb...@imapmail.org Gerrit-Reviewer: Siebrand siebr...@wikimedia.org Gerrit-Reviewer: Xqt i...@gno.de Gerrit-Reviewer:
[MediaWiki-commits] [Gerrit] code improvements - change (pywikibot/core)
Xqt has uploaded a new change for review. https://gerrit.wikimedia.org/r/104811 Change subject: code improvements .. code improvements - check for a valid speedy deletion template on live wiki - use Site.code instead of Site.lang as key for twn dictionaries this should also solve that bug pointed out at https://sourceforge.net/p/pywikipediabot/bugs/1577/ (there might be a fallback from code to lang on i18n library) Change-Id: I39dd03bc04846f129ee20c7959a57e4685e87d94 --- M scripts/redirect.py 1 file changed, 27 insertions(+), 9 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core refs/changes/11/104811/1 diff --git a/scripts/redirect.py b/scripts/redirect.py index 0487f2a..e64f6c5 100755 --- a/scripts/redirect.py +++ b/scripts/redirect.py @@ -394,6 +394,25 @@ self.always = True return True +def has_valid_template(self, site, twtitle): +Check whether a template from translatewiki.net does exist on real +wiki + +@param site - a site object +@param twtitle - a sting which is the i18n key + + +if not i18n.twhas_key(site, twtitle): +return False +template_msg = i18n.twtranslate(site, twtitle) +template = re.findall(u'.*?{{(.*?)[|}]', template_msg) +if not template: +return False +title = template[0] +# we need the site object to verify templates on different projects +page = pywikibot.Page(site, title, ns=10) +return page.exists() + def delete_broken_redirects(self): # get reason for deletion text for redir_name in self.generator.retrieve_broken_redirects(): @@ -476,22 +495,21 @@ redir_page.title(asLink=True))): reason = i18n.twtranslate(self.site, 'redirect-remove-broken') -try: +if self.site.logged_in(sysop=True): redir_page.delete(reason, prompt=False) -except pywikibot.NoUsername: -if ((i18n.twhas_key( - targetPage.site.lang, - 'redirect-broken-redirect-template') and - i18n.twhas_key(targetPage.site.lang, -'redirect-remove-broken')) or -targetPage.site.lang == '-'): +else: +if (self.has_valid_template( +targetPage.site, +'redirect-broken-redirect-template') and +i18n.twhas_key(targetPage.site.code, + 'redirect-remove-broken')): pywikibot.output(uNo sysop in user-config.py, uput page to speedy deletion.) content = redir_page.get(get_redirect=True) ### TODO: Add bot's signature if needed ### Not supported via TW yet content = i18n.twtranslate( -targetPage.site.lang, +targetPage.site.code, 'redirect-broken-redirect-template' ) + \n + content redir_page.put(content, reason) -- To view, visit https://gerrit.wikimedia.org/r/104811 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I39dd03bc04846f129ee20c7959a57e4685e87d94 Gerrit-PatchSet: 1 Gerrit-Project: pywikibot/core Gerrit-Branch: master Gerrit-Owner: Xqt i...@gno.de ___ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
[MediaWiki-commits] [Gerrit] Code improvements - change (pywikibot/core)
jenkins-bot has submitted this change and it was merged. Change subject: Code improvements .. Code improvements - remove obsolete threading - call getVersionHistory() as method not as function because we do not need the result here and use the internal variable _revisions - simplify result for isEmpty() - change return None to return which returns None per default - PEP8 changes Change-Id: I8eb71790f3c762feee1ff7d86fa91eed3be72b32 --- M pywikibot/page.py 1 file changed, 98 insertions(+), 78 deletions(-) Approvals: Xqt: Looks good to me, approved Pyfisch: Looks good to me, but someone else must approve jenkins-bot: Verified diff --git a/pywikibot/page.py b/pywikibot/page.py index ca159fd..89574f7 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -19,7 +19,6 @@ import htmlentitydefs import logging import re -import threading import unicodedata import urllib import collections @@ -83,7 +82,8 @@ self.__dict__ = source.__dict__ if title: # overwrite title -self._link = Link(title, source=source.site, defaultNamespace=ns) +self._link = Link(title, source=source.site, + defaultNamespace=ns) elif isinstance(source, Link): self._link = source self._revisions = {} @@ -141,11 +141,11 @@ title = title + # + self._link.section if asLink: if forceInterwiki or \ -(allowInterwiki and \ -(self.site.family.name != config.family - or self.site.code != config.mylang)): + (allowInterwiki and +(self.site.family.name != config.family + or self.site.code != config.mylang)): if self.site.family.name != config.family \ -and self.site.family.name != self.site.code: + and self.site.family.name != self.site.code: return u'[[%s:%s:%s]]' % (self.site.family.name, self.site.code, title) @@ -391,13 +391,12 @@ def expand_text(self, refresh=False): Return the page text with all templates expanded. -if not hasattr(self, _expanded_text) or (self._expanded_text is None) or refresh: -req = pywikibot.data.api.Request(action=expandtemplates, - text=self.text, - title=self.title(withSection=False), - site=self.site) +if not hasattr(self, _expanded_text) or ( +self._expanded_text is None) or refresh: +req = pywikibot.data.api.Request( +action=expandtemplates, text=self.text, +title=self.title(withSection=False), site=self.site) self._expanded_text = req.submit()[expandtemplates][*] - return self._expanded_text def userName(self): @@ -429,7 +428,7 @@ def previousRevision(self): Return the revision id for the previous revision of this Page. -vh = self.getVersionHistory(total=2) +self.getVersionHistory(total=2) revkey = sorted(self._revisions, reverse=True)[1] return revkey @@ -473,7 +472,8 @@ if template.title(withNamespace=False) in catredirs: # Get target (first template argument) try: -self._catredirect = self.site.namespace(14) + : + args[0].strip() +self._catredirect = %s:%s % (self.site.namespace(14), + args[0].strip()) break except IndexError: pywikibot.warning( @@ -501,10 +501,7 @@ txt = self.get() txt = pywikibot.removeLanguageLinks(txt, site=self.site) txt = pywikibot.removeCategoryLinks(txt, site=self.site) -if len(txt) 4: -return True -else: -return False +return len(txt) 4 def isTalkPage(self): Return True if this page is in any talk namespace. @@ -523,20 +520,18 @@ ns = self.namespace() if ns 0: # Special page -return None +return if self.isTalkPage(): if self.namespace() == 1: return Page(self.site, self.title(withNamespace=False)) else: -return Page( -self.site, -self.site.namespace(ns - 1) + ':' + self.title(withNamespace=False) -) +return Page(self.site, +%s:%s % (self.site.namespace(ns - 1), +
[MediaWiki-commits] [Gerrit] Code improvements - change (pywikibot/core)
Xqt has uploaded a new change for review. https://gerrit.wikimedia.org/r/94599 Change subject: Code improvements .. Code improvements - remove obsolete threading - call getVersionHistory() as method not as function because we do not need the result here and use the internal variable _revisions - simplify result for isEmpty() - change return None to return which returns None per default - PEP8 changes Change-Id: I8eb71790f3c762feee1ff7d86fa91eed3be72b32 --- M pywikibot/page.py 1 file changed, 24 insertions(+), 26 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core refs/changes/99/94599/1 diff --git a/pywikibot/page.py b/pywikibot/page.py index ca159fd..0d935ad 100644 --- a/pywikibot/page.py +++ b/pywikibot/page.py @@ -19,7 +19,6 @@ import htmlentitydefs import logging import re -import threading import unicodedata import urllib import collections @@ -141,11 +140,11 @@ title = title + # + self._link.section if asLink: if forceInterwiki or \ -(allowInterwiki and \ -(self.site.family.name != config.family - or self.site.code != config.mylang)): + (allowInterwiki and +(self.site.family.name != config.family + or self.site.code != config.mylang)): if self.site.family.name != config.family \ -and self.site.family.name != self.site.code: + and self.site.family.name != self.site.code: return u'[[%s:%s:%s]]' % (self.site.family.name, self.site.code, title) @@ -429,7 +428,7 @@ def previousRevision(self): Return the revision id for the previous revision of this Page. -vh = self.getVersionHistory(total=2) +self.getVersionHistory(total=2) revkey = sorted(self._revisions, reverse=True)[1] return revkey @@ -473,7 +472,8 @@ if template.title(withNamespace=False) in catredirs: # Get target (first template argument) try: -self._catredirect = self.site.namespace(14) + : + args[0].strip() +self._catredirect = %s:%s % (self.site.namespace(14), + args[0].strip()) break except IndexError: pywikibot.warning( @@ -501,10 +501,7 @@ txt = self.get() txt = pywikibot.removeLanguageLinks(txt, site=self.site) txt = pywikibot.removeCategoryLinks(txt, site=self.site) -if len(txt) 4: -return True -else: -return False +return len(txt) 4 def isTalkPage(self): Return True if this page is in any talk namespace. @@ -523,7 +520,7 @@ ns = self.namespace() if ns 0: # Special page -return None +return if self.isTalkPage(): if self.namespace() == 1: return Page(self.site, self.title(withNamespace=False)) @@ -854,15 +851,15 @@ family = self.site.family.name config.cosmetic_changes_disable.update({'wikidata': ('repo', )}) if config.cosmetic_changes_mylang_only: -cc = (family == config.family and \ - self.site.lang == config.mylang) or \ -family in config.cosmetic_changes_enable.keys() and \ -self.site.lang in config.cosmetic_changes_enable[family] +cc = ((family == config.family and + self.site.lang == config.mylang) or + family in config.cosmetic_changes_enable.keys() and + self.site.lang in config.cosmetic_changes_enable[family]) else: cc = True -cc = cc and not \ -(family in config.cosmetic_changes_disable.keys() and \ - self.site.lang in config.cosmetic_changes_disable[family]) +cc = (cc and not + (family in config.cosmetic_changes_disable.keys() and + self.site.lang in config.cosmetic_changes_disable[family])) if not cc: return old = self.text @@ -876,7 +873,8 @@ pageTitle=self.title()) self.text = ccToolkit.change(old) if comment and \ - old.strip().replace('\r\n', '\n') != self.text.strip().replace('\r\n', '\n'): + old.strip().replace('\r\n', + '\n') != self.text.strip().replace('\r\n', '\n'): comment += i18n.twtranslate(self.site, 'cosmetic_changes-append') return comment @@ -1342,8 +1340,8 @@ if not hasattr(self, _deletedRevs):