From f38347c9666faafb90df0b69b1bdf6f3686958b8 Mon Sep 17 00:00:00 2001
From: Luke Faraone <luke@faraone.cc>
Date: Sun, 14 Jun 2015 12:46:31 -0700
Subject: [PATCH] Add support for querying the CheckUser log.

---
 mwclient/client.py  | 6 ++++++
 mwclient/listing.py | 9 +++++++++
 2 files changed, 15 insertions(+)

diff --git a/mwclient/client.py b/mwclient/client.py
index 3d37449..c2e6cbc 100644
--- a/mwclient/client.py
+++ b/mwclient/client.py
@@ -662,6 +662,12 @@ class Site(object):
                                                    end=end, dir=dir, user=user, title=title, action=action))
         return listing.List(self, 'logevents', 'le', limit=limit, **kwargs)
 
+    def checkuserlog(self, user=None, target=None, limit=10, dir='older', start=None, end=None):
+
+        kwargs = dict(listing.List.generate_kwargs('cul', target=target, start=start,
+                                                   end=end, dir=dir, user=user))
+        return listing.NestedList('entries', self, 'checkuserlog', 'cul', limit=limit, **kwargs)
+
     # def protectedtitles requires 1.15
     def random(self, namespace, limit=20):
         """Retrieves a generator of random page from a particular namespace.
diff --git a/mwclient/listing.py b/mwclient/listing.py
index 0e68e94..1c83a9e 100644
--- a/mwclient/listing.py
+++ b/mwclient/listing.py
@@ -107,6 +107,15 @@ class List(object):
             return List
 
 
+class NestedList(List):
+    def __init__(self, nested_param, *args, **kwargs):
+        List.__init__(self, *args, **kwargs)
+        self.nested_param = nested_param
+
+    def set_iter(self, data):
+        self._iter = iter(data['query'][self.result_member][self.nested_param])
+
+
 class GeneratorList(List):
 
     def __init__(self, site, list_name, prefix, *args, **kwargs):
-- 
GitLab