IulianR has uploaded a new change for review. ( 
https://gerrit.wikimedia.org/r/339930 )

Change subject: Improve isCategoryReview
......................................................................

Improve isCategoryReview

Bug: T61080
Change-Id: I9f0df26f6ef63d5a92a85e30913da2921d1af4da
---
M pywikibot/page.py
1 file changed, 24 insertions(+), 21 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/30/339930/1

diff --git a/pywikibot/page.py b/pywikibot/page.py
index 6f7c7be..2cc8cd2 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -801,30 +801,15 @@
         """
         if not self.isCategory():
             return False
-        if not hasattr(self, "_catredirect"):
+        if not hasattr(self, "_catredirtemplate"):
             catredirs = self.site._category_redirects()
-            for (template, args) in self.templatesWithParams():
+            for template in self.templates():
                 if template.title(withNamespace=False) in catredirs:
-                    # Get target (first template argument)
-                    try:
-                        p = pywikibot.Page(self.site, args[0].strip(), ns=14)
-                        if p.namespace() == 14:
-                            self._catredirect = p.title()
-                        else:
-                            pywikibot.warning(
-                                u"Target %s on %s is not a category"
-                                % (p.title(asLink=True),
-                                   self.title(asLink=True)))
-                            self._catredirect = False
-                    except IndexError:
-                        pywikibot.warning(
-                            u"No target for category redirect on %s"
-                            % self.title(asLink=True))
-                        self._catredirect = False
+                    self._catredirtemplate = template
                     break
             else:
-                self._catredirect = False
-        return bool(self._catredirect)
+                self._catredirtemplate = False
+        return bool(self._catredirtemplate)
 
     def getCategoryRedirectTarget(self):
         """
@@ -833,7 +818,25 @@
         @rtype: Category
         """
         if self.isCategoryRedirect():
-            return Category(Link(self._catredirect, self.site))
+            # Get target
+            templatesDict = dict(self.templatesWithParams)
+            args = templatesDict[self._catredirtemplate]
+            try:
+                p = pywikibot.Page(self.site, args[0].strip(), ns=14)
+                if p.namespace() == 14:
+                    return Category(Link(p.title, self.site))
+                else:
+                    pywikibot.warning(
+                        u"Target %s on %s is not a category"
+                        % (p.title(asLink=True),
+                           self.title(asLink=True)))
+                    raise pywikibot.IsNotRedirectPage(self)
+            except IndexError:
+                pywikibot.warning(
+                    u"No target for category redirect on %s"
+                    % self.title(asLink=True))
+                raise pywikibot.IsNotRedirectPage(self)
+
         raise pywikibot.IsNotRedirectPage(self)
 
     @deprecated("interwiki.page_empty_check(page)")

-- 
To view, visit https://gerrit.wikimedia.org/r/339930
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9f0df26f6ef63d5a92a85e30913da2921d1af4da
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: IulianR <iulian.rad...@gmail.com>

_______________________________________________
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to