diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index df17d5b316d..649701ff702 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -68,6 +68,24 @@ class mail_group(osv.osv): result[id] = self.message_is_subscriber(cr, uid, [id], context=context) return result + def get_messages_nbr(self, cr, uid, ids, name, args, context=None): + result = {} + for id in ids: + result[id] = self.message_get_messages_nbr(cr, uid, [id], context=context) + return result + + def get_discussions_nbr(self, cr, uid, ids, name, args, context=None): + result = {} + for id in ids: + result[id] = self.message_get_discussions_nbr(cr, uid, [id], context=context) + return result + + def get_members_nbr(self, cr, uid, ids, name, args, context=None): + result = {} + for id in ids: + result[id] = len(self._message_get_subscribers_ids(cr, uid, [id], context=context)) + return result + _columns = { 'name': fields.char('Name', size=64, required=True), 'description': fields.text('Description'), @@ -79,7 +97,10 @@ class mail_group(osv.osv): store = { 'mail.group': (lambda self, cr, uid, ids, c={}: ids, ['photo'], 10), }), - 'joined': fields.function(is_subscriber, type='boolean'), + 'joined': fields.function(is_subscriber, type='boolean', string='Joined'), + 'messages_nbr': fields.function(get_messages_nbr, type='integer', string='Messages count'), + 'discussions_nbr': fields.function(get_discussions_nbr, type='integer', string='Discussions count'), + 'members_nbr': fields.function(get_members_nbr, type='integer', string='Members count'), } _defaults = { diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index a0cfc390bec..987634e777e 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -25,9 +25,11 @@

diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index 09fafd48a7e..47992889c90 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -326,6 +326,21 @@ class mail_thread(osv.osv): msgs = message_obj.read(cr, uid, msg_ids, context=context) return msgs + # Message tools + def message_get_discussions_nbr(self, cr, uid, ids, context=None): + count = 0 + message_obj = self.pool.get('mail.message') + for obj in self.browse(cr, uid, ids, context=context): + count += message_obj.search(cr, uid, [('model', '=', self._name), ('res_id', '=', obj.id)], count=True) # TODO: add parent_id when merging branch + return count + + def message_get_messages_nbr(self, cr, uid, ids, context=None): + count = 0 + message_obj = self.pool.get('mail.message') + for obj in self.browse(cr, uid, ids, context=context): + count += message_obj.search(cr, uid, [('model', '=', self._name), ('res_id', '=', obj.id)], count=True) + return count + #------------------------------------------------------ # Email specific #------------------------------------------------------