[IMP] mail.thread: added 2 tools method to get number of discussions and number of messages. mail.group: improved kanban view with info (discussions, messages and members count).

bzr revid: tde@openerp.com-20120307172350-kjx16z013bpq4t2z
This commit is contained in:
Thibault Delavallée 2012-03-07 18:23:50 +01:00
parent 4031396f47
commit 9dbb8b35b5
3 changed files with 39 additions and 1 deletions

View File

@ -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 = {

View File

@ -25,9 +25,11 @@
<h4><a type="edit"><field name="name"/></a></h4>
<span style="display: none;"><field name="joined"/></span>
<ul>
<li><field name="members_nbr"/> members</li>
<li t-if="record.joined.raw_value"><b>Joined</b></li>
<li t-if="! record.joined.raw_value"><a name="action_group_join" string="Join" type="object">Join</a></li>
<li t-if="record.joined.raw_value"><a name="action_group_leave" string="Join" type="object">Leave</a></li>
<li><field name="messages_nbr"/> messages in <field name="discussions_nbr"/> discussions</li>
</ul>
</div>
</div>

View File

@ -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
#------------------------------------------------------