From 28179bc8cb9d98a60936634e50ca733beec0393f Mon Sep 17 00:00:00 2001 From: Yannick Tivisse Date: Thu, 24 May 2018 13:13:47 +0200 Subject: [PATCH] [IMP] base: Add support for private addresses This is a backport of commit https://github.com/odoo/odoo/commit/2f15a5fa647d55df36c9019df467802a3aa9b4e3 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 The following points won't be backported: - A HR Officer is automatically granted in group_private_addresses - Use the simplified form view to open the address_home_id form on employees That's because it requires to update 'base' to make it work. If a user only update 'hr', this will break his instance while 'base' isn't updated. But these modifications can be applied manually quite easily. --- openerp/addons/base/res/res_partner.py | 3 +- openerp/addons/base/res/res_partner_view.xml | 44 +++++++++++++++++++ .../addons/base/security/base_security.xml | 35 +++++++++++++++ 3 files changed, 81 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index 4995c13b975..5214d9384ec 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -212,7 +212,8 @@ class res_partner(osv.Model, format_address): [('contact', 'Contact'), ('invoice', 'Invoice address'), ('delivery', 'Shipping address'), - ('other', 'Other address')], 'Address Type', + ('other', 'Other address'), + ("private", "Private Address")], string='Address Type', help="Used to select automatically the right address according to the context in sales and purchases documents."), 'street': fields.char('Street'), 'street2': fields.char('Street2'), diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index e7e51b2f54b..201e0c8964a 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -330,6 +330,50 @@ + + + res.partner.view.form.private + res.partner + + +
+ + + +
+
+
+ res.partner.select res.partner diff --git a/openerp/addons/base/security/base_security.xml b/openerp/addons/base/security/base_security.xml index e3de88cf30b..aab7d358f8d 100644 --- a/openerp/addons/base/security/base_security.xml +++ b/openerp/addons/base/security/base_security.xml @@ -59,6 +59,10 @@ Contact Creation + + Access to Private Addresses + + + + res.partner.rule.private.employee + + + [('type', '!=', 'private')] + + + + + + + + + + res.partner.rule.private.group + + + [('type', '=', 'private')] + + + + + + + +