diff options
| author | Christophe Matthieu <chm@openerp.com> | 2013-08-06 10:56:54 +0200 |
|---|---|---|
| committer | Christophe Matthieu <chm@openerp.com> | 2013-08-06 10:56:54 +0200 |
| commit | c0f75a59310540d93eec64f6cdfa577c803e5905 (patch) | |
| tree | 56d9150070c2f69d2cc799a198b5bc3327994be9 /addons/website_mail/controllers | |
| parent | bf86ccf433f9c76d9467a9fdd18048f060f52774 (diff) | |
[IMP] website_mail: subscribe (add followers)
bzr revid: chm@openerp.com-20130806085654-n3z6f9u991k9wky3
Diffstat (limited to 'addons/website_mail/controllers')
| -rw-r--r-- | addons/website_mail/controllers/main.py | 50 |
1 files changed, 46 insertions, 4 deletions
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/<int:mail_group_id>', '/blog/<int:mail_group_id>/<int:blog_id>'], type='http', auth="public") + @http.route(['/blog', '/blog/<int:mail_group_id>/', '/blog/<int:mail_group_id>/<int:blog_id>/'], 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/<int:mail_group_id>/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/<int:mail_group_id>/subscribe', '/blog/<int:mail_group_id>/<int:blog_id>/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/<int:mail_group_id>/unsubscribe', '/blog/<int:mail_group_id>/<int:blog_id>/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) + |
