Mpaa has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/214487

Change subject: template.py: solve -cat argument conflict
......................................................................

template.py: solve -cat argument conflict

Solve conflict with -category param, renaming it -addcat.

Fixes also issues with
- bot.site in template.py
- addedCat in ReplaceRobot

Bug: T100522
Change-Id: I3c2176667b8ba8492fe59299ee7732c40e34f7fc
---
M scripts/replace.py
M scripts/template.py
2 files changed, 22 insertions(+), 15 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/87/214487/1

diff --git a/scripts/replace.py b/scripts/replace.py
index b815609..2aa2d34 100755
--- a/scripts/replace.py
+++ b/scripts/replace.py
@@ -425,6 +425,7 @@
                              replaced.
             * addedCat     - If set to a value, add this category to every page
                              touched.
+                             It can be a string or a Category object.
 
         Structure of the exceptions dictionary:
         This dictionary can have these keys:
@@ -462,10 +463,13 @@
         self.recursive = recursive
         if site:
             self.site = site
+
         if addedCat:
-            cat_ns = site.category_namespaces()[0]
-            self.addedCat = pywikibot.Page(self.site,
-                                           cat_ns + ':' + addedCat)
+            if isinstance(addedCat, pywikibot.Category):
+                self.addedCat = addedCat
+            else:
+                self.addedCat = pywikibot.Category(self.site, addedCat)
+
         self.sleep = sleep
         self.summary = summary
         self.changed_pages = 0
@@ -595,8 +599,10 @@
                     pywikibot.output(u'No changes were necessary in %s'
                                      % page.title(asLink=True))
                     break
-                if hasattr(self, "addedCat"):
-                    cats = page.categories(nofollow_redirects=True)
+                if hasattr(self, 'addedCat'):
+                    # Fetch only categories in wikitext, otherwise the others 
will
+                    # be explicitly added.
+                    cats = textlib.getCategoryLinks(original_text)
                     if self.addedCat not in cats:
                         cats.append(self.addedCat)
                         new_text = textlib.replaceCategoryLinks(new_text,
diff --git a/scripts/template.py b/scripts/template.py
index 999b22f..7c406cd 100755
--- a/scripts/template.py
+++ b/scripts/template.py
@@ -44,7 +44,7 @@
 
 -always      Don't bother asking to confirm any of the changes, Just Do It.
 
--category:   Appends the given category to every page that is edited.  This is
+-addcat:     Appends the given category to every page that is edited.  This is
              useful when a category is being broken out from a template
              parameter or when templates are being upmerged but more 
information
              must be preserved.
@@ -218,11 +218,11 @@
 
         self.generator = generator
         self.templates = templates
-        site = pywikibot.Site()
+        self.site = pywikibot.Site()
         if self.getOption('addedCat'):
-            self.options['addedCat'] = pywikibot.Category(site, 
self.getOption('addedCat'))
+            self.options['addedCat'] = pywikibot.Category(self.site, 
self.getOption('addedCat'))
 
-        comma = site.mediawiki_message('comma-separator')
+        comma = self.site.mediawiki_message('comma-separator')
 
         # get edit summary message if it's empty
         if not self.getOption('summary'):
@@ -230,13 +230,13 @@
                       'num': len(self.templates)}
             if self.getOption('remove'):
                 self.options['summary'] = i18n.twntranslate(
-                    site, 'template-removing', params)
+                    self.site, 'template-removing', params)
             elif self.getOption('subst'):
                 self.options['summary'] = i18n.twntranslate(
-                    site, 'template-substituting', params)
+                    self.site, 'template-substituting', params)
             else:
                 self.options['summary'] = i18n.twntranslate(
-                    site, 'template-changing', params)
+                    self.site, 'template-changing', params)
 
     def run(self):
         """Start the robot's action."""
@@ -286,7 +286,8 @@
         replaceBot = replace.ReplaceRobot(self.generator, replacements,
                                           exceptions, 
acceptall=self.getOption('always'),
                                           addedCat=self.getOption('addedCat'),
-                                          summary=self.getOption('summary'))
+                                          summary=self.getOption('summary'),
+                                          site=self.site)
         replaceBot.run()
 
 
@@ -327,8 +328,8 @@
                     u'Please enter the XML dump\'s filename: ')
             else:
                 xmlfilename = arg[5:]
-        elif arg.startswith('-category:'):
-            options['addedCat'] = arg[len('-category:'):]
+        elif arg.startswith('-addcat:'):
+            options['addedCat'] = arg[len('-addcat:'):]
         elif arg.startswith('-summary:'):
             options['summary'] = arg[len('-summary:'):]
         elif arg.startswith('-user:'):

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3c2176667b8ba8492fe59299ee7732c40e34f7fc
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Mpaa <mpaa.w...@gmail.com>

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

Reply via email to