-
diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py
index 18fceb2ea7c..971934a5d13 100644
--- a/addons/website_mail/controllers/main.py
+++ b/addons/website_mail/controllers/main.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
+from openerp import SUPERUSER_ID
from openerp.addons.web import http
from openerp.addons.web.http import request
-from openerp.addons.website import website
import werkzeug
from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval
@@ -13,19 +13,28 @@ _months = {1:_("January"), 2:_("February"), 3:_("March"), 4:_("April"), 5:_("May
class website_mail(http.Controller):
- @http.route(['/blog', '/blog/
', '/blog//'], type='http', auth="public")
+ @http.route(['/blog', '/blog//', '/blog///'], type='http', auth="public")
def blog(self, mail_group_id=None, blog_id=None, **post):
+ website = request.registry['website']
group_obj = request.registry['mail.group']
message_obj = request.registry['mail.message']
+ user_obj = request.registry['res.users']
- values = {
+ values = website.get_rendering_context({
'blog_ids': None,
'blog_id': None,
'nav_list': dict(),
'prev_date': None,
'next_date': None,
'mail_group_id': mail_group_id,
- }
+ 'subscribe': post.get('subscribe'),
+ })
+
+ if request.uid != request.public_uid and mail_group_id:
+ message_follower_ids = group_obj.read(request.cr, request.uid, [mail_group_id], ['message_follower_ids'])[0]['message_follower_ids']
+ parent_id = user_obj.browse(request.cr, SUPERUSER_ID, request.uid).partner_id.id
+ values['subscribe'] = parent_id in message_follower_ids
+
domain = mail_group_id and [("res_id", "=", mail_group_id)] or []
for group in message_obj.read_group(request.cr, request.uid, domain + group_obj.get_public_blog(request.cr, request.uid), ['subject', 'date'], groupby="date", orderby="create_date asc"):
@@ -49,11 +58,8 @@ class website_mail(http.Controller):
if blog_id:
values['blog_id'] = message_obj.browse(request.cr, request.uid, blog_id)
- comment_ids = [child_id.id for child_id in values['blog_id'].child_ids]
- values['comments'] = message_obj.read(request.cr, request.uid, comment_ids, ['website_published', 'author_id', 'date', 'body'])
- html = website.render("website_mail.index", values)
- return html
+ return website.render("website_mail.index", values)
@http.route(['/blog/nav'], type='http', auth="public")
def nav(self, **post):
@@ -91,9 +97,9 @@ class website_mail(http.Controller):
request.session.body = False
if post.get('body'):
- return '%s/blog/%s/%s' % (url, mail_group_id, blog_id)
+ return '%s/blog/%s/%s/' % (url, mail_group_id, blog_id)
else:
- return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
+ return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
@http.route(['/blog//new'], type='http', auth="public")
def new_blog_post(self, mail_group_id=None, **post):
@@ -105,4 +111,37 @@ class website_mail(http.Controller):
subtype='mt_comment',
context={'mail_create_nosubsrequest.cribe': True},
)
- return werkzeug.utils.redirect("/blog/%s/%s" % (mail_group_id, blog_id))
+ return werkzeug.utils.redirect("/blog/%s/%s/" % (mail_group_id, blog_id))
+
+ @http.route(['/blog//subscribe', '/blog///subscribe'], type='http', auth="public")
+ def subscribe(self, mail_group_id=None, blog_id=None, **post):
+ partner_obj = request.registry['res.partner']
+ group_obj = request.registry['mail.group']
+ user_obj = request.registry['res.users']
+
+ if mail_group_id and 'subscribe' in post and (post.get('email') or request.uid != request.public_uid):
+ if request.uid == request.public_uid:
+ partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
+ if not partner_ids:
+ partner_ids = [partner_obj.create(request.cr, SUPERUSER_ID, {"email": post.get('email'), "name": "Subscribe: %s" % post.get('email')})]
+ else:
+ partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id]
+ group_obj.message_subscribe(request.cr, request.uid, [mail_group_id], partner_ids)
+
+ return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=post.get('email'))
+
+ @http.route(['/blog//unsubscribe', '/blog///unsubscribe'], type='http', auth="public")
+ def unsubscribe(self, mail_group_id=None, blog_id=None, **post):
+ partner_obj = request.registry['res.partner']
+ group_obj = request.registry['mail.group']
+ user_obj = request.registry['res.users']
+
+ if mail_group_id and 'unsubscribe' in post and (post.get('email') or request.uid != request.public_uid):
+ if request.uid == request.public_uid:
+ partner_ids = partner_obj.search(request.cr, SUPERUSER_ID, [("email", "=", post.get('email'))])
+ else:
+ partner_ids = [user_obj.browse(request.cr, request.uid, request.uid).partner_id.id]
+ group_obj.message_unsubscribe(request.cr, request.uid, [mail_group_id], partner_ids)
+
+ return self.blog(mail_group_id=mail_group_id, blog_id=blog_id, subscribe=None)
+
diff --git a/addons/website_mail/views/website_mail.xml b/addons/website_mail/views/website_mail.xml
index 68e51bca55d..3c7a577fe9e 100644
--- a/addons/website_mail/views/website_mail.xml
+++ b/addons/website_mail/views/website_mail.xml
@@ -18,7 +18,7 @@
- News
+ News
@@ -29,7 +29,7 @@
- News
+ News
@@ -50,20 +50,27 @@
@@ -73,30 +80,27 @@
Click to Unpublish
Click to Publish
-
-
+
+
-
-
+
+
-