diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py
index 5a9f8751f2d..4ae47a96774 100644
--- a/addons/mail/mail_group.py
+++ b/addons/mail/mail_group.py
@@ -126,7 +126,7 @@ class mail_group(osv.Model):
vals['menu_id'] = menu_id
# Create group and alias
- create_context = dict(context, alias_model_name=self._name, alias_parent_model_name=self._name)
+ create_context = dict(context, alias_model_name=self._name, alias_parent_model_name=self._name, mail_create_nolog=True)
mail_group_id = super(mail_group, self).create(cr, uid, vals, context=create_context)
group = self.browse(cr, uid, mail_group_id, context=context)
self.pool.get('mail.alias').write(cr, uid, [group.alias_id.id], {"alias_force_thread_id": mail_group_id, 'alias_parent_thread_id': mail_group_id}, context)
diff --git a/addons/website_mail/models/mail_message.py b/addons/website_mail/models/mail_message.py
index 12c35f3e83f..a376d391a33 100644
--- a/addons/website_mail/models/mail_message.py
+++ b/addons/website_mail/models/mail_message.py
@@ -19,6 +19,7 @@
#
##############################################################################
+from openerp.tools import html2plaintext
from openerp.tools.translate import _
from openerp.osv import osv, fields
@@ -26,7 +27,21 @@ from openerp.osv import osv, fields
class MailMessage(osv.Model):
_inherit = 'mail.message'
+ def _get_description_short(self, cr, uid, ids, name, arg, context=None):
+ res = dict.fromkeys(ids, False)
+ for message in self.browse(cr, uid, ids, context=context):
+ if message.subject:
+ res[message.id] = message.subject
+ else:
+ plaintext_ct = html2plaintext(message.body)
+ res[message.id] = plaintext_ct + '%s' % (' [...]' if len(plaintext_ct) >= 20 else '')
+ return res
+
_columns = {
+ 'description': fields.function(
+ _get_description_short, type='char',
+ help='Message description: either the subject, or the beginning of the body'
+ ),
'website_published': fields.boolean(
'Published', help="Visible on the website as a comment"
),
diff --git a/addons/website_mail_group/controllers/main.py b/addons/website_mail_group/controllers/main.py
index fe133434abc..628aa874e7f 100644
--- a/addons/website_mail_group/controllers/main.py
+++ b/addons/website_mail_group/controllers/main.py
@@ -1,34 +1,29 @@
# -*- coding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2013-Today OpenERP SA ().
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Affero General Public License as
-# published by the Free Software Foundation, either version 3 of the
-# License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Affero General Public License for more details.
-#
-# You should have received a copy of the GNU Affero General Public License
-# along with this program. If not, see .
-#
-##############################################################################
+import datetime
+
+from openerp import tools
from openerp.addons.web import http
+from openerp.addons.website.models.website import slug
from openerp.addons.web.http import request
class MailGroup(http.Controller):
_thread_per_page = 10
- @http.route([
- "/groups",
- ], type='http', auth="public", website=True)
+ 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)
+ 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()
+ group['date_begin'] = '%s' % datetime.date.strftime(begin_date, tools.DEFAULT_SERVER_DATE_FORMAT)
+ group['date_end'] = '%s' % datetime.date.strftime(end_date, tools.DEFAULT_SERVER_DATE_FORMAT)
+ return groups
+
+ @http.route("/groups", type='http', auth="public", website=True)
def view(self, **post):
cr, uid, context = request.cr, request.uid, request.context
group_obj = request.registry.get('mail.group')
@@ -37,7 +32,7 @@ class MailGroup(http.Controller):
return request.website.render('website_mail_group.mail_groups', values)
@http.route(["/groups/subscription/"], type='json', auth="user")
- def subscription(self, group_id=0, action=False ,**post):
+ def subscription(self, group_id=0, action=False, **post):
cr, uid, context = request.cr, request.uid, request.context
group_obj = request.registry.get('mail.group')
if action:
@@ -47,45 +42,50 @@ class MailGroup(http.Controller):
return []
@http.route([
- "/groups//",
- "/groups///page/"
+ "/groups/",
+ "/groups//page/"
], type='http', auth="public", website=True)
- def thread(self, group, mode='thread', page=1, **post):
+ def thread_headers(self, group, page=1, mode='thread', date_begin=None, date_end=None, **post):
cr, uid, context = request.cr, request.uid, request.context
-
thread_obj = request.registry.get('mail.message')
- domain = [('model','=','mail.group'), ('res_id','=',group.id)]
- if mode=='thread':
- domain.append(('parent_id','=',False))
+
+ domain = [('model', '=', 'mail.group'), ('res_id', '=', group.id)]
+ if mode == 'thread':
+ domain += [('parent_id', '=', False)]
+ if date_begin and date_end:
+ domain += [('date', '>=', date_begin), ('date', '<=', date_end)]
+
thread_count = thread_obj.search_count(cr, uid, domain, context=context)
pager = request.website.pager(
- url='/groups/%s/%s/' % (group.id, mode),
+ url='/groups/%s' % slug(group),
total=thread_count,
page=page,
step=self._thread_per_page,
+ url_args={'mode': mode, 'date_begin': date_begin or '', 'date_end': date_end or ''},
)
thread_ids = thread_obj.search(cr, uid, domain, limit=self._thread_per_page, offset=pager['offset'])
-
messages = thread_obj.browse(cr, uid, thread_ids, context)
- for m in messages:
- print m.subject
values = {
'messages': messages,
'group': group,
'pager': pager,
- 'mode': mode
+ 'mode': mode,
+ 'archives': self._get_archives(group.id),
+ 'date_begin': date_begin,
+ 'date_end': date_end,
}
return request.website.render('website_mail_group.group_messages', values)
@http.route([
- "/groups//message/",
+ "/groups//",
], type='http', auth="public", website=True)
- def get_thread(self, group, message, mode='thread', page=1, **post):
+ def thread_discussion(self, group, message, mode='thread', date_begin=None, date_end=None, **post):
cr, uid, context = request.cr, request.uid, request.context
values = {
'message': message,
'group': group,
'mode': mode,
- 'page': page,
+ 'date_begin': date_begin,
+ 'date_end': date_end,
}
return request.website.render('website_mail_group.group_message', values)
diff --git a/addons/website_mail_group/views/website_mail_group.xml b/addons/website_mail_group/views/website_mail_group.xml
index fb18ee9f3fd..87f8755c04a 100644
--- a/addons/website_mail_group/views/website_mail_group.xml
+++ b/addons/website_mail_group/views/website_mail_group.xml
@@ -16,24 +16,9 @@
@@ -63,10 +48,20 @@
@@ -86,7 +81,7 @@
- Mailing Lists
-
-
+
@@ -98,7 +93,13 @@
-
+
+
+
+
on
@@ -136,25 +137,7 @@
Join this mailing list to follow or participate to this discussion.
:
-
-
-
+
@@ -163,16 +146,25 @@