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

--
To view, visit https://gerrit.wikimedia.org/r/538378
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.wikimedia.org/r/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 <[email protected]>
Gerrit-Reviewer: Strainu <[email protected]>
Gerrit-Reviewer: jenkins-bot (75)
_______________________________________________
Pywikibot-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikibot-commits

Reply via email to