Xqt has uploaded a new change for review.

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

Change subject: [FEAT] Enable iprange with site.blocks generator.
......................................................................

[FEAT] Enable iprange with site.blocks generator.

mw API provides bkip parameter to filter an ip address or an ip range block.
Enable this feature with pwb.

Also add some additional documentations.

Bug: T125303
Change-Id: I9f4698a0b8319f8fb869c46c7d82e8d25a189822
---
M pywikibot/site.py
1 file changed, 17 insertions(+), 3 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core 
refs/changes/34/267434/1

diff --git a/pywikibot/site.py b/pywikibot/site.py
index 369972c..4032896 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -4119,7 +4119,7 @@
         return aigen
 
     def blocks(self, starttime=None, endtime=None, reverse=False,
-               blockids=None, users=None, step=None, total=None):
+               blockids=None, users=None, iprange=None, step=None, total=None):
         """Iterate all current blocks, in order of creation.
 
         Note that logevents only logs user blocks, while this method
@@ -4128,10 +4128,21 @@
         (see L{https://www.mediawiki.org/wiki/API:Blocks}).
 
         @param starttime: start iterating at this Timestamp
+        @type starttime: pywikibot.Timestamp
         @param endtime: stop iterating at this Timestamp
+        @type endtime: pywikibot.Timestamp
         @param reverse: if True, iterate oldest blocks first (default: newest)
-        @param blockids: only iterate blocks with these id numbers
+        @type reverse: bool
+        @param blockids: only iterate blocks with these id numbers. Numbers
+            must be separated by '|' if given by a basestring.
+        @type params: basestring, tuple or list
         @param users: only iterate blocks affecting these usernames or IPs
+        @type params: basestring, tuple or list
+        @param iprange: a single IP or an IP range. ranges broader than
+            IPv4/16 or IPv6/19 are not accepted.
+        @note: Cannot be used together with users. 
+        @param total: total amount of block entries
+        @type total: int
         """
         if starttime and endtime:
             if reverse:
@@ -4146,7 +4157,8 @@
                         "endtime must be before starttime with reverse=False")
         bkgen = self._generator(api.ListGenerator, type_arg="blocks",
                                 step=step, total=total)
-        bkgen.request["bkprop"] = 
"id|user|by|timestamp|expiry|reason|range|flags"
+        bkgen.request['bkprop'] = (
+            'id|user|userid|by|timestamp|expiry|reason|range|flags')
         if starttime:
             bkgen.request["bkstart"] = starttime
         if endtime:
@@ -4163,6 +4175,8 @@
             users = [user.upper() if is_IP(user) and '::' not in user else user
                      for user in users]
             bkgen.request["bkusers"] = users
+        elif iprange:
+            bkgen.requests['bkip'] = iprange
         return bkgen
 
     def exturlusage(self, url=None, protocol="http", namespaces=None,

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9f4698a0b8319f8fb869c46c7d82e8d25a189822
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Xqt <i...@gno.de>

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

Reply via email to