Revision: 7619
Author:   alexsh
Date:     2009-11-09 18:35:28 +0000 (Mon, 09 Nov 2009)

Log Message:
-----------
wikipedia.py: change Site()._cookies save cookie data to dict
login.py: fix badtoken or anonymous edits after login if login data not exist.

Modified Paths:
--------------
    trunk/pywikipedia/login.py
    trunk/pywikipedia/wikipedia.py

Modified: trunk/pywikipedia/login.py
===================================================================
--- trunk/pywikipedia/login.py  2009-11-09 17:29:03 UTC (rev 7618)
+++ trunk/pywikipedia/login.py  2009-11-09 18:35:28 UTC (rev 7619)
@@ -79,6 +79,7 @@
 class LoginManager:
     def __init__(self, password = None, sysop = False, site = None, 
username=None, verbose=False):
         self.site = site or wikipedia.getSite()
+        self.sysop = sysop
         if username:
             self.username=username
             # perform writeback.
@@ -201,6 +202,12 @@
                 got_user = True
     
         if got_token and got_user:
+            index = self.site._userIndex(self.sysop)
+            self.site._cookies[index] = L
+            try:
+                self.site._token[index] = data['login']['lgtoken'] + "+\\"
+            except:
+                pass
             return L
         elif not captcha:
             solve = self.site.solveCaptcha(data)

Modified: trunk/pywikipedia/wikipedia.py
===================================================================
--- trunk/pywikipedia/wikipedia.py      2009-11-09 17:29:03 UTC (rev 7618)
+++ trunk/pywikipedia/wikipedia.py      2009-11-09 18:35:28 UTC (rev 7619)
@@ -5197,7 +5197,10 @@
         """Return a string containing the user's current cookies."""
         self._loadCookies(sysop = sysop)
         index = self._userIndex(sysop)
-        return self._cookies[index]
+        if self._cookies[index]:
+            return "; ".join(["%s=%s" % (v,k) for v,k in 
self._cookies[index].iteritems()])
+        else:
+            return None
 
     def _loadCookies(self, sysop = False):
         """Retrieve session cookies for login"""
@@ -5227,13 +5230,19 @@
                 self._isLoggedIn[index] = False
             else:
                 f = open(fn)
-                self._cookies[index] = '; '.join([x.strip() for x in 
f.readlines()])
+                tmp = {}
+                ck = re.compile("(.*?)=(.*?)\n")
+                for x in ck.findall(f.read()):
+                    tmp[ x[0] ] = x[1]
+                self._cookies[index] = tmp
                 f.close()
     
     def _readCookies(self, filename):
         try:
             f = open( config.datafilepath('login-data', filename) )
-            data = '; '.join([p.strip() for p in f.readlines()])
+            ck = re.compile("(.*?)=(.*?)\n")
+            data = dict([(x[0],x[1]) for x in ck.findall(f.read())])
+            #data = dict(ck.findall(f.read()))
             f.close()
             return data
         except IOError:



_______________________________________________
Pywikipedia-svn mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/pywikipedia-svn

Reply via email to