jenkins-bot has submitted this change and it was merged.
Change subject: Enabling usage of Disambiguator ......................................................................
Enabling usage of Disambiguator
Per help page [1] and some examples [2] [3] when someone runs isDisambig method this code checks if the Disambiguator is enabled, By checking list of extensions in siteinfo, if the extension is not enabaled (like [4]) returns the old way but if exists (like [5]) uses API to check being disambiguation. For more info see the examples I showed in [2] and [3]
It's prttey important, and please review as soon as possible because if the extension is enabled, the old way doens't work now. See the bug. [1]: https://www.mediawiki.org/wiki/Extension:Disambiguator [2]: https://en.wikipedia.org/w/api.php?action=query&titles=Aa%20River&pr... [3]: https://en.wikipedia.org/w/api.php?action=query&titles=Tehran&prop=p... [4]: http://tools.wmflabs.org/wikitest-rtl/w/index.php?title=Special:Disambiguati... [5]: https://en.wikipedia.org/wiki/Special:DisambiguationPages
Bug: 54480 Change-Id: Ie3c46671d888cf917640fc732a28cc827028d0de --- M wikipedia.py 1 file changed, 31 insertions(+), 6 deletions(-)
Approvals: Merlijn van Deen: Looks good to me, approved jenkins-bot: Verified
diff --git a/wikipedia.py b/wikipedia.py index a044026..15a40f2 100644 --- a/wikipedia.py +++ b/wikipedia.py @@ -1510,11 +1510,38 @@ def isImage(self): """Return True if this is an image description page, False otherwise.""" return self.namespace() == 6 - def isDisambig(self, get_Index=True): - """Return True if this is a disambiguation page, False otherwise. + """Return True if this is a disambiguation page, False otherwise.""" + if not hasattr(self, "_isDisambig"): + extensions = self._site.siteinfo('extensions') + namesofextensions = [] + for extension in extensions: + namesofextensions.append(extension['name']) + if not u'Disambiguator' in namesofextensions: + return self._isDisambig_disambiguationspage(get_Index) + else: + return self._isDisambig_disambiguator(get_Index) + else: + return self._isDisambig
- Relies on the presence of specific templates, identified in + def _isDisambig_disambiguator(self, get_Index=True): + params = { + 'action' : 'query', + 'titles' : self.title(), + 'prop' : 'pageprops', + 'ppprop' : 'disambiguation' + } + data = query.GetData(params, self._site)['query']['pages'].values()[0] + self._isDisambig = False + if data.has_key(u'missing'): + raise NoPage('Page %s does not exist' % self.title(asLink=True)) + if data.has_key(u'pageprops'): + if data[u'pageprops'].has_key(u'disambiguation'): + self._isDisambig = True + return self._isDisambig + + def _isDisambig_disambiguationspage(self, get_Index=True): + """Relies on the presence of specific templates, identified in the Family file or on a wiki page, to identify disambiguation pages.
@@ -1527,9 +1554,7 @@ which are given on en-wiki
Template:Disambig is always assumed to be default, and will be - appended regardless of its existence. - - """ + appended regardless of its existence.""" if not hasattr(self, "_isDisambig"): if not hasattr(self._site, "_disambigtemplates"): try:
pywikibot-commits@lists.wikimedia.org