Revision: 7980
Author: xqt
Date: 2010-03-06 10:27:46 +0000 (Sat, 06 Mar 2010)
Log Message:
-----------
Bugfix for #2963405
Modified Paths:
--------------
trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py 2010-03-05 23:38:37 UTC (rev 7979)
+++ trunk/pywikipedia/wikipedia.py 2010-03-06 10:27:46 UTC (rev 7980)
@@ -2081,7 +2081,7 @@
return self._putPageOld(text, comment, watchArticle, minorEdit, newPage, token, newToken, sysop, captcha=solve)
# We are expecting a 302 to the action=view page. I'm not sure why this was removed in r5019
- if response.status != 302 and data.strip() != u"":
+ if response.code != 302 and data.strip() != u"":
# Something went wrong, and we don't know what. Show the
# HTML code that hopefully includes some error message.
output(u"ERROR: Unexpected response from wiki server.")
Revision: 7979
Author: valhallasw
Date: 2010-03-05 23:38:37 +0000 (Fri, 05 Mar 2010)
Log Message:
-----------
Added Exception to filter IP address users, which are not supported by the API. This partially fixes issue #2929350
Modified Paths:
--------------
trunk/pywikipedia/userlib.py
Modified: trunk/pywikipedia/userlib.py
===================================================================
--- trunk/pywikipedia/userlib.py 2010-03-05 23:38:35 UTC (rev 7978)
+++ trunk/pywikipedia/userlib.py 2010-03-05 23:38:37 UTC (rev 7979)
@@ -32,6 +32,10 @@
class AlreadyUnblocked(UnblockError): pass
+class InvalidUser(wikipedia.InvalidTitle):
+ """The mediawiki API does not allow IP lookups."""
+ pass
+
class User(object):
"""
A class that represents a Wiki user.
@@ -606,14 +610,19 @@
#if self._blocked: #Get block ID
def getData(self):
- datas = {}
+ users = {}
params = {
'action': 'query',
'list': 'users',
'usprop': ['blockinfo', 'groups', 'editcount', 'registration', 'emailable', 'gender'],
'ususers': u'|'.join([n.name() for n in self.users]),
}
- return dict([(n['name'], n) for n in query.GetData(params, self.site)['query']['users']])
+ data = query.GetData(params, self.site)
+ for user in data['query']['users']:
+ if u'invalid' in user:
+ raise InvalidUser("User name '%s' is invalid. IP addresses are not supported." % user['name'])
+ users[user['name']] = user
+ return users
if __name__ == '__main__':
"""