From e0a359f431bc781017122f29fad3b63f122dd40f Mon Sep 17 00:00:00 2001 From: Matthieu Dietrich Date: Tue, 18 Nov 2014 15:19:59 +0100 Subject: [PATCH 1/2] Add user rights to limit access to certain users (and give all rights to others) --- base_partner_merge/__openerp__.py | 2 +- base_partner_merge/base_partner_merge.py | 34 +++++++------------ .../base_partner_merge_view.xml | 6 ++-- base_partner_merge/security/security.xml | 11 ++++++ 4 files changed, 28 insertions(+), 25 deletions(-) create mode 100644 base_partner_merge/security/security.xml diff --git a/base_partner_merge/__openerp__.py b/base_partner_merge/__openerp__.py index 5c2a145d7..876919b6b 100644 --- a/base_partner_merge/__openerp__.py +++ b/base_partner_merge/__openerp__.py @@ -10,7 +10,7 @@ backport module, to be removed when we switch to saas2 on the private servers 'base', ], 'data': [ - 'security/ir.model.access.csv', + 'security/security.xml', 'base_partner_merge_view.xml', ], 'installable': True, diff --git a/base_partner_merge/base_partner_merge.py b/base_partner_merge/base_partner_merge.py index 416430d0b..e9360e350 100644 --- a/base_partner_merge/base_partner_merge.py +++ b/base_partner_merge/base_partner_merge.py @@ -340,6 +340,16 @@ class MergePartnerAutomatic(orm.TransientModel): partner_ids = proxy.exists(cr, uid, list(partner_ids), context=context) + + if not self.pool['res.users'].has_group( + cr, uid, 'base_partner_merge.group_partner_merge' + ): + raise orm.except_orm( + _('Error'), + _("You do not belong in the 'Partner Merge' group. " + "Please contact the Administrator to get access to " + "the partner merge functionality.")) + if len(partner_ids) < 2: return @@ -350,10 +360,9 @@ class MergePartnerAutomatic(orm.TransientModel): "together. You can re-open the wizard several times if " "needed.")) - if (openerp.SUPERUSER_ID != uid - and len(set(partner.email for partner - in proxy.browse(cr, uid, partner_ids, - context=context))) > 1): + if (len(set(partner.email for partner + in proxy.browse(cr, uid, partner_ids, + context=context))) > 1): raise orm.except_orm( _('Error'), _("All contacts must have the same email. Only the " @@ -371,23 +380,6 @@ class MergePartnerAutomatic(orm.TransientModel): src_partners = ordered_partners[:-1] _logger.info("dst_partner: %s", dst_partner.id) - if (openerp.SUPERUSER_ID != uid - and self._model_is_installed(cr, uid, 'account.move.line', - context=context) - and self.pool.get('account.move.line' - ).search(cr, openerp.SUPERUSER_ID, - [('partner_id', - 'in', - [partner.id for partner - in src_partners])], - context=context)): - raise orm.except_orm( - _('Error'), - _("Only the destination contact may be linked to existing " - "Journal Items. Please ask the Administrator if you need to" - " merge several contacts linked to existing Journal " - "Items.")) - call_it = lambda function: function(cr, uid, src_partners, dst_partner, context=context) diff --git a/base_partner_merge/base_partner_merge_view.xml b/base_partner_merge/base_partner_merge_view.xml index 5ae786aaa..0c8144774 100644 --- a/base_partner_merge/base_partner_merge_view.xml +++ b/base_partner_merge/base_partner_merge_view.xml @@ -2,7 +2,7 @@ - + Deduplicate Contacts @@ -15,7 +15,7 @@ @@ -116,7 +116,7 @@ + target="new" multi="True" key2="client_action_multi" view_mode="form" name="Automatic Merge" groups="group_partner_merge"/> diff --git a/base_partner_merge/security/security.xml b/base_partner_merge/security/security.xml new file mode 100644 index 000000000..9505e1b17 --- /dev/null +++ b/base_partner_merge/security/security.xml @@ -0,0 +1,11 @@ + + + + + Partner Merge + + + + + + From e2eb0f80d2de867fbe6ceb285b91f69b1480f370 Mon Sep 17 00:00:00 2001 From: Matthieu Dietrich Date: Tue, 18 Nov 2014 15:28:35 +0100 Subject: [PATCH 2/2] Correct error message --- base_partner_merge/base_partner_merge.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/base_partner_merge/base_partner_merge.py b/base_partner_merge/base_partner_merge.py index e9360e350..7e1cfb0fb 100644 --- a/base_partner_merge/base_partner_merge.py +++ b/base_partner_merge/base_partner_merge.py @@ -346,7 +346,7 @@ class MergePartnerAutomatic(orm.TransientModel): ): raise orm.except_orm( _('Error'), - _("You do not belong in the 'Partner Merge' group. " + _("You do not belong to the 'Partner Merge' group. " "Please contact the Administrator to get access to " "the partner merge functionality."))