http://www.mediawiki.org/wiki/Special:Code/pywikipedia/10566
Revision: 10566 Author: xqt Date: 2012-10-14 12:57:06 +0000 (Sun, 14 Oct 2012) Log Message: ----------- Bugfix for bug #3546620 * Disambigpages.linkedPages() doesn't raise pywikibot.NoPage error, so we check it with Page.exists() first. * lowercase key is needed vor mediawiki_messages since we call it via allmessages query and not the magicwords siteinfo query * Normalize templates with first letter uppercase * Add the default template "disambig" for the default (i.e. non-existant) mediawiki message only. If MediaWiki:Disambiguationspage exist, take the templates without changing its set. * Site.templates() does not return a list of titles but page links. Either we have to create a page link while retrieving the template via MediaWiki message or we use the page.title(withNamespace=False). I took the last one.
TODO: we have to check whether MediaWiki message has the right unicode format to compare with template link titles - sorry for that.
Modified Paths: -------------- branches/rewrite/pywikibot/page.py
Modified: branches/rewrite/pywikibot/page.py =================================================================== --- branches/rewrite/pywikibot/page.py 2012-10-14 12:44:14 UTC (rev 10565) +++ branches/rewrite/pywikibot/page.py 2012-10-14 12:57:06 UTC (rev 10566) @@ -536,10 +536,10 @@ except KeyError: distl = None if distl is None: - try: - disambigpages = Page(self.site, - "MediaWiki:Disambiguationspage") - disambigs = set(link + disambigpages = Page(self.site, + "MediaWiki:Disambiguationspage") + if disambigpages.exists(): + disambigs = set(link.title(withNamespace=False) for link in disambigpages.linkedPages() if link.namespace() == 10) # add index article templates @@ -548,19 +548,24 @@ regex = re.compile('(((.+?)))') content = disambigpages.get() for index in regex.findall(content): - disambigs.add(index) - except pywikibot.NoPage: - disambigs = set([self.site.mediawiki_message( - 'Disambiguationspage').split(':', 1)[1]]) - # add the default template(s) - self.site._disambigtemplates = disambigs | default + disambigs.add(index[:1].upper() + index[1:]) + else: + message = self.site.mediawiki_message( + 'disambiguationspage').split(':', 1)[1] + # add the default template(s) for default mw message + # only + disambigs = set([message[:1].upper() + + message[1:]]) | default + self.site._disambigtemplates = disambigs else: # Normalize template capitalization self.site._disambigtemplates = set( t[:1].upper() + t[1:] for t in distl ) + templates = set(tl.title(withNamespace=False) + for tl in self.templates()) disambigInPage = self.site._disambigtemplates.intersection( - self.templates()) + templates) self._isDisambig = self.namespace() != 10 and \ len(disambigInPage) > 0 return self._isDisambig
pywikipedia-svn@lists.wikimedia.org