Python fixes (#3689)

* python: Fix unsupported method exception message

* python: Implement form data collection formatting
This commit is contained in:
Ville Skyttä
2016-09-01 10:05:52 +03:00
committed by wing328
parent e044f9d9bf
commit 8e7d3d1a72
5 changed files with 72 additions and 22 deletions

View File

@@ -163,7 +163,7 @@ class {{classname}}(object):
local_var_files = {}
{{#formParams}}
if '{{paramName}}' in params:
{{#notFile}}form_params.append(('{{baseName}}', params['{{paramName}}'])){{/notFile}}{{#isFile}}local_var_files['{{baseName}}'] = params['{{paramName}}']{{/isFile}}
{{#notFile}}form_params.extend(self.api_client.parameter_to_tuples('{{collectionFormat}}', '{{baseName}}', params['{{paramName}}'])){{/notFile}}{{#isFile}}local_var_files['{{baseName}}'] = params['{{paramName}}']{{/isFile}}
{{/formParams}}
body_params = None

View File

@@ -370,10 +370,35 @@ class ApiClient(object):
body=body)
else:
raise ValueError(
"http method must be `GET`, `HEAD`,"
"http method must be `GET`, `HEAD`, `OPTIONS`,"
" `POST`, `PATCH`, `PUT` or `DELETE`."
)
def parameter_to_tuples(self, collection_format, name, value):
"""
Get parameter as list of tuples according to collection format.
:param str collection_format: Collection format
:param str name: Parameter name
:param value: Parameter value
:return: Parameter as list of tuples
"""
if isinstance(value, (list, tuple)):
if collection_format == "multi":
return [(name, v) for v in value]
else:
if collection_format == "ssv":
delimiter = " "
elif collection_format == "tsv":
delimiter = "\t"
elif collection_format == "pipes":
delimiter = "|"
else: # csv is the default
delimiter = ","
return [(name, delimiter.join(value))]
else:
return [(name, value)]
def prepare_post_parameters(self, post_params=None, files=None):
"""
Builds form parameters.

View File

@@ -370,10 +370,35 @@ class ApiClient(object):
body=body)
else:
raise ValueError(
"http method must be `GET`, `HEAD`,"
"http method must be `GET`, `HEAD`, `OPTIONS`,"
" `POST`, `PATCH`, `PUT` or `DELETE`."
)
def parameter_to_tuples(self, collection_format, name, value):
"""
Get parameter as list of tuples according to collection format.
:param str collection_format: Collection format
:param str name: Parameter name
:param value: Parameter value
:return: Parameter as list of tuples
"""
if isinstance(value, (list, tuple)):
if collection_format == "multi":
return [(name, v) for v in value]
else:
if collection_format == "ssv":
delimiter = " "
elif collection_format == "tsv":
delimiter = "\t"
elif collection_format == "pipes":
delimiter = "|"
else: # csv is the default
delimiter = ","
return [(name, delimiter.join(value))]
else:
return [(name, value)]
def prepare_post_parameters(self, post_params=None, files=None):
"""
Builds form parameters.

View File

@@ -289,31 +289,31 @@ class FakeApi(object):
form_params = []
local_var_files = {}
if 'integer' in params:
form_params.append(('integer', params['integer']))
form_params.extend(self.api_client.parameter_to_tuples('', 'integer', params['integer']))
if 'int32' in params:
form_params.append(('int32', params['int32']))
form_params.extend(self.api_client.parameter_to_tuples('', 'int32', params['int32']))
if 'int64' in params:
form_params.append(('int64', params['int64']))
form_params.extend(self.api_client.parameter_to_tuples('', 'int64', params['int64']))
if 'number' in params:
form_params.append(('number', params['number']))
form_params.extend(self.api_client.parameter_to_tuples('', 'number', params['number']))
if 'float' in params:
form_params.append(('float', params['float']))
form_params.extend(self.api_client.parameter_to_tuples('', 'float', params['float']))
if 'double' in params:
form_params.append(('double', params['double']))
form_params.extend(self.api_client.parameter_to_tuples('', 'double', params['double']))
if 'string' in params:
form_params.append(('string', params['string']))
form_params.extend(self.api_client.parameter_to_tuples('', 'string', params['string']))
if 'pattern_without_delimiter' in params:
form_params.append(('pattern_without_delimiter', params['pattern_without_delimiter']))
form_params.extend(self.api_client.parameter_to_tuples('', 'pattern_without_delimiter', params['pattern_without_delimiter']))
if 'byte' in params:
form_params.append(('byte', params['byte']))
form_params.extend(self.api_client.parameter_to_tuples('', 'byte', params['byte']))
if 'binary' in params:
form_params.append(('binary', params['binary']))
form_params.extend(self.api_client.parameter_to_tuples('', 'binary', params['binary']))
if 'date' in params:
form_params.append(('date', params['date']))
form_params.extend(self.api_client.parameter_to_tuples('', 'date', params['date']))
if 'date_time' in params:
form_params.append(('dateTime', params['date_time']))
form_params.extend(self.api_client.parameter_to_tuples('', 'dateTime', params['date_time']))
if 'password' in params:
form_params.append(('password', params['password']))
form_params.extend(self.api_client.parameter_to_tuples('', 'password', params['password']))
body_params = None
@@ -438,11 +438,11 @@ class FakeApi(object):
form_params = []
local_var_files = {}
if 'enum_form_string_array' in params:
form_params.append(('enum_form_string_array', params['enum_form_string_array']))
form_params.extend(self.api_client.parameter_to_tuples('csv', 'enum_form_string_array', params['enum_form_string_array']))
if 'enum_form_string' in params:
form_params.append(('enum_form_string', params['enum_form_string']))
form_params.extend(self.api_client.parameter_to_tuples('', 'enum_form_string', params['enum_form_string']))
if 'enum_query_double' in params:
form_params.append(('enum_query_double', params['enum_query_double']))
form_params.extend(self.api_client.parameter_to_tuples('', 'enum_query_double', params['enum_query_double']))
body_params = None

View File

@@ -760,9 +760,9 @@ class PetApi(object):
form_params = []
local_var_files = {}
if 'name' in params:
form_params.append(('name', params['name']))
form_params.extend(self.api_client.parameter_to_tuples('', 'name', params['name']))
if 'status' in params:
form_params.append(('status', params['status']))
form_params.extend(self.api_client.parameter_to_tuples('', 'status', params['status']))
body_params = None
@@ -872,7 +872,7 @@ class PetApi(object):
form_params = []
local_var_files = {}
if 'additional_metadata' in params:
form_params.append(('additionalMetadata', params['additional_metadata']))
form_params.extend(self.api_client.parameter_to_tuples('', 'additionalMetadata', params['additional_metadata']))
if 'file' in params:
local_var_files['file'] = params['file']