Merge pull request #2060 from wing328/scottrw93_fix_2036

[Python] Fix for Python client upload list of files Issue #2036
This commit is contained in:
wing328 2016-02-07 23:47:36 +08:00
commit 59fde5f072
9 changed files with 54 additions and 50 deletions

View File

@ -1411,6 +1411,8 @@ public class DefaultCodegen {
} else if (param instanceof FormParameter) { } else if (param instanceof FormParameter) {
if ("file".equalsIgnoreCase(((FormParameter) param).getType())) { if ("file".equalsIgnoreCase(((FormParameter) param).getType())) {
p.isFile = true; p.isFile = true;
} else if("file".equals(p.baseType)){
p.isFile = true;
} else { } else {
p.notFile = true; p.notFile = true;
} }

View File

@ -117,11 +117,11 @@ class {{classname}}(object):
header_params['{{baseName}}'] = params['{{paramName}}'] header_params['{{baseName}}'] = params['{{paramName}}']
{{/headerParams}} {{/headerParams}}
form_params = {} form_params = []
files = {} files = {}
{{#formParams}} {{#formParams}}
if '{{paramName}}' in params: if '{{paramName}}' in params:
{{#notFile}}form_params['{{baseName}}'] = params['{{paramName}}']{{/notFile}}{{#isFile}}files['{{baseName}}'] = params['{{paramName}}']{{/isFile}} {{#notFile}}form_params.append(('{{baseName}}', params['{{paramName}}'])){{/notFile}}{{#isFile}}files['{{baseName}}'] = params['{{paramName}}']{{/isFile}}
{{/formParams}} {{/formParams}}
body_params = None body_params = None

View File

@ -386,22 +386,23 @@ class ApiClient(object):
:param files: File parameters. :param files: File parameters.
:return: Form parameters with files. :return: Form parameters with files.
""" """
params = {} params = []
if post_params: if post_params:
params.update(post_params) params = post_params
if files: if files:
for k, v in iteritems(files): for k, v in iteritems(files):
if not v: if not v:
continue continue
file_names = v if type(v) is list else [v]
with open(v, 'rb') as f: for n in file_names:
filename = os.path.basename(f.name) with open(n, 'rb') as f:
filedata = f.read() filename = os.path.basename(f.name)
mimetype = mimetypes.\ filedata = f.read()
guess_type(filename)[0] or 'application/octet-stream' mimetype = mimetypes.\
params[k] = tuple([filename, filedata, mimetype]) guess_type(filename)[0] or 'application/octet-stream'
params.append(tuple([k, tuple([filename, filedata, mimetype])]))
return params return params

View File

@ -9,8 +9,8 @@ from .models.order import Order
# import apis into sdk package # import apis into sdk package
from .apis.user_api import UserApi from .apis.user_api import UserApi
from .apis.pet_api import PetApi
from .apis.store_api import StoreApi from .apis.store_api import StoreApi
from .apis.pet_api import PetApi
# import ApiClient # import ApiClient
from .api_client import ApiClient from .api_client import ApiClient

View File

@ -386,22 +386,23 @@ class ApiClient(object):
:param files: File parameters. :param files: File parameters.
:return: Form parameters with files. :return: Form parameters with files.
""" """
params = {} params = []
if post_params: if post_params:
params.update(post_params) params = post_params
if files: if files:
for k, v in iteritems(files): for k, v in iteritems(files):
if not v: if not v:
continue continue
all_files = v if type(v) is list else [v]
with open(v, 'rb') as f: for n in all_files:
filename = os.path.basename(f.name) with open(n, 'rb') as f:
filedata = f.read() filename = os.path.basename(f.name)
mimetype = mimetypes.\ filedata = f.read()
guess_type(filename)[0] or 'application/octet-stream' mimetype = mimetypes.\
params[k] = tuple([filename, filedata, mimetype]) guess_type(filename)[0] or 'application/octet-stream'
params.append(tuple([k, tuple([filename, filedata, mimetype])]))
return params return params

View File

@ -2,5 +2,5 @@ from __future__ import absolute_import
# import apis into api package # import apis into api package
from .user_api import UserApi from .user_api import UserApi
from .pet_api import PetApi
from .store_api import StoreApi from .store_api import StoreApi
from .pet_api import PetApi

View File

@ -89,7 +89,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -165,7 +165,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -243,7 +243,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -319,7 +319,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -398,7 +398,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -479,12 +479,12 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
if 'name' in params: if 'name' in params:
form_params['name'] = params['name'] form_params.append(('name', params['name']))
if 'status' in params: if 'status' in params:
form_params['status'] = params['status'] form_params.append(('status', params['status']))
body_params = None body_params = None
@ -565,7 +565,7 @@ class PetApi(object):
if 'api_key' in params: if 'api_key' in params:
header_params['api_key'] = params['api_key'] header_params['api_key'] = params['api_key']
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -646,10 +646,10 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
if 'additional_metadata' in params: if 'additional_metadata' in params:
form_params['additionalMetadata'] = params['additional_metadata'] form_params.append(('additionalMetadata', params['additional_metadata']))
if 'file' in params: if 'file' in params:
files['file'] = params['file'] files['file'] = params['file']
@ -696,7 +696,7 @@ class PetApi(object):
:param callback function: The callback function :param callback function: The callback function
for asynchronous request. (optional) for asynchronous request. (optional)
:param int pet_id: ID of pet that needs to be fetched (required) :param int pet_id: ID of pet that needs to be fetched (required)
:return: Binary :return: str
If the method is called asynchronously, If the method is called asynchronously,
returns the request thread. returns the request thread.
""" """
@ -729,7 +729,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -754,7 +754,7 @@ class PetApi(object):
body=body_params, body=body_params,
post_params=form_params, post_params=form_params,
files=files, files=files,
response_type='Binary', response_type='str',
auth_settings=auth_settings, auth_settings=auth_settings,
callback=params.get('callback')) callback=params.get('callback'))
return response return response
@ -774,7 +774,7 @@ class PetApi(object):
:param callback function: The callback function :param callback function: The callback function
for asynchronous request. (optional) for asynchronous request. (optional)
:param Binary body: Pet object in the form of byte array :param str body: Pet object in the form of byte array
:return: None :return: None
If the method is called asynchronously, If the method is called asynchronously,
returns the request thread. returns the request thread.
@ -803,7 +803,7 @@ class PetApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None

View File

@ -88,7 +88,7 @@ class StoreApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -162,7 +162,7 @@ class StoreApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -243,7 +243,7 @@ class StoreApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -322,7 +322,7 @@ class StoreApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None

View File

@ -89,7 +89,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -165,7 +165,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -241,7 +241,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -322,7 +322,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -395,7 +395,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -474,7 +474,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -554,7 +554,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None
@ -635,7 +635,7 @@ class UserApi(object):
header_params = {} header_params = {}
form_params = {} form_params = []
files = {} files = {}
body_params = None body_params = None