[IMP] improved code to filter question of tag

bzr revid: tpa@tinyerp.com-20140328095636-6xj5ns1mqrtbusi0
This commit is contained in:
Turkesh Patel (Open ERP) 2014-03-28 15:26:36 +05:30
parent 1c4180c0f3
commit 26def8a7f5
2 changed files with 21 additions and 20 deletions

View File

@ -55,17 +55,6 @@ class website_forum(http.Controller):
}, context=request.context)
return request.redirect("/forum/%s" % forum_id)
def _get_notifications(self, **kwargs):
cr, uid, context = request.cr, request.uid, request.context
Message = request.registry['mail.message']
BadgeUser = request.registry['gamification.badge.user']
#notification to user.
badgeuser_ids = BadgeUser.search(cr, uid, [('user_id', '=', uid)], context=context)
notification_ids = Message.search(cr, uid, [('res_id', 'in', badgeuser_ids), ('model', '=', 'gamification.badge.user'), ('to_read', '=', True)], context=context)
notifications = Message.browse(cr, uid, notification_ids, context=context)
user = request.registry['res.users'].browse(cr, uid, uid, context=context)
return {"user": user, "notifications": notifications}
@http.route(['/forum/<model("website.forum"):forum>',
'/forum/<model("website.forum"):forum>/page/<int:page>',
'/forum/<model("website.forum"):forum>/tag/<model("website.forum.tag"):tag>/questions'
@ -74,6 +63,7 @@ class website_forum(http.Controller):
def questions(self, forum, tag='', page=1, filters='', sorting='', **searches):
cr, uid, context = request.cr, request.uid, request.context
Forum = request.registry['website.forum.post']
user = request.registry['res.users'].browse(cr, uid, uid, context=context)
domain = [('forum_id', '=', forum.id), ('parent_id', '=', False)]
order = "id desc"
@ -85,16 +75,16 @@ class website_forum(http.Controller):
#filter questions for tag.
if tag:
filters = 'tag'
if not filters:
filters = 'tag'
domain += [ ('tags', '=', tag.id) ]
if not filters:
filters = 'all'
if filters == 'unanswered':
domain += [ ('child_ids', '=', False) ]
#TODO: update domain to show followed questions of user
if filters == 'followed':
domain += [ ('user_id', '=', uid) ]
domain += [ ('message_follower_ids', '=', user.partner_id.id) ]
# Note: default sorting should be based on last activity
if not sorting or sorting == 'date':
@ -113,7 +103,7 @@ class website_forum(http.Controller):
question_ids = Forum.browse(cr, uid, obj_ids, context=context)
values = {
'uid': uid,
'uid': request.session.uid,
'total_questions': question_count,
'question_ids': question_ids,
'notifications': self._get_notifications(),
@ -127,6 +117,17 @@ class website_forum(http.Controller):
return request.website.render("website_forum.index", values)
def _get_notifications(self, **kwargs):
cr, uid, context = request.cr, request.uid, request.context
Message = request.registry['mail.message']
BadgeUser = request.registry['gamification.badge.user']
#notification to user.
badgeuser_ids = BadgeUser.search(cr, uid, [('user_id', '=', uid)], context=context)
notification_ids = Message.search(cr, uid, [('res_id', 'in', badgeuser_ids), ('model', '=', 'gamification.badge.user'), ('to_read', '=', True)], context=context)
notifications = Message.browse(cr, uid, notification_ids, context=context)
user = request.registry['res.users'].browse(cr, uid, uid, context=context)
return {"user": user, "notifications": notifications}
@http.route('/forum/notification_read/', type='json', auth="user", multilang=True, methods=['POST'], website=True)
def notification_read(self, **kwarg):
request.registry['mail.message'].set_message_read(request.cr, request.uid, [int(kwarg.get('notification_id'))], read=True, context=request.context)

View File

@ -49,7 +49,7 @@
</div>
</div>
<t t-foreach="question.tags" t-as="tag">
<a t-attf-href="/forum/#{ slug(forum) }/tag/#{ tag.id }" class="badge" t-field="tag.name"/>
<a t-attf-href="/forum/#{ slug(forum) }/tag/#{ tag.id }/questions" class="badge" t-field="tag.name"/>
</t>
</div>
</div>
@ -208,10 +208,10 @@
<li t-att-class="filters == 'unanswered' and 'active' or '' ">
<a t-att-href="url_for('') + '?' + keep_query( 'sorting', filters='unanswered')">Unanswered</a>
</li>
<li t-att-class="filters == 'followed' and 'active' or '' ">
<li t-if="uid" t-att-class="filters == 'followed' and 'active' or '' ">
<a t-att-href="url_for('') + '?' + keep_query( 'sorting', filters='followed')">Followed</a>
</li>
<li t-if="tag" t-att-class="filters == 'tag' and 'active' or '' ">
<li t-if="tag" t-att-class="tag and 'active' or '' ">
<a href=""><t t-esc="tag.name"/> Tag</a>
</li>
<li class="dropdown-header">Sort by</li>
@ -406,7 +406,7 @@
<div class="pull-right">
<div class="text-right">
<t t-foreach="question.tags" t-as="tag">
<a t-attf-href="/forum/#{ slug(forum) }/tag/#{ tag.id }" class="badge" t-field="tag.name"/>
<a t-attf-href="/forum/#{ slug(forum) }/tag/#{ tag.id }/questions" class="badge" t-field="tag.name"/>
</t>
</div>
<ul class="list-inline">
@ -751,7 +751,7 @@
<a href="#badges" data-toggle="tab">Badges</a>
</li>
<li>
<a href="#followed_question" data-toggle="tab">Followed Question</a>
<a href="#followed_question" data-toggle="tab"><t t-esc="len(followed)"/>Followed Question</a>
</li>
<li>
<a href="#votes" data-toggle="tab">Votes</a>