jenkins-bot has submitted this change and it was merged. ( https://gerrit.wikimedia.org/r/538378 )
Change subject: [IMPR] Upcast getRedirectTarget result ......................................................................
[IMPR] Upcast getRedirectTarget result
- return the appropriate page subclass with getRedirectTarget - update tests accordingly
Bug: T233392 Change-Id: Ic6e9f9d1ef771628340c48358c921991e9697fc1 --- M pywikibot/site.py M tests/page_tests.py 2 files changed, 13 insertions(+), 3 deletions(-)
Approvals: Strainu: Looks good to me, approved jenkins-bot: Verified
diff --git a/pywikibot/site.py b/pywikibot/site.py index 48ccbb5..5643e6c 100644 --- a/pywikibot/site.py +++ b/pywikibot/site.py @@ -3238,7 +3238,6 @@ # target_title is the ultimate target target = pywikibot.Page(self, pagedata['title'], pagedata['ns']) api.update_page(target, pagedata, ['info']) - page._redirtarget = target else: # Target is an intermediate redirect -> double redirect. # Do not bypass double-redirects and return the ultimate target; @@ -3246,7 +3245,16 @@ # This handles also redirects to sections, as sametitle() # does not ignore sections. target = pywikibot.Page(self, target_title) - page._redirtarget = target + + # Upcast to proper Page subclass. + ns = target.namespace() + if ns == 2: + target = pywikibot.User(target) + elif ns == 6: + target = pywikibot.FilePage(target) + elif ns == 14: + target = pywikibot.Category(target) + page._redirtarget = target
return page._redirtarget
diff --git a/tests/page_tests.py b/tests/page_tests.py index 7aa8008..b6c6152 100644 --- a/tests/page_tests.py +++ b/tests/page_tests.py @@ -927,7 +927,9 @@ p1 = pywikibot.Page(site, 'User:Legoktm/R1') p2 = pywikibot.Page(site, 'User:Legoktm/R2') self.assertTrue(p1.isRedirectPage()) - self.assertEqual(p1.getRedirectTarget(), p2) + p3 = p1.getRedirectTarget() + self.assertEqual(p3, p2) + self.assertIsInstance(p3, pywikibot.User)
def testPageGet(self): """Test C{Page.get()} on different types of pages."""