From 59422550d86b8e0baf5abd9eaf7fc71bd49660b1 Mon Sep 17 00:00:00 2001 From: Raimon Esteve Date: Wed, 23 Nov 2022 17:24:46 +0100 Subject: [PATCH] Allow remove companies in parties when is administrator group #071843 --- party.py | 11 ++++++++++- tests/scenario_party_company.rst | 13 +++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/party.py b/party.py index fa3d005..b7881da 100644 --- a/party.py +++ b/party.py @@ -210,6 +210,7 @@ class Party(metaclass=PoolMeta): def set_companies_field(cls, parties, name, value): pool = Pool() PartyCompany = pool.get('party.company.rel') + Data = pool.get('ir.model.data') party_company = PartyCompany.__table__() cursor = Transaction().connection.cursor() @@ -253,7 +254,15 @@ class Party(metaclass=PoolMeta): PartyCompany.create(to_create) if to_remove: - raise UserError(gettext('party_company.can_not_remove_companies')) + groups = Transaction().context.get('groups', []) + group_admin = Data.get_id('res', 'group_admin') + if group_admin not in groups: + raise UserError(gettext('party_company.can_not_remove_companies')) + to_delete = PartyCompany.search([ + ('party', 'in', parties), + ('company', 'in', to_remove), + ]) + PartyCompany.delete(to_delete) class PartyCompanyMixin(object): diff --git a/tests/scenario_party_company.rst b/tests/scenario_party_company.rst index 0affaa3..438d610 100644 --- a/tests/scenario_party_company.rst +++ b/tests/scenario_party_company.rst @@ -83,3 +83,16 @@ Create new parties:: True >>> party5.companies[0] == company2_user.company True + +Delete companies in parties:: + + >>> party6 = Party() + >>> len(party6.companies) == 1 + True + >>> company, = party6.companies + >>> party6.companies.remove(company) + >>> len(party6.companies) == 0 + True + >>> party6.save() + >>> len(party6.companies) == 0 + True