[FIX][IMP] mail.thread: message_is_subscriber now has an optional user_id parameter, to check a given id instead of uid. message_subscribe now checks if the user to subscribe has not already a subscription for that record.

bzr revid: tde@openerp.com-20120228143830-wyiq1glltswzjacs
This commit is contained in:
Thibault Delavallée 2012-02-28 15:38:30 +01:00
parent 6149b0d995
commit 9d4afb6659
1 changed files with 7 additions and 4 deletions

View File

@ -612,18 +612,21 @@ class mail_thread(osv.osv):
users = self.pool.get('res.users').read(cr, uid, user_ids, fields=['id', 'name', 'avatar_mini'], context=context)
return users
def message_is_subscriber(self, cr, uid, ids, context=None):
def message_is_subscriber(self, cr, uid, ids, user_id = None, context=None):
users = self.message_get_subscribers(cr, uid, ids, context=context)
if uid in [user['id'] for user in users]:
sub_user_id = uid if user_id is None else user_id
if sub_user_id in [user['id'] for user in users]:
return True
return False
def message_subscribe(self, cr, uid, ids, user_ids = None, context=None):
subscription_obj = self.pool.get('mail.subscription')
sub_user_ids = [uid] if user_ids is None else user_ids
create_ids = []
for id in ids:
create_ids = [subscription_obj.create(cr, uid, {'res_model': self._name, 'res_id': id, 'user_id': user_id}, context=context)
for user_id in sub_user_ids]
for user_id in sub_user_ids:
if self.message_is_subscriber(cr, uid, [id], user_id=user_id, context=context): continue
create_ids.append(subscription_obj.create(cr, uid, {'res_model': self._name, 'res_id': id, 'user_id': user_id}, context=context))
return create_ids
def message_unsubscribe(self, cr, uid, ids, context=None):