diff options
| author | xmo-odoo <xmo@odoo.com> | 2017-05-10 09:39:55 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-05-10 09:39:55 +0200 |
| commit | fffaf735f58f1ac57781c095eb552de6d1fcdc47 (patch) | |
| tree | 88ab0ab65430d871862a836524e0ecc890d1674d /addons/website_form | |
| parent | 10eee18a047d35305dc46282e610e88936d81ffc (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.py | 6 | ||||
| -rw-r--r-- | addons/website_form/models/models.py | 9 |
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] |
