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/models/models.py | |
| 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/models/models.py')
| -rw-r--r-- | addons/website_form/models/models.py | 9 |
1 files changed, 5 insertions, 4 deletions
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] |
