diff --git a/base_custom_info/models/custom_info_template.py b/base_custom_info/models/custom_info_template.py index aeb22b46a..d392a4a00 100644 --- a/base_custom_info/models/custom_info_template.py +++ b/base_custom_info/models/custom_info_template.py @@ -53,18 +53,18 @@ class CustomInfoTemplate(models.Model): self._inverse_model() @api.multi - @api.constrains("model_id") - def _check_model(self): - """Avoid error when updating base module and a submodule extends a - model that falls out of this one's dependency graph. + def _check_model_update_allowed(self, model_id): + """Check if the template's model can be updated. + + Template can be updated only if no property values already exists for + this template """ for record in self: - with self.env.norecompute(): - oldmodels = record.mapped("property_ids.info_value_ids.model") - if oldmodels and record.model not in oldmodels: - raise ValidationError( - _("You cannot change the model because it is in use.") - ) + if (model_id != record.model_id.id + and record.mapped("property_ids.info_value_ids")): + raise ValidationError( + _("You cannot change the model because it is in use.") + ) @api.multi def check_access_rule(self, operation): @@ -74,3 +74,9 @@ class CustomInfoTemplate(models.Model): model.check_access_rights(operation) model.check_access_rule(operation) return super(CustomInfoTemplate, self).check_access_rule(operation) + + @api.multi + def write(self, vals): + if 'model_id' in vals: + self._check_model_update_allowed(vals['model_id']) + return super(CustomInfoTemplate, self).write(vals) diff --git a/base_jsonify/models/ir_exports_line.py b/base_jsonify/models/ir_exports_line.py index 3d4b047ca..a49cabb7a 100644 --- a/base_jsonify/models/ir_exports_line.py +++ b/base_jsonify/models/ir_exports_line.py @@ -8,7 +8,6 @@ from odoo import api, fields, models, _ class IrExportsLine(models.Model): _inherit = 'ir.exports.line' - _order = 'name' alias = fields.Char( 'Alias', diff --git a/base_jsonify/tests/test_get_parser.py b/base_jsonify/tests/test_get_parser.py index 2527d7be0..ca8e1740d 100644 --- a/base_jsonify/tests/test_get_parser.py +++ b/base_jsonify/tests/test_get_parser.py @@ -9,30 +9,32 @@ class TestParser(TransactionCase): def test_getting_parser(self): expected_parser = [ + u'name', u'active', + u'credit_limit', + u'color', (u'category_id', [u'name']), - (u'child_ids', [( - u'child_ids', [u'name']), - (u'country_id', [u'code', u'name']), - u'email', u'id', - u'name' + (u'country_id', [u'name', u'code']), + (u'child_ids', [ + u'name', + u'id', + u'email', + (u'country_id', [u'name', u'code']), + (u'child_ids', [u'name']), ]), - u'color', - u'comment', - (u'country_id', [u'code', u'name']), - u'credit_limit', u'lang', - u'name'] + u'comment' + ] exporter = self.env.ref('base_jsonify.ir_exp_partner') parser = exporter.get_json_parser() - self.assertEqual(parser, expected_parser) + self.assertListEqual(parser, expected_parser) # modify an ir.exports_line to put an alias for a field self.env.ref('base_jsonify.category_id_name').write({ 'alias': 'category_id:category/name' }) - expected_parser[1] = (u'category_id:category', [u'name']) + expected_parser[4] = (u'category_id:category', [u'name']) parser = exporter.get_json_parser() self.assertEqual(parser, expected_parser)