From f9f06d83e2f015482d9feb3df539be185c2574ab Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Wed, 25 Dec 2024 01:50:21 +0100 Subject: [PATCH] [MIG] base_usability_akretion, base_partner_ref, partner_tree_default_account, partner_tree_default_base, partner_tree_default_contacts to v18 --- base_partner_ref/__manifest__.py | 6 +- base_partner_ref/models/res_partner.py | 61 ++++++------------- base_partner_ref/post_install.py | 5 +- base_partner_ref/views/res_partner.xml | 6 +- base_usability_akretion/__manifest__.py | 5 +- base_usability_akretion/models/__init__.py | 1 - .../models/ir_mail_server.py | 4 +- base_usability_akretion/models/ir_model.py | 8 +-- .../models/ir_model_fields.py | 16 ----- base_usability_akretion/models/res_company.py | 2 +- base_usability_akretion/models/res_partner.py | 2 +- .../models/res_partner_bank.py | 2 +- base_usability_akretion/models/res_users.py | 6 +- base_usability_akretion/security/group.xml | 2 +- .../views/ir_config_parameter.xml | 6 +- base_usability_akretion/views/ir_module.xml | 3 +- base_usability_akretion/views/ir_property.xml | 40 ------------ base_usability_akretion/views/res_company.xml | 2 +- base_usability_akretion/views/res_country.xml | 12 ++-- base_usability_akretion/views/res_partner.xml | 17 +++--- .../views/res_partner_bank.xml | 4 +- partner_tree_default_account/__manifest__.py | 4 +- .../views/res_partner.xml | 4 +- partner_tree_default_base/__manifest__.py | 6 +- .../views/res_partner.xml | 6 +- partner_tree_default_contacts/__manifest__.py | 4 +- .../views/res_partner.xml | 2 +- 27 files changed, 73 insertions(+), 163 deletions(-) delete mode 100644 base_usability_akretion/models/ir_model_fields.py delete mode 100644 base_usability_akretion/views/ir_property.xml diff --git a/base_partner_ref/__manifest__.py b/base_partner_ref/__manifest__.py index 974a00f..7e35036 100644 --- a/base_partner_ref/__manifest__.py +++ b/base_partner_ref/__manifest__.py @@ -1,10 +1,10 @@ -# Copyright 2017-2023 Akretion France (https://www.akretion.com) +# Copyright 2017-2024 Akretion France (https://www.akretion.com) # @author Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). { 'name': 'Base Partner Reference', - 'version': '16.0.1.0.0', + 'version': '18.0.1.0.0', 'category': 'Partner', 'license': 'AGPL-3', 'summary': "Improve usage of partner's Internal Reference", @@ -23,5 +23,5 @@ Base Partner Reference 'depends': ['base'], 'data': ['views/res_partner.xml'], 'post_init_hook': 'update_partner_display_name', - 'installable': False, + 'installable': True, } diff --git a/base_partner_ref/models/res_partner.py b/base_partner_ref/models/res_partner.py index 4321026..4653bbf 100644 --- a/base_partner_ref/models/res_partner.py +++ b/base_partner_ref/models/res_partner.py @@ -23,51 +23,24 @@ class ResPartner(models.Model): def _compute_display_name(self): super()._compute_display_name() - def _get_name(self): - partner = self - name = partner.name or '' - + def _get_complete_name(self): + self.ensure_one() + displayed_types = self._complete_name_displayed_types + type_description = dict(self._fields['type']._description_selection(self.env)) + name = self.name or '' # START modif of native method - if partner.ref: - name = "[%s] %s" % (partner.ref, name) + if self.ref: + name = "[%s] %s" % (self.ref, name) # END modif of native method - if partner.company_name or partner.parent_id: - if not name and partner.type in ['invoice', 'delivery', 'other']: - name = dict(self.fields_get( - ['type'])['type']['selection'])[partner.type] - if not partner.is_company: - # START modif of native name_get() method - company_name = partner.commercial_company_name or\ - partner.sudo().parent_id.name - if partner.parent_id.ref: - company_name = "[%s] %s" % (partner.parent_id.ref, company_name) - name = "%s, %s" % (company_name, name) - # END modif of native name_get() method - if self._context.get('show_address_only'): - name = partner._display_address(without_company=True) - if self._context.get('show_address'): - name = name + "\n" + partner._display_address(without_company=True) - name = re.sub(r'\s+\n', '\n', name) - if self._context.get('partner_show_db_id'): - name = "%s (%s)" % (name, partner.id) - if self._context.get('address_inline'): - splitted_names = name.split("\n") - name = ", ".join([n for n in splitted_names if n.strip()]) - if self._context.get('show_email') and partner.email: - name = "%s <%s>" % (name, partner.email) - if self._context.get('html_format'): - name = name.replace('\n', '
') - if self._context.get('show_vat') and partner.vat: - name = "%s ‒ %s" % (name, partner.vat) + if self.company_name or self.parent_id: + if not name and self.type in displayed_types: + name = type_description[self.type] + if not self.is_company: + name = f"{self.commercial_company_name or self.sudo().parent_id.name}, {name}" + # START modif of native method + if self.parent_id.ref: + name = f"[{self.parent_id.ref}] {name}" + # END modif of native method return name.strip() - @api.model - def name_search(self, name='', args=None, operator='ilike', limit=100): - if args is None: - args = [] - if name and operator == 'ilike': - recs = self.search([('ref', '=', name)] + args, limit=limit) - if recs: - rec_childs = self.search([('id', 'child_of', recs.ids)]) - return rec_childs.name_get() - return super().name_search(name=name, args=args, operator=operator, limit=limit) + # native _rec_names_search contains "ref", so no need to inherit name_search() diff --git a/base_partner_ref/post_install.py b/base_partner_ref/post_install.py index 662b5e4..e06079a 100644 --- a/base_partner_ref/post_install.py +++ b/base_partner_ref/post_install.py @@ -2,11 +2,8 @@ # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, SUPERUSER_ID - -def update_partner_display_name(cr, registry): - env = api.Environment(cr, SUPERUSER_ID, {}) +def update_partner_display_name(env): partners = env['res.partner'].with_context(active_test=False).search( [('ref', '!=', False)]) partners.write({'invalidate_display_name': True}) diff --git a/base_partner_ref/views/res_partner.xml b/base_partner_ref/views/res_partner.xml index bd92392..e2f9391 100644 --- a/base_partner_ref/views/res_partner.xml +++ b/base_partner_ref/views/res_partner.xml @@ -1,6 +1,6 @@ @@ -13,9 +13,9 @@ 1000 - +
- +
1 diff --git a/base_usability_akretion/__manifest__.py b/base_usability_akretion/__manifest__.py index a01a41f..3169d5d 100644 --- a/base_usability_akretion/__manifest__.py +++ b/base_usability_akretion/__manifest__.py @@ -4,7 +4,7 @@ { 'name': 'Base Usability', - 'version': '16.0.1.0.0', + 'version': '18.0.1.0.0', 'category': 'Partner', 'license': 'AGPL-3', 'summary': 'Better usability in base module', @@ -21,7 +21,6 @@ 'views/ir_config_parameter.xml', 'views/ir_module.xml', 'views/ir_sequence.xml', - 'views/ir_property.xml', ], - 'installable': False, + 'installable': True, } diff --git a/base_usability_akretion/models/__init__.py b/base_usability_akretion/models/__init__.py index 3d81a10..79e7843 100644 --- a/base_usability_akretion/models/__init__.py +++ b/base_usability_akretion/models/__init__.py @@ -4,4 +4,3 @@ from . import res_partner_bank from . import res_company from . import ir_mail_server from . import ir_model -from . import ir_model_fields diff --git a/base_usability_akretion/models/ir_mail_server.py b/base_usability_akretion/models/ir_mail_server.py index f8daff5..5eb7d46 100644 --- a/base_usability_akretion/models/ir_mail_server.py +++ b/base_usability_akretion/models/ir_mail_server.py @@ -1,4 +1,4 @@ -# Copyright 2015-2022 Akretion France (http://www.akretion.com/) +# Copyright 2015-2024 Akretion France (https://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -19,7 +19,7 @@ class IrMailServer(models.Model): smtp_debug=False, smtp_session=None): # Start copy from native method smtp_from, smtp_to_list, message = self._prepare_email_message( - message, smtp_session) + message, smtp) # End copy from native method logger.info( "Sending email from '%s' to '%s' Cc '%s' Bcc '%s' " diff --git a/base_usability_akretion/models/ir_model.py b/base_usability_akretion/models/ir_model.py index 7e021e1..7ecc78e 100644 --- a/base_usability_akretion/models/ir_model.py +++ b/base_usability_akretion/models/ir_model.py @@ -1,4 +1,4 @@ -# Copyright 2019-2022 Akretion France (http://www.akretion.com/) +# Copyright 2019-2024 Akretion France (https://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). @@ -9,8 +9,6 @@ class IrModel(models.Model): _inherit = 'ir.model' @api.depends('name', 'model') - def name_get(self): - res = [] + def _compute_display_name(self): for rec in self: - res.append((rec.id, '%s (%s)' % (rec.name, rec.model))) - return res + rec.display_name = f'{rec.name} ({rec.model})' diff --git a/base_usability_akretion/models/ir_model_fields.py b/base_usability_akretion/models/ir_model_fields.py deleted file mode 100644 index 6fe42cc..0000000 --- a/base_usability_akretion/models/ir_model_fields.py +++ /dev/null @@ -1,16 +0,0 @@ -# Copyright 2024 Akretion France (http://www.akretion.com/) -# @author: Alexis de Lattre -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from odoo import api, models - - -class IrModelFields(models.Model): - _inherit = 'ir.model.fields' - - @api.depends('name', 'field_description') - def name_get(self): - res = [] - for rec in self: - res.append((rec.id, '%s (%s)' % (rec.field_description, rec.name))) - return res diff --git a/base_usability_akretion/models/res_company.py b/base_usability_akretion/models/res_company.py index 15c3ac6..7115c3c 100644 --- a/base_usability_akretion/models/res_company.py +++ b/base_usability_akretion/models/res_company.py @@ -1,4 +1,4 @@ -# Copyright 2015-2022 Akretion France (http://www.akretion.com/) +# Copyright 2015-2024 Akretion France (https://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/base_usability_akretion/models/res_partner.py b/base_usability_akretion/models/res_partner.py index 59328ad..8ecf330 100644 --- a/base_usability_akretion/models/res_partner.py +++ b/base_usability_akretion/models/res_partner.py @@ -1,4 +1,4 @@ -# Copyright 2015-2022 Akretion France (http://www.akretion.com/) +# Copyright 2015-2024 Akretion France (https://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/base_usability_akretion/models/res_partner_bank.py b/base_usability_akretion/models/res_partner_bank.py index bcb7e4a..cb34795 100644 --- a/base_usability_akretion/models/res_partner_bank.py +++ b/base_usability_akretion/models/res_partner_bank.py @@ -1,4 +1,4 @@ -# Copyright 2015-2022 Akretion France (http://www.akretion.com/) +# Copyright 2015-2024 Akretion France (https://www.akretion.com/) # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/base_usability_akretion/models/res_users.py b/base_usability_akretion/models/res_users.py index 9def51a..71dd054 100644 --- a/base_usability_akretion/models/res_users.py +++ b/base_usability_akretion/models/res_users.py @@ -2,7 +2,7 @@ # @author: Alexis de Lattre # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from odoo import api, fields, models, SUPERUSER_ID +from odoo import api, fields, models import logging from odoo.tools.misc import format_datetime @@ -14,11 +14,9 @@ class ResUsers(models.Model): @api.model def _script_partners_linked_to_users_no_company(self): - if self.env.user.id != SUPERUSER_ID: - self = self.sudo() logger.info( 'START to set company_id=False on partners related to users') - users = self.with_context(active_test=False).search([]) + users = self.sudo().with_context(active_test=False).search([]) for user in users: if user.partner_id.company_id: user.partner_id.write({'company_id': False}) diff --git a/base_usability_akretion/security/group.xml b/base_usability_akretion/security/group.xml index 78d827c..8dd5ef0 100644 --- a/base_usability_akretion/security/group.xml +++ b/base_usability_akretion/security/group.xml @@ -1,6 +1,6 @@ diff --git a/base_usability_akretion/views/ir_config_parameter.xml b/base_usability_akretion/views/ir_config_parameter.xml index db4f054..b8afed9 100644 --- a/base_usability_akretion/views/ir_config_parameter.xml +++ b/base_usability_akretion/views/ir_config_parameter.xml @@ -6,9 +6,9 @@ ir.config_parameter - - - + + + diff --git a/base_usability_akretion/views/ir_module.xml b/base_usability_akretion/views/ir_module.xml index 83785b3..1e4d028 100644 --- a/base_usability_akretion/views/ir_module.xml +++ b/base_usability_akretion/views/ir_module.xml @@ -1,6 +1,6 @@ @@ -13,6 +13,7 @@ + diff --git a/base_usability_akretion/views/ir_property.xml b/base_usability_akretion/views/ir_property.xml deleted file mode 100644 index 5c1e0cf..0000000 --- a/base_usability_akretion/views/ir_property.xml +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - ir.property - - - - - - - - - - - hide - - - - - - ir.property - - - - - - - - - - - - diff --git a/base_usability_akretion/views/res_company.xml b/base_usability_akretion/views/res_company.xml index 18e9c6f..f39e4ba 100644 --- a/base_usability_akretion/views/res_company.xml +++ b/base_usability_akretion/views/res_company.xml @@ -1,6 +1,6 @@ diff --git a/base_usability_akretion/views/res_country.xml b/base_usability_akretion/views/res_country.xml index 48a7015..179ed55 100644 --- a/base_usability_akretion/views/res_country.xml +++ b/base_usability_akretion/views/res_country.xml @@ -1,6 +1,6 @@ @@ -21,18 +21,20 @@ - + base_usability.res.country.search res.country + - - + + + - + diff --git a/base_usability_akretion/views/res_partner.xml b/base_usability_akretion/views/res_partner.xml index e7e9892..5e4fc27 100644 --- a/base_usability_akretion/views/res_partner.xml +++ b/base_usability_akretion/views/res_partner.xml @@ -1,6 +1,6 @@ @@ -14,10 +14,13 @@ - + -
+
+ alert alert-warning +
+
alert alert-warning
@@ -39,14 +42,10 @@ res.partner - + - - - - @@ -61,7 +60,7 @@ Name or Email or VAT or Reference - ['|', '|', '|', '|', ('display_name', 'ilike', self), ('ref', '=ilike', self + '%'), ('email', 'ilike', self), ('vat', 'ilike', self), ('company_registry', 'ilike', self)] + ['|', '|', '|', '|', ('complete_name', 'ilike', self), ('ref', '=ilike', self + '%'), ('email', 'ilike', self), ('vat', 'ilike', self), ('company_registry', 'ilike', self)] diff --git a/base_usability_akretion/views/res_partner_bank.xml b/base_usability_akretion/views/res_partner_bank.xml index 3f3eb09..92d4061 100644 --- a/base_usability_akretion/views/res_partner_bank.xml +++ b/base_usability_akretion/views/res_partner_bank.xml @@ -1,6 +1,6 @@ @@ -12,7 +12,7 @@ - 1 + 1 diff --git a/partner_tree_default_account/__manifest__.py b/partner_tree_default_account/__manifest__.py index 16fb7cc..ab87192 100644 --- a/partner_tree_default_account/__manifest__.py +++ b/partner_tree_default_account/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Partner Tree Default - Account', - 'version': '16.0.1.0.0', + 'version': '18.0.1.0.0', 'category': 'Partner', 'license': 'AGPL-3', 'summary': 'Tree view by default instead of kanban for partners', @@ -21,5 +21,5 @@ This module has been written by Alexis de Lattre 'website': 'http://www.akretion.com', 'depends': ['account'], 'data': ['views/res_partner.xml'], - 'installable': False, + 'installable': True, } diff --git a/partner_tree_default_account/views/res_partner.xml b/partner_tree_default_account/views/res_partner.xml index 250017a..db1c3db 100644 --- a/partner_tree_default_account/views/res_partner.xml +++ b/partner_tree_default_account/views/res_partner.xml @@ -8,11 +8,11 @@ - tree,form,kanban + list,form,kanban - tree,form,kanban + list,form,kanban diff --git a/partner_tree_default_base/__manifest__.py b/partner_tree_default_base/__manifest__.py index 247b07a..46d8090 100644 --- a/partner_tree_default_base/__manifest__.py +++ b/partner_tree_default_base/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Partner Tree Default - Base', - 'version': '16.0.1.0.0', + 'version': '18.0.1.0.0', 'category': 'Partner', 'license': 'AGPL-3', 'summary': 'Tree view by default instead of kanban for partners', @@ -18,8 +18,8 @@ With this module, when you select a *Customer* or *Vendors* menu entry, you will This module has been written by Alexis de Lattre from Akretion. """, 'author': 'Akretion', - 'website': 'http://www.akretion.com', + 'website': 'https://github.com/akretion/odoo-usability', 'depends': ['base'], 'data': ['views/res_partner.xml'], - 'installable': False, + 'installable': True, } diff --git a/partner_tree_default_base/views/res_partner.xml b/partner_tree_default_base/views/res_partner.xml index eb13771..76f587d 100644 --- a/partner_tree_default_base/views/res_partner.xml +++ b/partner_tree_default_base/views/res_partner.xml @@ -8,7 +8,7 @@ - tree,form,kanban + list,form,kanban @@ -17,7 +17,7 @@ - tree,form,kanban + list,form,kanban @@ -25,7 +25,7 @@ - tree,form,kanban + list,form,kanban diff --git a/partner_tree_default_contacts/__manifest__.py b/partner_tree_default_contacts/__manifest__.py index a5c3bb1..b56e95b 100644 --- a/partner_tree_default_contacts/__manifest__.py +++ b/partner_tree_default_contacts/__manifest__.py @@ -5,7 +5,7 @@ { 'name': 'Partner Tree Default - Contacts', - 'version': '16.0.1.0.0', + 'version': '18.0.1.0.0', 'category': 'Partner', 'license': 'AGPL-3', 'summary': 'Tree view by default instead of kanban for partners', @@ -21,5 +21,5 @@ This module has been written by Alexis de Lattre 'website': 'http://www.akretion.com', 'depends': ['contacts'], 'data': ['views/res_partner.xml'], - 'installable': False, + 'installable': True, } diff --git a/partner_tree_default_contacts/views/res_partner.xml b/partner_tree_default_contacts/views/res_partner.xml index 1f68610..fdee011 100644 --- a/partner_tree_default_contacts/views/res_partner.xml +++ b/partner_tree_default_contacts/views/res_partner.xml @@ -8,7 +8,7 @@ - tree,form,kanban,activity + list,form,kanban,activity