Ricordisamoa has uploaded a new change for review.

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

Change subject: refactor unusedfiles.py
......................................................................

refactor unusedfiles.py

with a new UnusedFilesBot class that inherits .userPut()
from pywikibot.Bot (with built-in 'always' option)

Change-Id: Ib4272cf3009213300ac1d461fd18618dc260e925
---
M scripts/unusedfiles.py
1 file changed, 47 insertions(+), 49 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/43/148343/1

diff --git a/scripts/unusedfiles.py b/scripts/unusedfiles.py
index 55730f3..5f3525f 100644
--- a/scripts/unusedfiles.py
+++ b/scripts/unusedfiles.py
@@ -14,6 +14,7 @@
 # (C) Leonardo Gregianin, 2007
 # (C) Filnik, 2008
 # (c) xqt, 2011-2014
+# (C) Pywikibot team, 2014
 #
 # Distributed under the terms of the MIT license.
 #
@@ -48,69 +49,66 @@
 }
 
 
-def appendtext(page, apptext, always):
-    if page.isRedirectPage():
-        page = page.getRedirectTarget()
-    if not page.exists():
-        if page.isTalkPage():
-            text = u''
+class UnusedFilesBot(Bot):
+    def run(self):
+        generator = pagegenerators.UnusedFilesGenerator()
+        generator = pagegenerators.PreloadingGenerator(generator)
+        for image in generator:
+            if (except_text_translated.encode('utf-8')
+                    not in image.getImagePageHtml() and
+                    u'http://' not in image.text):
+                pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
+                                 % image.title())
+                if template_image in image.text:
+                    pywikibot.output(u"%s done already"
+                                     % image.title(asLink=True))
+                    continue
+                appendtext(image, u"\n\n" + template_image, always)
+                uploader = image.getFileVersionHistory().pop(0)['user']
+                user = pywikibot.User(mysite, uploader)
+                usertalkpage = user.getUserTalkPage()
+                msg2uploader = template_user % {'title': image.title()}
+                self.treat(usertalkpage, msg2uploader, always)
+
+    def treat(self, page, apptext, always):
+        if page.isRedirectPage():
+            page = page.getRedirectTarget()
+        if page.exists():
+            text = page.text
         else:
-            raise pywikibot.NoPage(u"Page '%s' does not exist" % page.title())
-    else:
-        text = page.text
-    # Here you can go editing. If you find you do not
-    # want to edit this page, just return
-    oldtext = text
-    text += apptext
-    if text != oldtext:
-        pywikibot.showDiff(oldtext, text)
-        if not always:
-            choice = pywikibot.inputChoice(
-                u'Do you want to accept these changes?', ['Yes', 'No', 'All'],
-                'yNa', 'N')
-            if choice == 'a':
-                always = True
-        if always or choice == 'y':
-            page.text = text
-            page.save(i18n.translate(pywikibot.Site(), comment,
-                                     fallback=True))
+            if page.isTalkPage():
+                text = u''
+            else:
+                raise pywikibot.NoPage(u"Page '%s' does not exist" % 
page.title())
+
+        # Here you can go editing. If you find you do not
+        # want to edit this page, just return
+        oldtext = text
+        text += apptext
+        comment = i18n.translate(page.site, comment, fallback=True)
+        self.userPut(page, oldtext, text, comment=comment)
 
 
 def main():
-    always = False
+    options = {}
 
     for arg in pywikibot.handleArgs():
         if arg == '-always':
-            always = True
+            options['always'] = True
 
-    mysite = pywikibot.Site()
+    site = pywikibot.Site()
     # If anything needs to be prepared, you can do it here
-    template_image = i18n.translate(pywikibot.Site(),
+    template_image = i18n.translate(site,
                                     template_to_the_image)
-    template_user = i18n.translate(pywikibot.Site(),
+    template_user = i18n.translate(site,
                                    template_to_the_user)
-    except_text_translated = i18n.translate(pywikibot.Site(), except_text)
+    except_text_translated = i18n.translate(site, except_text)
     if not(template_image and template_user and except_text_translated):
         pywikibot.warning(u'This script is not localized for %s site.' % 
mysite)
         return
-    generator = pagegenerators.UnusedFilesGenerator()
-    generator = pagegenerators.PreloadingGenerator(generator)
-    for image in generator:
-        if (except_text_translated.encode('utf-8')
-                not in image.getImagePageHtml() and
-                u'http://' not in image.text):
-            pywikibot.output(u"\n\n>>> \03{lightpurple}%s\03{default} <<<"
-                             % image.title())
-            if template_image in image.text:
-                pywikibot.output(u"%s done already"
-                                 % image.title(asLink=True))
-                continue
-            appendtext(image, u"\n\n" + template_image, always)
-            uploader = image.getFileVersionHistory().pop(0)['user']
-            user = pywikibot.User(mysite, uploader)
-            usertalkpage = user.getUserTalkPage()
-            msg2uploader = template_user % {'title': image.title()}
-            appendtext(usertalkpage, msg2uploader, always)
+
+    bot = UnusedFilesBot(**options)
+    bot.run()
 
 
 if __name__ == "__main__":

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ib4272cf3009213300ac1d461fd18618dc260e925
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Ricordisamoa <ricordisa...@openmailbox.org>

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

Reply via email to