diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py index be1bf5aa53a..1dddd28a23a 100644 --- a/addons/website_form/controllers/main.py +++ b/addons/website_form/controllers/main.py @@ -22,7 +22,7 @@ class WebsiteForm(http.Controller): return json.dumps(False) try: - data = self.extract_data(model_record, ** kwargs) + data = self.extract_data(model_record, request.params) # If we encounter an issue while extracting data except ValidationError, e: # I couldn't find a cleaner way to pass data to an exception @@ -101,7 +101,7 @@ class WebsiteForm(http.Controller): # Extract all data sent by the form and sort its on several properties - def extract_data(self, model, **kwargs): + def extract_data(self, model, values): data = { 'record': {}, # Values to create record @@ -112,7 +112,8 @@ class WebsiteForm(http.Controller): authorized_fields = model.sudo()._get_form_writable_fields() error_fields = [] - for field_name, field_value in kwargs.items(): + + for field_name, field_value in values.items(): # If the value of the field if a file if hasattr(field_value, 'filename'): # Undo file upload field name indexing diff --git a/openerp/http.py b/openerp/http.py index 73fd66fc087..63456607e18 100644 --- a/openerp/http.py +++ b/openerp/http.py @@ -770,9 +770,9 @@ class HttpRequest(WebRequest): def __init__(self, *args): super(HttpRequest, self).__init__(*args) - params = self.httprequest.args.to_dict() - params.update(self.httprequest.form.to_dict()) - params.update(self.httprequest.files.to_dict()) + params = collections.OrderedDict(self.httprequest.args) + params.update(self.httprequest.form) + params.update(self.httprequest.files) params.pop('session_id', None) self.params = params @@ -1617,6 +1617,7 @@ class Root(object): try: httprequest = werkzeug.wrappers.Request(environ) httprequest.app = self + httprequest.parameter_storage_class = werkzeug.datastructures.ImmutableOrderedMultiDict explicit_session = self.setup_session(httprequest) self.setup_db(httprequest)