From e47c65386b58d1718835acc077629acaff0441f5 Mon Sep 17 00:00:00 2001 From: Damien Carlier Date: Tue, 5 Dec 2023 16:32:08 +0100 Subject: [PATCH] [MIG] attribute_set: Migration to 17.0 --- attribute_set/__init__.py | 1 - attribute_set/__manifest__.py | 3 +- attribute_set/i18n/attribute_set.pot | 41 -------- attribute_set/i18n/es.po | 41 -------- attribute_set/models/attribute_attribute.py | 48 ++++------ attribute_set/security/ir.model.access.csv | 2 - attribute_set/tests/test_build_view.py | 2 +- .../views/attribute_attribute_view.xml | 91 +++++++----------- attribute_set/views/attribute_group_view.xml | 5 +- attribute_set/views/attribute_option_view.xml | 4 +- attribute_set/wizard/__init__.py | 1 - .../wizard/attribute_option_wizard.py | 94 ------------------- .../wizard/attribute_option_wizard_view.xml | 25 ----- test-requirements.txt | 1 + 14 files changed, 61 insertions(+), 298 deletions(-) delete mode 100644 attribute_set/wizard/__init__.py delete mode 100644 attribute_set/wizard/attribute_option_wizard.py delete mode 100644 attribute_set/wizard/attribute_option_wizard_view.xml create mode 100644 test-requirements.txt diff --git a/attribute_set/__init__.py b/attribute_set/__init__.py index da04c4f0..af38f37e 100644 --- a/attribute_set/__init__.py +++ b/attribute_set/__init__.py @@ -1,3 +1,2 @@ from . import models -from . import wizard from . import utils diff --git a/attribute_set/__manifest__.py b/attribute_set/__manifest__.py index 1183c4b0..5b68dfb5 100644 --- a/attribute_set/__manifest__.py +++ b/attribute_set/__manifest__.py @@ -1,6 +1,6 @@ { "name": "Attribute Set", - "version": "16.0.1.1.0", + "version": "17.0.1.0.0", "category": "Generic Modules/Others", "license": "AGPL-3", "author": "Akretion,Odoo Community Association (OCA)", @@ -14,7 +14,6 @@ "views/attribute_group_view.xml", "views/attribute_option_view.xml", "views/attribute_set_view.xml", - "wizard/attribute_option_wizard_view.xml", ], "external_dependencies": {"python": ["unidecode"]}, "installable": True, diff --git a/attribute_set/i18n/attribute_set.pot b/attribute_set/i18n/attribute_set.pot index 04ce538a..c90d03b1 100644 --- a/attribute_set/i18n/attribute_set.pot +++ b/attribute_set/i18n/attribute_set.pot @@ -119,11 +119,6 @@ msgstr "" msgid "Can't change the type of an attribute. Please create a new one." msgstr "" -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "Cancel" -msgstr "" - #. module: attribute_set #: model:ir.model.fields.selection,name:attribute_set.selection__attribute_attribute__attribute_type__char msgid "Char" @@ -180,7 +175,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__create_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__create_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__create_uid -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__create_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__create_uid msgid "Created by" msgstr "" @@ -193,7 +187,6 @@ msgstr "" #. module: attribute_set #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__create_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__create_date -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__create_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__create_date msgid "Created on" msgstr "" @@ -203,11 +196,6 @@ msgstr "" msgid "Custom" msgstr "" -#. module: attribute_set -#: model:ir.model,name:attribute_set.model_attribute_option_wizard -msgid "Custom Attributes Option" -msgstr "" - #. module: attribute_set #: model:ir.model.fields.selection,name:attribute_set.selection__attribute_attribute__attribute_type__date msgid "Date" @@ -235,7 +223,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__display_name #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__display_name #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__display_name -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__display_name #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__display_name msgid "Display Name" msgstr "" @@ -313,7 +300,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__id #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__id #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__id -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__id #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__id msgid "ID" msgstr "" @@ -404,7 +390,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute____last_update #: model:ir.model.fields,field_description:attribute_set.field_attribute_group____last_update #: model:ir.model.fields,field_description:attribute_set.field_attribute_option____last_update -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard____last_update #: model:ir.model.fields,field_description:attribute_set.field_attribute_set____last_update msgid "Last Modified on" msgstr "" @@ -413,7 +398,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__write_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__write_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__write_uid -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__write_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__write_uid msgid "Last Updated by" msgstr "" @@ -422,7 +406,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__write_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__write_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__write_date -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__write_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__write_date msgid "Last Updated on" msgstr "" @@ -477,17 +460,8 @@ msgstr "" msgid "On delete property for many2one fields" msgstr "" -#. module: attribute_set -#. odoo-python -#: code:addons/attribute_set/models/attribute_attribute.py:0 -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -#, python-format -msgid "Options Wizard" -msgstr "" - #. module: attribute_set #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__attribute_id -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__attribute_id msgid "Product Attribute" msgstr "" @@ -717,11 +691,6 @@ msgid "" "Used for custom many2many fields to define a custom relation table name" msgstr "" -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "Validate" -msgstr "" - #. module: attribute_set #: model:ir.model.fields,help:attribute_set.field_attribute_attribute__copied msgid "Whether the value is copied when duplicating a record." @@ -753,13 +722,3 @@ msgid "" "Specify a Python expression defining a list of triplets.\n" "For example : `[('color', '=', 'red')]`" msgstr "" - -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "options_placeholder" -msgstr "" - -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "or" -msgstr "" diff --git a/attribute_set/i18n/es.po b/attribute_set/i18n/es.po index 19770e1a..d90d41de 100644 --- a/attribute_set/i18n/es.po +++ b/attribute_set/i18n/es.po @@ -126,11 +126,6 @@ msgstr "" msgid "Can't change the type of an attribute. Please create a new one." msgstr "No se puede cambiar el tipo de un atributo. Por favor, cree uno nuevo." -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "Cancel" -msgstr "Cancelar" - #. module: attribute_set #: model:ir.model.fields.selection,name:attribute_set.selection__attribute_attribute__attribute_type__char msgid "Char" @@ -194,7 +189,6 @@ msgstr "Copiado" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__create_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__create_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__create_uid -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__create_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__create_uid msgid "Created by" msgstr "Creado por" @@ -207,7 +201,6 @@ msgstr "Fecha de creación" #. module: attribute_set #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__create_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__create_date -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__create_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__create_date msgid "Created on" msgstr "Creado el" @@ -217,11 +210,6 @@ msgstr "Creado el" msgid "Custom" msgstr "Personalizar" -#. module: attribute_set -#: model:ir.model,name:attribute_set.model_attribute_option_wizard -msgid "Custom Attributes Option" -msgstr "Opción Atributos personalizados" - #. module: attribute_set #: model:ir.model.fields.selection,name:attribute_set.selection__attribute_attribute__attribute_type__date msgid "Date" @@ -253,7 +241,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__display_name #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__display_name #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__display_name -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__display_name #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__display_name msgid "Display Name" msgstr "Mostrar Nombre" @@ -333,7 +320,6 @@ msgstr "Grupos" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__id #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__id #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__id -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__id #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__id msgid "ID" msgstr "ID" @@ -455,7 +441,6 @@ msgstr "" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute____last_update #: model:ir.model.fields,field_description:attribute_set.field_attribute_group____last_update #: model:ir.model.fields,field_description:attribute_set.field_attribute_option____last_update -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard____last_update #: model:ir.model.fields,field_description:attribute_set.field_attribute_set____last_update msgid "Last Modified on" msgstr "Última actualización el" @@ -464,7 +449,6 @@ msgstr "Última actualización el" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__write_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__write_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__write_uid -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__write_uid #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__write_uid msgid "Last Updated by" msgstr "Última actualización por" @@ -473,7 +457,6 @@ msgstr "Última actualización por" #: model:ir.model.fields,field_description:attribute_set.field_attribute_attribute__write_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_group__write_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__write_date -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__write_date #: model:ir.model.fields,field_description:attribute_set.field_attribute_set__write_date msgid "Last Updated on" msgstr "Última Actualización el" @@ -528,17 +511,8 @@ msgstr "En Eliminar" msgid "On delete property for many2one fields" msgstr "En la propiedad eliminar para campos many2one" -#. module: attribute_set -#. odoo-python -#: code:addons/attribute_set/models/attribute_attribute.py:0 -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -#, python-format -msgid "Options Wizard" -msgstr "Asistente para Opciones" - #. module: attribute_set #: model:ir.model.fields,field_description:attribute_set.field_attribute_option__attribute_id -#: model:ir.model.fields,field_description:attribute_set.field_attribute_option_wizard__attribute_id msgid "Product Attribute" msgstr "Atributo de Producto" @@ -784,11 +758,6 @@ msgstr "" "Se utiliza en los campos many2many personalizados para definir un nombre de " "tabla de relación personalizado" -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "Validate" -msgstr "Validar" - #. module: attribute_set #: model:ir.model.fields,help:attribute_set.field_attribute_attribute__copied msgid "Whether the value is copied when duplicating a record." @@ -825,13 +794,3 @@ msgstr "" "`%(domain)s` es un nombre de dominio inválido.\n" "Especifica una expresión Python que define una lista de tripletas.\n" "Por ejemplo: `[('color', '=', 'red')]`" - -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "options_placeholder" -msgstr "options_placeholder" - -#. module: attribute_set -#: model_terms:ir.ui.view,arch_db:attribute_set.attribute_option_wizard_form_view -msgid "or" -msgstr "o" diff --git a/attribute_set/models/attribute_attribute.py b/attribute_set/models/attribute_attribute.py index 62b93e09..7d33fff6 100644 --- a/attribute_set/models/attribute_attribute.py +++ b/attribute_set/models/attribute_attribute.py @@ -10,8 +10,9 @@ from lxml import etree -from odoo import _, api, fields, models +from odoo import Command, _, api, fields, models from odoo.exceptions import ValidationError +from odoo.tools.safe_eval import safe_eval from ..utils.orm import setup_modifiers @@ -82,6 +83,10 @@ class AttributeAttribute(models.Model): "ir.model", "Relational Model", ondelete="cascade" ) + relation_model_name = fields.Char( + "Relational Model Name", related="relation_model_id.model" + ) + widget = fields.Char(help="Specify widget to add to the field on the views.") required_on_views = fields.Boolean( @@ -269,22 +274,18 @@ def _onchange_domain(self): def button_add_options(self): self.ensure_one() - # Before adding another option delete the ones which are linked - # to a deleted object - for option in self.option_ids: - if not option.value_ref: - option.unlink() - # Then open the Options Wizard which will display an 'opt_ids' m2m field related - # to the 'relation_model_id' model - return { - "context": dict(self.env.context, attribute_id=self.id), - "name": _("Options Wizard"), - "view_type": "form", - "view_mode": "form", - "res_model": "attribute.option.wizard", - "type": "ir.actions.act_window", - "target": "new", - } + values = self.env[self.relation_model_id.model].search(safe_eval(self.domain)) + options = [] + for value in values: + options.append( + Command.create( + { + "name": value.display_name, + "value_ref": f"{value._name},{value.id}", + } + ) + ) + self.option_ids = options @api.model_create_multi def create(self, vals_list): @@ -373,16 +374,6 @@ def create(self, vals_list): vals["state"] = "manual" return super().create(vals_list) - def _delete_related_option_wizard(self, option_vals): - """Delete related attribute's options wizards.""" - self.ensure_one() - for option_change in option_vals: - if option_change[0] == 2: - self.env["attribute.option.wizard"].search( - [("attribute_id", "=", self.id)] - ).unlink() - break - def _delete_old_fields_options(self, options): """Delete outdated attribute's field values on existing records.""" self.ensure_one() @@ -450,9 +441,6 @@ def write(self, vals): if att.relation_model_id: options = self.env[att.relation_model_id.model] if "option_ids" in list(vals.keys()): - # Delete related attribute.option.wizard if an attribute.option - # has been deleted - att._delete_related_option_wizard(vals["option_ids"]) # If there is still some attribute.option available, override # 'options' with the objects they are refering to. options = options.search( diff --git a/attribute_set/security/ir.model.access.csv b/attribute_set/security/ir.model.access.csv index c0cd4a5b..089bebf6 100644 --- a/attribute_set/security/ir.model.access.csv +++ b/attribute_set/security/ir.model.access.csv @@ -7,5 +7,3 @@ access_attribute_set_attribute_set_user,attribute_set_attribute_set,attribute_se access_attribute_set_attribute_group_user,attribute_set_attribute_group,attribute_set.model_attribute_group,base.group_user,1,0,0,0 access_attribute_set_attribute_attribute_user,attribute_set_attribute_attribute,attribute_set.model_attribute_attribute,base.group_user,1,0,0,0 access_attribute_set_attribute_option_user,attribute_set_attribute_option,attribute_set.model_attribute_option,base.group_user,1,0,0,0 -access_attribute_set_attribute_option_wizard_user,attribute_set_attribute_option_wizard,attribute_set.model_attribute_option_wizard,base.group_user,1,0,0,0 -access_attribute_set_attribute_option_wizard_erpmanager,attribute_set_attribute_option_wizard,attribute_set.model_attribute_option_wizard,base.group_erp_manager,1,1,1,1 diff --git a/attribute_set/tests/test_build_view.py b/attribute_set/tests/test_build_view.py index b22f7fdc..7f9747cf 100644 --- a/attribute_set/tests/test_build_view.py +++ b/attribute_set/tests/test_build_view.py @@ -163,7 +163,7 @@ def setUpClass(cls): @classmethod def tearDownClass(cls): cls.loader.restore_registry() - return super(BuildViewCase, cls).tearDownClass() + return super().tearDownClass() # TEST write on attributes @users("demo") diff --git a/attribute_set/views/attribute_attribute_view.xml b/attribute_set/views/attribute_attribute_view.xml index c1bb7042..16550293 100644 --- a/attribute_set/views/attribute_attribute_view.xml +++ b/attribute_set/views/attribute_attribute_view.xml @@ -7,64 +7,43 @@
- + - - - + + + - - + + - + - + @@ -94,39 +73,37 @@ col="4" > - + + + + - - -