diff options
| author | Olivier Dony <odo@openerp.com> | 2014-05-27 20:49:49 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2014-05-27 20:49:49 +0200 |
| commit | 04211015fc3d4be2a8c65b9d977c2d9c4dac8be7 (patch) | |
| tree | b651a2900e630ed2ff780ddb960b55470f3bd118 /addons/website_mail_group/controllers/main.py | |
| parent | e16233217c6919b33e6d1135ff07538d839f6a2f (diff) | |
| parent | 045285123f2551ca74753260fcf807af4bc413d0 (diff) | |
[MERGE] Forward-port of latest saas-4 fixes, up to 0452851
Diffstat (limited to 'addons/website_mail_group/controllers/main.py')
| -rw-r--r-- | addons/website_mail_group/controllers/main.py | 46 |
1 files changed, 43 insertions, 3 deletions
diff --git a/addons/website_mail_group/controllers/main.py b/addons/website_mail_group/controllers/main.py index 88eb1a7e9b7..7320ebc6548 100644 --- a/addons/website_mail_group/controllers/main.py +++ b/addons/website_mail_group/controllers/main.py @@ -9,13 +9,14 @@ from openerp.addons.web.http import request class MailGroup(http.Controller): - _thread_per_page = 10 + _thread_per_page = 20 + _replies_per_page = 10 def _get_archives(self, group_id): MailMessage = request.registry['mail.message'] groups = MailMessage.read_group( request.cr, request.uid, [('model', '=', 'mail.group'), ('res_id', '=', group_id)], ['subject', 'date'], - groupby="date", orderby="date asc", context=request.context) + groupby="date", orderby="date desc", context=request.context) for group in groups: begin_date = datetime.datetime.strptime(group['__domain'][0][2], tools.DEFAULT_SERVER_DATETIME_FORMAT).date() end_date = datetime.datetime.strptime(group['__domain'][1][2], tools.DEFAULT_SERVER_DATETIME_FORMAT).date() @@ -27,7 +28,7 @@ class MailGroup(http.Controller): def view(self, **post): cr, uid, context = request.cr, request.uid, request.context group_obj = request.registry.get('mail.group') - group_ids = group_obj.search(cr, uid, [], context=context) + group_ids = group_obj.search(cr, uid, [('alias_id', '!=', False), ('alias_id.alias_name', '!=', False)], context=context) values = {'groups': group_obj.browse(cr, uid, group_ids, context)} return request.website.render('website_mail_group.mail_groups', values) @@ -73,6 +74,7 @@ class MailGroup(http.Controller): 'archives': self._get_archives(group.id), 'date_begin': date_begin, 'date_end': date_end, + 'replies_per_page': self._replies_per_page, } return request.website.render('website_mail_group.group_messages', values) @@ -81,11 +83,49 @@ class MailGroup(http.Controller): ], type='http', auth="public", website=True) def thread_discussion(self, group, message, mode='thread', date_begin=None, date_end=None, **post): cr, uid, context = request.cr, request.uid, request.context + Message = request.registry['mail.message'] + if mode == 'thread': + base_domain = [('model', '=', 'mail.group'), ('res_id', '=', group.id), ('parent_id', '=', message.parent_id and message.parent_id.id or False)] + else: + base_domain = [('model', '=', 'mail.group'), ('res_id', '=', group.id)] + next_message = None + next_message_ids = Message.search(cr, uid, base_domain + [('date', '<', message.date)], order="date DESC", limit=1, context=context) + if next_message_ids: + next_message = Message.browse(cr, uid, next_message_ids[0], context=context) + prev_message = None + prev_message_ids = Message.search(cr, uid, base_domain + [('date', '>', message.date)], order="date ASC", limit=1, context=context) + if prev_message_ids: + prev_message = Message.browse(cr, uid, prev_message_ids[0], context=context) values = { 'message': message, 'group': group, 'mode': mode, + 'archives': self._get_archives(group.id), 'date_begin': date_begin, 'date_end': date_end, + 'replies_per_page': self._replies_per_page, + 'next_message': next_message, + 'prev_message': prev_message, } return request.website.render('website_mail_group.group_message', values) + + @http.route( + '''/groups/<model('mail.group'):group>/<model('mail.message', "[('model','=','mail.group'), ('res_id','=',group[0])]"):message>/get_replies''', + type='json', auth="public", methods=['POST'], website=True) + def render_messages(self, group, message, **post): + last_displayed_id = post.get('last_displayed_id') + if not last_displayed_id: + return False + Message = request.registry['mail.message'] + replies_domain = [('id', '<', int(last_displayed_id)), ('parent_id', '=', message.id)] + msg_ids = Message.search(request.cr, request.uid, replies_domain, limit=self._replies_per_page, context=request.context) + msg_count = Message.search(request.cr, request.uid, replies_domain, count=True, context=request.context) + messages = Message.browse(request.cr, request.uid, msg_ids, context=request.context) + values = { + 'group': group, + 'thread_header': message, + 'messages': messages, + 'msg_more_count': msg_count - self._replies_per_page, + 'replies_per_page': self._replies_per_page, + } + return request.registry['ir.ui.view'].render(request.cr, request.uid, 'website_mail_group.messages_short', values, engine='ir.qweb', context=request.context) |
