Revision: 8305 Author: cydeweys Date: 2010-06-16 17:55:23 +0000 (Wed, 16 Jun 2010)
Log Message: ----------- Handle expired token errors directly in query.py by re-getting the token. This fixes an error where long runs involving admin actions were being aborted because of lost tokens.
Modified Paths: -------------- trunk/pywikipedia/query.py trunk/pywikipedia/wikipedia.py
Modified: trunk/pywikipedia/query.py =================================================================== --- trunk/pywikipedia/query.py 2010-06-16 17:54:08 UTC (rev 8304) +++ trunk/pywikipedia/query.py 2010-06-16 17:55:23 UTC (rev 8305) @@ -130,6 +130,13 @@ # decodedObj = eval( jsontext )
jsontext = json.loads( jsontext ) + + if "error" in jsontext: + errorDetails = jsontext["error"] + if errorDetails["code"] == 'badtoken': + wikipedia.output('Received a bad login token error from the server. Attempting to refresh.') + params['token'] = site.getToken(sysop = sysop, getagain = True) + continue
if back_response: return res, jsontext
Modified: trunk/pywikipedia/wikipedia.py =================================================================== --- trunk/pywikipedia/wikipedia.py 2010-06-16 17:54:08 UTC (rev 8304) +++ trunk/pywikipedia/wikipedia.py 2010-06-16 17:55:23 UTC (rev 8305) @@ -2580,7 +2580,14 @@ if 'comment' in r: c = r['comment'] #revision id, edit date/time, user name, edit summary - dataQ.append((r['revid'], r['timestamp'], r['user'], c)) + (revidStrr, timestampStrr, userStrr) = (None, None, None) + if 'revid' in r: + revidStrr = r['revid'] + if 'timestamp' in r: + timestampStrr = r['timestamp'] + if 'user' in r: + userStrr = r['user'] + dataQ.append((revidStrr, timestampStrr, userStrr, c))
if len(result['query']['pages'].values()[0]['revisions']) < revCount: thisHistoryDone = True