diff --git a/addons/website_mail/controllers/main.py b/addons/website_mail/controllers/main.py index 2c67e3c6ba8..37178f05c7c 100644 --- a/addons/website_mail/controllers/main.py +++ b/addons/website_mail/controllers/main.py @@ -1,5 +1,6 @@ # -*- coding: utf-8 -*- +from openerp import SUPERUSER_ID from openerp.addons.web import http from openerp.addons.web.http import request import werkzeug @@ -12,11 +13,12 @@ _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 = website.get_rendering_context({ 'blog_ids': None, @@ -25,7 +27,14 @@ class website_mail(http.Controller): '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, request.uid, 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"): @@ -88,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): @@ -102,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 687024210d2..92c0126a700 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,7 +50,7 @@
    +
    + + +
    +
    + + +