Revision: 8619
Author: xqt
Date: 2010-10-07 08:51:35 +0000 (Thu, 07 Oct 2010)
Log Message:
-----------
GetDisambigTemplates(site) removed - it never worked
Modified Paths:
--------------
trunk/pywikipedia/query.py
Modified: trunk/pywikipedia/query.py
===================================================================
--- trunk/pywikipedia/query.py 2010-10-07 08:39:30 UTC (rev 8618)
+++ trunk/pywikipedia/query.py 2010-10-07 08:51:35 UTC (rev 8619)
@@ -195,42 +195,6 @@
params = CombineParams( params, extraParams )
return GetData(params, site)
-def GetDisambigTemplates(site):
- """This method will return a set of disambiguation templates.
- Template:Disambig is always assumed to be default, and will be
- appended (in localized format) regardless of its existence.
- The rest will be aquired from the Wikipedia:Disambiguation Templates page.
- Only links to templates will be used from that page.
- """
-
- disambigs = set()
- disambigName = wikipedia.translate(site, site.family.disambiguationTemplates())
- disListName = u"Wikipedia:Disambiguation Templates"
- disListId = 0
-
- templateNames = GetLinks(site, [disListName, disambigName])
- for id, page in templateNames['pages'].iteritems():
- if page['title'] in disambigName:
- if 'normalizedTitle' in page:
- disambigs.add(page['normalizedTitle'])
- elif 'redirect' in page:
- disambigs.add(page['title'])
- elif page['title'] == disListName:
- if 'normalizedTitle' in page:
- if 'refid' in page:
- disListId = page['refid']
- else:
- disListId = id
-
- # Disambig page was found
- if disListId > 0:
- page = templateNames['pages'][disListId]
- if 'links' in page:
- for l in page['links']:
- if l['ns'] == 10:
- disambigs.add(l['*'])
-
- return disambigs
#
#
# Helper utilities
Revision: 8615
Author: xqt
Date: 2010-10-06 16:04:16 +0000 (Wed, 06 Oct 2010)
Log Message:
-----------
update from trunk r8613
Modified Paths:
--------------
branches/rewrite/pywikibot/page.py
Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py 2010-10-06 15:24:15 UTC (rev 8614)
+++ branches/rewrite/pywikibot/page.py 2010-10-06 16:04:16 UTC (rev 8615)
@@ -493,7 +493,7 @@
"""Return True if this is an image description page, False otherwise."""
return self.namespace() == 6
- def isDisambig(self):
+ def isDisambig(self, get_Index=True):
"""Return True if this is a disambiguation page, False otherwise.
Relies on the presence of specific templates, identified in
@@ -501,31 +501,53 @@
pages.
By default, loads a list of template names from the Family file;
- if the value in the Family file is None, looks for the list on
- [[MediaWiki:Disambiguationspage]].
+ if the value in the Family file is None no entry was made, looks for
+ the list on [[MediaWiki:Disambiguationspage]]. If this page does not
+ exist, take the mediawiki message.
+ If get_Index is True then also load the templates for index articles
+ which are given on en-wiki
+
+ Template:Disambig is always assumed to be default, and will be
+ appended regardless of its existence.
+
"""
if not hasattr(self, "_isDisambig"):
if not hasattr(self.site, "_disambigtemplates"):
- self.site._disambigtemplates = \
- self.site.family.disambig(self.site.code)
- if self.site._disambigtemplates is None:
+ default = set(self._site.family.disambig('_default'))
+ try:
+ distl = self.site.family.disambig(self.site.code,
+ fallback=False)
+ except KeyError:
+ distl = None
+ if distl is None:
try:
disambigpages = Page(self.site,
"MediaWiki:Disambiguationspage")
- self.site._disambigtemplates = [
- link.title(withNamespace=False)
- for link in disambigpages.linkedPages()
- if link.namespace() == 10
- ]
+ disambigs = set(link.title(withNamespace=False)
+ for link in disambigpages.linkedPages()
+ if link.namespace() == 10)
+ # add index article templates
+ if get_Index and \
+ self.site.sitename() == 'wikipedia:en':
+ regex = re.compile('\(\((.+?)\)\)')
+ content = disambigpages.get()
+ for index in regex.findall(content):
+ disambigs.add(index)
except pywikibot.NoPage:
- self.site._disambigtemplates = ['Disambig']
- for t in self.templates():
- if t.title(withNamespace=False) in self.site._disambigtemplates:
- self._isDisambig = True
- break
- else:
- self._isDisambig = False
+ disambigs = set([self.site.mediawiki_message(
+ 'Disambiguationspage').split(':', 1)[1]])
+ # add the default template(s)
+ self.site._disambigtemplates = disambigs | default
+ else:
+ # Normalize template capitalization
+ self.site._disambigtemplates = set(
+ t[:1].upper() + t[1:] for t in distl
+ )
+ disambigInPage = self.site._disambigtemplates.intersection(
+ self.templates())
+ self._isDisambig = self.namespace() != 10 and \
+ len(disambigInPage) > 0
return self._isDisambig
def getReferences(self, follow_redirects=True, withTemplateInclusion=True,
Revision: 8613
Author: xqt
Date: 2010-10-06 15:08:59 +0000 (Wed, 06 Oct 2010)
Log Message:
-----------
None-Type entry in the family file is obsolete now. Template:Disambig is always assumed to be default regardless of its existence. If no templates are given in the family file and MediaWiki:Disambiguationspage doesn't exist, load the template from mediawiki_message. For en-wiki load index article templates if new parameter get_Index is True (bug #2968140)
Modified Paths:
--------------
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2010-10-06 14:55:50 UTC (rev 8612)
+++ trunk/pywikipedia/wikipedia.py 2010-10-06 15:08:59 UTC (rev 8613)
@@ -1169,7 +1169,7 @@
"""Return True if this is an image description page, False otherwise."""
return self.namespace() == 6
- def isDisambig(self):
+ def isDisambig(self, get_Index=True):
"""Return True if this is a disambiguation page, False otherwise.
Relies on the presence of specific templates, identified in
@@ -1177,31 +1177,53 @@
pages.
By default, loads a list of template names from the Family file;
- if the value in the Family file is None, looks for the list on
- [[MediaWiki:Disambiguationspage]].
+ if the value in the Family file is None no entry was made, looks for
+ the list on [[MediaWiki:Disambiguationspage]]. If this page does not
+ exist, take the mediawiki message.
+ If get_Index is True then also load the templates for index articles
+ which are given on en-wiki
+
+ Template:Disambig is always assumed to be default, and will be
+ appended regardless of its existence.
+
"""
if not hasattr(self, "_isDisambig"):
if not hasattr(self._site, "_disambigtemplates"):
- distl = self._site.family.disambig(self._site.lang)
+ default = set(self._site.family.disambig('_default'))
+ try:
+ distl = self._site.family.disambig(self._site.lang,
+ fallback=False)
+ except KeyError:
+ distl = None
if distl is None:
try:
disambigpages = Page(self._site,
"MediaWiki:Disambiguationspage")
- self._site._disambigtemplates = set(
- link.titleWithoutNamespace()
- for link in disambigpages.linkedPages()
- if link.namespace() == 10
- )
+ disambigs = set(link.titleWithoutNamespace()
+ for link in disambigpages.linkedPages()
+ if link.namespace() == 10)
+ # add index article templates
+ if get_Index and \
+ self._site.sitename() == 'wikipedia:en':
+ regex = re.compile('\(\((.+?)\)\)')
+ content = disambigpages.get()
+ for index in regex.findall(content):
+ disambigs.add(index)
except NoPage:
- self._site._disambigtemplates = set(['Disambig'])
+ disambigs = set([self._site.mediawiki_message(
+ 'Disambiguationspage').split(':', 1)[1]])
+ # add the default template(s)
+ self._site._disambigtemplates = disambigs | default
else:
# Normalize template capitalization
self._site._disambigtemplates = set(
t[:1].upper() + t[1:] for t in distl
)
- disambigInPage = self._site._disambigtemplates.intersection(self.templates())
- self._isDisambig = self.namespace() != 10 and len(disambigInPage) > 0
+ disambigInPage = self._site._disambigtemplates.intersection(
+ self.templates())
+ self._isDisambig = self.namespace() != 10 and \
+ len(disambigInPage) > 0
return self._isDisambig
def canBeEdited(self):
Revision: 8611
Author: xqt
Date: 2010-10-06 06:10:17 +0000 (Wed, 06 Oct 2010)
Log Message:
-----------
refix for r8606
Modified Paths:
--------------
trunk/pywikipedia/nowcommons.py
Modified: trunk/pywikipedia/nowcommons.py
===================================================================
--- trunk/pywikipedia/nowcommons.py 2010-10-05 20:53:50 UTC (rev 8610)
+++ trunk/pywikipedia/nowcommons.py 2010-10-06 06:10:17 UTC (rev 8611)
@@ -272,7 +272,7 @@
return filenameOnCommons
# Function stolen from wikipedia.py and modified. Really needed?
- def urlname(talk_page):
+ def urlname(self, talk_page):
"""The name of the page this Page refers to, in a form suitable for the
URL of the page.