Revision: 6830
Author: russblau
Date: 2009-05-05 17:10:40 +0000 (Tue, 05 May 2009)
Log Message:
-----------
Fix bug 2785994: Page.backlinks cannot work well on some pages
Modified Paths:
--------------
branches/rewrite/pywikibot/page.py
branches/rewrite/pywikibot/site.py
Modified: branches/rewrite/pywikibot/page.py
===================================================================
--- branches/rewrite/pywikibot/page.py 2009-05-05 17:00:40 UTC (rev 6829)
+++ branches/rewrite/pywikibot/page.py 2009-05-05 17:10:40 UTC (rev 6830)
@@ -83,6 +83,8 @@
nsindex = source.ns_index(title[ :pos])
if nsindex:
self._ns = nsindex
+ # normalize namespace, in case an alias was used
+ title = source.namespace(nsindex) + title[pos: ]
if u"#" in title:
title, self._section = title.split(u"#", 1)
else:
Modified: branches/rewrite/pywikibot/site.py
===================================================================
--- branches/rewrite/pywikibot/site.py 2009-05-05 17:00:40 UTC (rev 6829)
+++ branches/rewrite/pywikibot/site.py 2009-05-05 17:10:40 UTC (rev 6830)
@@ -1116,16 +1116,23 @@
# really redirects to this page
redirgen = api.PageGenerator("backlinks", gbltitle=bltitle,
site=self, gblfilterredir="redirects")
- genlist = [blgen]
+ genlist = {None: blgen}
for redir in redirgen:
+ if redir == page:
+ # if a wiki contains pages whose titles contain
+ # namespace aliases that existed before those aliases
+ # were defined (example: [[WP:Sandbox]] existed as a
+ # redirect to [[Wikipedia:Sandbox]] before the WP: alias
+ # was created) they can be returned as redirects to
+ # themselves; skip these
+ continue
if redir.getRedirectTarget() == page:
- genlist.append(
- self.pagebacklinks(
- redir, followRedirects=True,
- filterRedirects=filterRedirects,
- namespaces=namespaces))
+ genlist[redir.title()] = self.pagebacklinks(
+ redir, followRedirects=True,
+
filterRedirects=filterRedirects,
+ namespaces=namespaces)
import itertools
- return itertools.chain(*genlist)
+ return itertools.chain(*genlist.values())
return blgen
def page_embeddedin(self, page, filterRedirects=None, namespaces=None):
_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn