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