[IMP] website_mail: subscribe (add followers)
bzr revid: chm@openerp.com-20130806085654-n3z6f9u991k9wky3
This commit is contained in:
parent
bf86ccf433
commit
c0f75a5931
|
@ -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)
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//li[last()]" position="after">
|
||||
<li class="pull-right"><a href="/blog/%(website_mail.website_mail_blog)d">News</a></li>
|
||||
<li class="pull-right"><a href="/blog/%(website_mail.website_mail_blog)d/">News</a></li>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
|
@ -29,7 +29,7 @@
|
|||
<field name="arch" type="xml">
|
||||
<data>
|
||||
<xpath expr="//a[@href='/page/website.news']" position="replace">
|
||||
<a href="/blog/%(website_mail.website_mail_blog)d">News</a>
|
||||
<a href="/blog/%(website_mail.website_mail_blog)d/">News</a>
|
||||
</xpath>
|
||||
</data>
|
||||
</field>
|
||||
|
@ -50,7 +50,7 @@
|
|||
<div class="span4">
|
||||
<ul class="nav nav-list">
|
||||
<a t-if="mail_group_id and editable" t-att-href="'/blog/%%s/new' %% mail_group_id" class="btn">Add a new Blog</a>
|
||||
<li class="nav-header"><a t-att-href="'/blog/%%s' %% mail_group_id">BLOG ARCHIVE</a></li>
|
||||
<li class="nav-header"><a t-att-href="'/blog/%%s/' %% mail_group_id">BLOG ARCHIVE</a></li>
|
||||
<!-- TODO: check qweb iteration -->
|
||||
<li t-foreach="nav_list" t-as="year" class="js_nav_year">
|
||||
<t t-set="year" t-value="nav_list[year]"/>
|
||||
|
@ -63,6 +63,14 @@
|
|||
</t>
|
||||
</ul>
|
||||
</li>
|
||||
<form action="./subscribe" method="POST" class="form-inline" t-if="not subscribe">
|
||||
<input placeholder="Email Address" type="email" name="email" class="input-medium" t-if="request.uid == request.public_uid"/>
|
||||
<button type="submit" class="btn btn-primary" name="subscribe">Subscribe</button>
|
||||
</form>
|
||||
<form action="./unsubscribe" method="POST" class="form-inline" t-if="subscribe">
|
||||
<input type="hidden" name="email" t-att-value="subscribe"/>
|
||||
<button type="submit" class="btn" name="unsubscribe">Unsubscribe</button>
|
||||
</form>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="span8" t-if="blog_id">
|
||||
|
@ -79,7 +87,7 @@
|
|||
<div t-field="blog_id.date"/>
|
||||
</small>
|
||||
</div>
|
||||
<ul class="media-list">
|
||||
<ul class="media-list" id="comment">
|
||||
<li t-foreach="blog_id.child_ids" t-as="comment" class="media">
|
||||
<div class="media-body">
|
||||
<a href="#" t-att-data-id="blog_id.id" class="pull-right" t-if="editable">
|
||||
|
@ -108,12 +116,12 @@
|
|||
<span t-att-class="'label label-success js_unpublish %%s' %% (not blog.website_published and 'hidden' or '')">Click to Unpublish</span>
|
||||
<span t-att-class="'label label-important js_publish %%s' %% (blog.website_published and 'hidden' or '')">Click to Publish</span>
|
||||
</a>
|
||||
<h4 class="media-heading" ><a t-att-href="'/blog/%%s/%%s' %% (blog.res_id, blog.id)" t-field="blog.subject"></a></h4>
|
||||
<h4 class="media-heading" ><a t-att-href="'/blog/%%s/%%s#comment' %% (blog.res_id, blog.id)" t-field="blog.subject"></a></h4>
|
||||
<div class="media">
|
||||
<div t-field="blog.body"/>
|
||||
<small class="pull-left muted text-right" t-if="len(blog.child_ids)">
|
||||
<a t-if="len(blog.child_ids) <= 1" t-att-href="'/blog/%%s/%%s' %% (blog.res_id, blog.id)"><t t-esc="len(blog.child_ids)"/> Message</a>
|
||||
<a t-if="len(blog.child_ids) > 1" t-att-href="'/blog/%%s/%%s' %% (blog.res_id, blog.id)"><t t-esc="len(blog.child_ids)"/> Messages</a>
|
||||
<a t-if="len(blog.child_ids) <= 1" t-att-href="'/blog/%%s/%%s#comment' %% (blog.res_id, blog.id)"><t t-esc="len(blog.child_ids)"/> Message</a>
|
||||
<a t-if="len(blog.child_ids) > 1" t-att-href="'/blog/%%s/%%s#comment' %% (blog.res_id, blog.id)"><t t-esc="len(blog.child_ids)"/> Messages</a>
|
||||
</small>
|
||||
<small class="pull-right muted text-right">
|
||||
<div t-field="blog.author_id"/>
|
||||
|
|
Loading…
Reference in New Issue