Revision: 7738
Author:   alexsh
Date:     2009-12-07 07:24:45 +0000 (Mon, 07 Dec 2009)

Log Message:
-----------
Fix API Upload decodeError (API mode still bypass until I confirm it is stable)

Modified Paths:
--------------
    trunk/pywikipedia/query.py
    trunk/pywikipedia/upload.py

Modified: trunk/pywikipedia/query.py
===================================================================
--- trunk/pywikipedia/query.py  2009-12-06 14:05:17 UTC (rev 7737)
+++ trunk/pywikipedia/query.py  2009-12-07 07:24:45 UTC (rev 7738)
@@ -46,7 +46,9 @@
     titlecount = 0
     
     for k,v in params.iteritems():
-        if type(v) == list:
+        if k == u'file':
+            data[k] = v
+        elif type(v) == list:
             if k in [u'titles', u'pageids', u'revids', u'ususers'] and len(v) 
> 10:
                 # Titles param might be long, case convert it to post request
                 titlecount = len(params[k])
@@ -66,7 +68,8 @@
         params['noprofile'] = ''
     
     if data:
-        del params[data.keys()[0]] 
+        for k in data:
+            del params[k] 
     
     if wikipedia.verbose: #dump params info.
         wikipedia.output(u"==== API action:%s ====" % params[u'action'])
@@ -109,14 +112,10 @@
     while retryCount >= 0:
         try:
             jsontext = "Nothing received"
-            if params['action'] == 'upload' and ('file' in params or cont):
+            if params['action'] == 'upload' and ('file' in data):
                 import upload
-                if not cont:
-                    cont = params['file']
-                    del params['file']
-                
                 res, jsontext = upload.post_multipart(site, path, 
params.items(),
-                  (('file', params['filename'].encode(site.encoding()), 
cont),),
+                  (('file', params['filename'].encode(site.encoding()), 
data['file']),),
                   site.cookies(sysop=sysop)
                   )
             elif params['action'] in postAC:

Modified: trunk/pywikipedia/upload.py
===================================================================
--- trunk/pywikipedia/upload.py 2009-12-06 14:05:17 UTC (rev 7737)
+++ trunk/pywikipedia/upload.py 2009-12-07 07:24:45 UTC (rev 7738)
@@ -47,9 +47,12 @@
     lines = []
     for (key, value) in fields:
         lines.append('--' + boundary)
-        lines.append('Content-Disposition: form-data; name="%s"' % key)
+        lines.append('Content-Disposition: form-data; name="%s"' % str(key))
         lines.append('')
-        lines.append(value)
+        try:
+            lines.append(str(value))
+        except UnicodeEncodeError:
+            lines.append(value.encode('utf-8'))
     for (key, filename, value) in files:
         lines.append('--' + boundary)
         lines.append('Content-Disposition: form-data; name="%s"; 
filename="%s"' % (key, filename))



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

Reply via email to