From d106d54adede6c6e4f78a957980d0121bffdc0f5 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Mon, 6 Jan 2014 15:11:57 +0100 Subject: [PATCH] [FIX] mail: check access rules of related documents when subscribing to it Fix tests to execute actions with user that are allowed to bzr revid: mat@openerp.com-20140106141157-0tp2bgw2d40ynrag --- addons/mail/mail_thread.py | 6 +++++- addons/portal_project/tests/test_access_rights.py | 2 +- addons/portal_project_issue/tests/test_access_rights.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index cf976981132..c9c26439e26 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -1195,10 +1195,12 @@ class mail_thread(osv.AbstractModel): if set(partner_ids) == set([user_pid]): try: self.check_access_rights(cr, uid, 'read') + self.check_access_rule(cr, uid, ids, 'read') except (osv.except_osv, orm.except_orm): - return + return False else: self.check_access_rights(cr, uid, 'write') + self.check_access_rule(cr, uid, ids, 'write') existing_pids_dict = {} fol_ids = mail_followers_obj.search(cr, SUPERUSER_ID, [('res_model', '=', self._name), ('res_id', 'in', ids)]) @@ -1243,8 +1245,10 @@ class mail_thread(osv.AbstractModel): user_pid = self.pool.get('res.users').read(cr, uid, uid, ['partner_id'], context=context)['partner_id'][0] if set(partner_ids) == set([user_pid]): self.check_access_rights(cr, uid, 'read') + self.check_access_rule(cr, uid, ids, 'read') else: self.check_access_rights(cr, uid, 'write') + self.check_access_rule(cr, uid, ids, 'write') fol_obj = self.pool['mail.followers'] fol_ids = fol_obj.search( cr, SUPERUSER_ID, [ diff --git a/addons/portal_project/tests/test_access_rights.py b/addons/portal_project/tests/test_access_rights.py index a7d56cb3895..70a435c5dbf 100644 --- a/addons/portal_project/tests/test_access_rights.py +++ b/addons/portal_project/tests/test_access_rights.py @@ -277,7 +277,7 @@ class TestPortalProject(common.TransactionCase): # Data: subscribe Alfred, Chell and Donovan as follower self.project_project.message_subscribe_users(cr, uid, [pigs_id], [self.user_alfred_id, self.user_chell_id, self.user_donovan_id]) - self.project_task.message_subscribe_users(cr, self.user_alfred_id, [self.task_1_id, self.task_3_id], [self.user_chell_id, self.user_alfred_id]) + self.project_task.message_subscribe_users(cr, self.user_ernest_id, [self.task_1_id, self.task_3_id], [self.user_chell_id, self.user_alfred_id]) # Do: Alfred reads project -> ok (follower ok followers) self.project_project.read(cr, self.user_alfred_id, pigs_id, ['name']) diff --git a/addons/portal_project_issue/tests/test_access_rights.py b/addons/portal_project_issue/tests/test_access_rights.py index 28d337a4965..9d814bf31af 100644 --- a/addons/portal_project_issue/tests/test_access_rights.py +++ b/addons/portal_project_issue/tests/test_access_rights.py @@ -168,7 +168,7 @@ class TestPortalIssueProject(TestPortalProject): # Data: subscribe Alfred, Chell and Donovan as follower self.project_project.message_subscribe_users(cr, uid, [pigs_id], [self.user_alfred_id, self.user_chell_id, self.user_donovan_id]) - self.project_issue.message_subscribe_users(cr, self.user_alfred_id, [self.issue_1_id, self.issue_3_id], [self.user_chell_id, self.user_alfred_id]) + self.project_issue.message_subscribe_users(cr, self.user_ernest_id, [self.issue_1_id, self.issue_3_id], [self.user_chell_id, self.user_alfred_id]) # Do: Alfred reads project -> ok (follower ok followers) # Test: followed + assigned issues visible