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

Change subject: [IMPR] some improvements vor vandalism closing bot
......................................................................

[IMPR] some improvements vor vandalism closing bot

- re.I for isIn function
- exceptionfor ValueError in userIsExperienced method
- use caseInsensitive for replaceExcept changing vmHead to replace
  lowercased IP6 user entries
- enlarge timeout for rc_listener
- fix some misspelling errors
- some tests added

This should solve 
https://de.wikipedia.org/w/index.php?title=Benutzer_Diskussion:Xqt&oldid=162107310#fehlende_.22erl..22-Markierung

Change-Id: I89c8f943f625a993d8036fbf3969a52440dc62a5
---
M tests/vandalism_tests.py
M vandalism.py
2 files changed, 46 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/bots/xqbot 
refs/changes/04/334904/1

diff --git a/tests/vandalism_tests.py b/tests/vandalism_tests.py
index 0b9d1ef..4e5ffb8 100644
--- a/tests/vandalism_tests.py
+++ b/tests/vandalism_tests.py
@@ -1,7 +1,7 @@
 # -*- coding: utf-8  -*-
 """Test vandalism modules."""
 #
-# (C) xqt, 2015-2016
+# (C) xqt, 2015-2017
 #
 # Distributed under the terms of the MIT license.
 #
@@ -9,10 +9,12 @@
 
 __version__ = '$Id$'
 
+import re
+
 import unittest
 
 from tests import utils  # noqa
-from vandalism import getAccuser
+from vandalism import getAccuser, vmHeadlineRegEx, isIn
 
 
 class TestVandalismMethods(unittest.TestCase):
@@ -33,23 +35,23 @@
             '11:46, 15. Nov. 2011 (CET) baz'),
             ('xqt', '2011 Nov 15 11:46'))
         self.assertEqual(getAccuser(
-            'foo bar ([[Benutzerin:xqt|Xqt]]) '
+            'foo [[Benutzerin:xqt|Xqt]] bar '
             '11:46, 15. Nov. 2012 (CET) baz'),
             ('xqt', '2012 Nov 15 11:46'))
         self.assertEqual(getAccuser(
-            'foo bar ([[benutzerin:xqt|xqt]]) '
+            'foo bar [[benutzerin:xqt|xqt]] '
             '11:46, 15. Nov. 2013 (CET) baz'),
             ('xqt', '2013 Nov 15 11:46'))
         self.assertEqual(getAccuser(
-            'foo bar ([[benutzerin:xqt|xqt]]) '
+            'foo bar [[benutzerin:xqt|xqt]] '
             '11:46, 15. Mai 2014 (CEST)'),
             ('xqt', '2014 Mai 15 11:46'))
         self.assertEqual(getAccuser(
-            'foo bar ([[user:Xqt|xqt]]) '
+            'foo bar [[user:Xqt|xqt]] '
             '11:46, 15. Apr. 2015 (CEST) baz'),
             ('Xqt', '2015 Apr 15 11:46'))
         self.assertEqual(getAccuser(
-            'foo bar ([[User_talk:xqt|Xqt]]) '
+            'foo bar [[User_talk:xqt|Xqt]] '
             '11:46, 15. Nov. 2016 (CEST)'),
             ('xqt', '2016 Nov 15 11:46'))
         self.assertEqual(getAccuser(
@@ -61,6 +63,31 @@
             '11:46, 15. Nov. 2018 (CET) baz'),
             ('xqt', '2018 Nov 15 11:46'))
 
+    def test_vmHeadlineRegEx(self):
+        """Test vmHeadlineRegEx."""
+        self.assertIsNotNone(isIn('== [[Benutzer:Xqt1]] ==',
+                                  re.escape('Xqt1')))
+        self.assertIsNotNone(isIn('== [[Benutzer:xqt2]] ==',
+                                  re.escape('Xqt2')))
+        self.assertIsNotNone(isIn('== [[Benutzerin:Xqt3]] ==',
+                                  re.escape('Xqt3')))
+        self.assertIsNotNone(isIn('== [[User:Xqt4]] ==',
+                                  re.escape('Xqt4')))
+        self.assertIsNotNone(isIn('== [[user:Xqt5]] ==',
+                                  re.escape('Xqt5')))
+        self.assertIsNotNone(isIn('== [[user:Xqt5]] ==',
+                                  re.escape('Xqt5')))
+        self.assertIsNotNone(isIn('== [[Benutzer:77.7.117.89]] ==',
+                                  re.escape('77.7.117.89')))
+        self.assertIsNotNone(isIn('== [[Benutzer:77.7.117.89]] ==',
+                                  re.escape('77.7.117.89')))
+        self.assertIsNotNone(isIn(
+            '== [[Benutzer:2003:D3:83C0:CB00:45F1:1850:1E89:1E22]] ==',
+            re.escape('2003:D3:83C0:CB00:45F1:1850:1E89:1E22')))
+        self.assertIsNotNone(isIn(
+            '== [[Benutzer:2003:d3:83c0:cb00:45f1:1850:1e89:1e22]] ==',
+            re.escape('2003:D3:83C0:CB00:45F1:1850:1E89:1E22')))
+
 
 if __name__ == '__main__':
     try:
diff --git a/vandalism.py b/vandalism.py
index bcdf62f..f20ad71 100644
--- a/vandalism.py
+++ b/vandalism.py
@@ -10,7 +10,7 @@
 """
 #
 # (C) Euku, 2009-2013
-# (C) xqt, 2013-2016
+# (C) xqt, 2013-2017
 #
 from __future__ import absolute_import, print_function, unicode_literals
 
@@ -55,7 +55,8 @@
 
 def isIn(text, regex):
     """Search regex in text."""
-    return re.search(regex, text, re.UNICODE)
+    # re.IGNORECASE to enable lowercased IP
+    return re.search(regex, text, re.UNICODE | re.IGNORECASE)
 
 
 def search(text, regex):
@@ -66,10 +67,10 @@
 
 def divideIntoSlices(rawText):
     """
-    Anlalyze text.
+    Analyze text.
 
     Analyze the whole text to get the intro, the headlines and the
-    corresponding bodies
+    corresponding bodies.
     """
     textLines = rawText.split("\n")
 
@@ -202,6 +203,10 @@
             user = pywikibot.User(self.site, username)
         except pywikibot.InvalidTitle:
             pywikibot.exception()
+            return False
+        except ValueError:
+            pywikibot.exception()
+            # TODO: convert to a valid User. In this case I found a user Talk 
page
             return False
         return user.editCount() >= self.useredits
 
@@ -346,7 +351,8 @@
                         vmHeads[i] = textlib.replaceExcept(
                             vmHeads[i], vmHeadlineRegEx % regExUserName,
                             "\\1 (%s) ==" % self.vmHeadNote,
-                            ['comment', 'nowiki', 'source'])  # for the 
headline
+                            ['comment', 'nowiki', 'source'],  # for the 
headline
+                            caseInsensitive=True)
                     vmBodies[i] += newLine + "\n"
 
         # was something changed?
@@ -541,7 +547,7 @@
     def run(self):
         """Run the bot."""
         starttime = time()
-        rc_listener = site_rc_listener(self.site, timeout=60)
+        rc_listener = site_rc_listener(self.site, timeout=100)
         while True:
             pywikibot.output(Timestamp.now().strftime(">> %H:%M:%S: "))
             self.read_lists()

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I89c8f943f625a993d8036fbf3969a52440dc62a5
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/bots/xqbot
Gerrit-Branch: master
Gerrit-Owner: Xqt <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to