summaryrefslogtreecommitdiff
path: root/addons/website_form
diff options
context:
space:
mode:
authorxmo-odoo <xmo@odoo.com>2017-05-10 09:39:55 +0200
committerGitHub <noreply@github.com>2017-05-10 09:39:55 +0200
commitfffaf735f58f1ac57781c095eb552de6d1fcdc47 (patch)
tree88ab0ab65430d871862a836524e0ecc890d1674d /addons/website_form
parent10eee18a047d35305dc46282e610e88936d81ffc (diff)
[FIX] P3: list -> iterable builtins (#16811)
In Python 3: * various builtins and dict methods were changed to return view/iterable objects rather than lists * and the separate Python 2 view/iterable builtins and methods were removed altogether This is problematic when using these items as list (which the happens repeatedly in Odoo), but more viciously when iterating *multiple times* over them (which also happens, which I've messed up multiple times while writing this, and which is a pain to debug even when you've just created the issue). Convert all code using these to semantics-matching cross-version helper functions to get the LCD behaviour between P2 and P3, and forbid the builtins via lint. issue #8530
Diffstat (limited to 'addons/website_form')
-rw-r--r--addons/website_form/controllers/main.py6
-rw-r--r--addons/website_form/models/models.py9
2 files changed, 8 insertions, 7 deletions
diff --git a/addons/website_form/controllers/main.py b/addons/website_form/controllers/main.py
index 6a93f387ec1..cf70e0dd62a 100644
--- a/addons/website_form/controllers/main.py
+++ b/addons/website_form/controllers/main.py
@@ -10,7 +10,7 @@ from psycopg2 import IntegrityError
from odoo import http
from odoo.http import request
-from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+from odoo.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, pycompat
from odoo.tools.translate import _
from odoo.exceptions import ValidationError
from odoo.addons.base.ir.ir_qweb.fields import nl2br
@@ -118,7 +118,7 @@ class WebsiteForm(http.Controller):
error_fields = []
- for field_name, field_value in values.items():
+ for field_name, field_value in pycompat.items(values):
# If the value of the field if a file
if hasattr(field_value, 'filename'):
# Undo file upload field name indexing
@@ -164,7 +164,7 @@ class WebsiteForm(http.Controller):
if hasattr(dest_model, "website_form_input_filter"):
data['record'] = dest_model.website_form_input_filter(request, data['record'])
- missing_required_fields = [label for label, field in authorized_fields.iteritems() if field['required'] and not label in data['record']]
+ missing_required_fields = [label for label, field in pycompat.items(authorized_fields) if field['required'] and not label in data['record']]
if any(error_fields):
raise ValidationError(error_fields + missing_required_fields)
diff --git a/addons/website_form/models/models.py b/addons/website_form/models/models.py
index 3c118176ec6..75a2ce33fb2 100644
--- a/addons/website_form/models/models.py
+++ b/addons/website_form/models/models.py
@@ -5,6 +5,7 @@ import itertools
from odoo import models, fields, api
from odoo.http import request
+from odoo.tools import pycompat
class website_form_config(models.Model):
@@ -47,7 +48,7 @@ class website_form_model(models.Model):
])
}
return {
- k: v for k, v in self.get_authorized_fields(self.model).iteritems()
+ k: v for k, v in pycompat.items(self.get_authorized_fields(self.model))
if k not in excluded
}
@@ -57,17 +58,17 @@ class website_form_model(models.Model):
model = self.env[model_name]
fields_get = model.fields_get()
- for key, val in model._inherits.iteritems():
+ for key, val in pycompat.items(model._inherits):
fields_get.pop(val, None)
# Unrequire fields with default values
- default_values = model.default_get(fields_get.keys())
+ default_values = model.default_get(list(fields_get))
for field in [f for f in fields_get if f in default_values]:
fields_get[field]['required'] = False
# Remove readonly and magic fields
MAGIC_FIELDS = models.MAGIC_COLUMNS + [model.CONCURRENCY_CHECK_FIELD]
- for field in fields_get.keys():
+ for field in list(fields_get):
if fields_get[field]['readonly'] or field in MAGIC_FIELDS:
del fields_get[field]