From 2f15a5fa647d55df36c9019df467802a3aa9b4e3 Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Fri, 4 May 2018 13:17:25 +0200 Subject: [IMP] base: Add support for private addresses Purpose ======= Add the possibility to create private addresses, only accessible for a subset of users. Specification ============= - Add a new 'Private' partner type - Add a res.groups in base 'Access to Private Addresses' - Add ir.rules for the following behavior: - Every employees/internal users can read non-private addresses - Only users in group_private_addresses can access private addresses - Add in base a simplified form view for private addresses - A HR Officer is automatically granted in group_private_addresses - Use the simplified form view to open the address_home_id form on employees --- odoo/addons/base/models/res_partner.py | 3 +- odoo/addons/base/models/res_users.py | 4 +++ odoo/addons/base/security/base_groups.xml | 3 ++ odoo/addons/base/security/base_security.xml | 31 ++++++++++++++++++++ odoo/addons/base/views/res_partner_views.xml | 44 ++++++++++++++++++++++++++++ odoo/addons/base/views/res_users_views.xml | 4 +++ 6 files changed, 88 insertions(+), 1 deletion(-) (limited to 'odoo/addons/base') diff --git a/odoo/addons/base/models/res_partner.py b/odoo/addons/base/models/res_partner.py index 38f49b255a0..3b27dc81c28 100644 --- a/odoo/addons/base/models/res_partner.py +++ b/odoo/addons/base/models/res_partner.py @@ -177,7 +177,8 @@ class Partner(models.Model): [('contact', 'Contact'), ('invoice', 'Invoice address'), ('delivery', 'Shipping address'), - ('other', 'Other address')], string='Address Type', + ('other', 'Other address'), + ("private", "Private Address")], string='Address Type', default='contact', help="Used to select automatically the right address according to the context in sales and purchases documents.") street = fields.Char() diff --git a/odoo/addons/base/models/res_users.py b/odoo/addons/base/models/res_users.py index 8664e70c556..a3c826eb532 100644 --- a/odoo/addons/base/models/res_users.py +++ b/odoo/addons/base/models/res_users.py @@ -231,6 +231,10 @@ class Users(models.Model): 'Contact Creation', compute='_compute_groups_id', inverse='_inverse_groups_id', group_xml_id='base.group_partner_manager') + has_group_private_addresses = fields.Boolean( + 'Access to Private Addresses', compute='_compute_groups_id', inverse='_inverse_groups_id', + group_xml_id='base.group_private_addresses') + _sql_constraints = [ ('login_key', 'UNIQUE (login)', 'You can not have two users with the same login !') ] diff --git a/odoo/addons/base/security/base_groups.xml b/odoo/addons/base/security/base_groups.xml index 863046f9c4e..a7e32bb1065 100644 --- a/odoo/addons/base/security/base_groups.xml +++ b/odoo/addons/base/security/base_groups.xml @@ -49,6 +49,9 @@ + + Access to Private Addresses + + + res.partner.rule.private.employee + + + [('type', '!=', 'private')] + + + + + + + + + + res.partner.rule.private.group + + + [('type', '=', 'private')] + + + + + + + + Defaults: alter personal defaults diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml index a878b8c2994..28ad85b892a 100644 --- a/odoo/addons/base/views/res_partner_views.xml +++ b/odoo/addons/base/views/res_partner_views.xml @@ -391,6 +391,50 @@ + + + res.partner.view.form.private + res.partner + + +
+ + + +
+
+
+ res.partner.select res.partner diff --git a/odoo/addons/base/views/res_users_views.xml b/odoo/addons/base/views/res_users_views.xml index db9181ac2bf..4e7f9420839 100644 --- a/odoo/addons/base/views/res_users_views.xml +++ b/odoo/addons/base/views/res_users_views.xml @@ -205,6 +205,10 @@
+