jenkins-bot merged this change.

View Change

Approvals: Strainu: Looks good to me, approved jenkins-bot: Verified
[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(-)

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."""

To view, visit change 538378. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-MessageType: merged
Gerrit-Change-Id: Ic6e9f9d1ef771628340c48358c921991e9697fc1
Gerrit-Change-Number: 538378
Gerrit-PatchSet: 1
Gerrit-Owner: Xqt <info@gno.de>
Gerrit-Reviewer: Strainu <wiki@strainu.ro>
Gerrit-Reviewer: jenkins-bot (75)