[IMP] instead of using len(question.child_ids) use child_count, remove forum filed from gamification.badge use only level, rename controller from /badges to /badge and /tags to /tag

bzr revid: tpa@tinyerp.com-20140312095413-23d39ir8txd3f35q
This commit is contained in:
Turkesh Patel (Open ERP) 2014-03-12 15:24:13 +05:30
parent 07e5c1340c
commit c03ffffa8a
4 changed files with 17 additions and 52 deletions

View File

@ -253,10 +253,9 @@ class website_forum(http.Controller):
def tag_questions(self, forum, tag, page=1, **kwargs):
cr, uid, context = request.cr, request.uid, request.context
Post = request.registry['website.forum.post']
post_ids = [que.id for que in tag.post_ids]
obj_ids = Post.search(cr, uid, [('forum_id', '=', forum.id), ('id', 'in', post_ids)], context=context)
obj_ids = Post.search(cr, uid, [('forum_id', '=', forum.id), ('tags', '=', tag.id)], context=context)
question_ids = Post.browse(cr, uid, obj_ids, context=context)
pager = request.website.pager(url="/forum/%s/tag" % slug(forum), total=len(tag.post_ids), page=page, step=10, scope=10)
pager = request.website.pager(url="/forum/%s/tag" % slug(forum), total=len(obj_ids), page=page, step=10, scope=10)
kwargs['tags'] = 'True'
values = {
@ -267,7 +266,7 @@ class website_forum(http.Controller):
}
return request.website.render("website_forum.index", values)
@http.route(['/forum/<model("website.forum"):forum>/tags'], type='http', auth="public", website=True, multilang=True)
@http.route(['/forum/<model("website.forum"):forum>/tag'], type='http', auth="public", website=True, multilang=True)
def tags(self, forum, page=1, **searches):
cr, uid, context = request.cr, request.uid, request.context
Tag = request.registry['website.forum.tag']
@ -280,11 +279,11 @@ class website_forum(http.Controller):
}
return request.website.render("website_forum.tag", values)
@http.route(['/forum/<model("website.forum"):forum>/badges'], type='http', auth="public", website=True, multilang=True)
@http.route(['/forum/<model("website.forum"):forum>/badge'], type='http', auth="public", website=True, multilang=True)
def badges(self, forum, **searches):
cr, uid, context = request.cr, request.uid, request.context
Badge = request.registry['gamification.badge']
badge_ids = Badge.search(cr, uid, [('forum', '=', True)], context=context)
badge_ids = Badge.search(cr, uid, [('level', '!=', False)], context=context)
badges = Badge.browse(cr, uid, badge_ids, context=context)
values = {
'badges': badges,

View File

@ -7,222 +7,190 @@
<record id="badge_1" model="gamification.badge">
<field name="name">Autobiographer</field>
<field name="description">Completed own biography</field>
<field name="forum">True</field>
<field name="level">bronze</field>
</record>
<record id="badge_3" model="gamification.badge">
<field name="name">Cleanup</field>
<field name="description">First rollback</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_4" model="gamification.badge">
<field name="name">Commentator</field>
<field name="description">Posted 10 comments</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_5" model="gamification.badge">
<field name="name">Critic</field>
<field name="description">First downvote</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_6" model="gamification.badge">
<field name="name">Disciplined</field>
<field name="description">Deleted own post with 3 or more upvotes</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_7" model="gamification.badge">
<field name="name">Editor</field>
<field name="description">First edit</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_8" model="gamification.badge">
<field name="name">Enlightened</field>
<field name="description">First answer was accepted with 3 or more votes</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_9" model="gamification.badge">
<field name="name">Enthusiast</field>
<field name="description">Voted on questions/answers for 15 days in a row</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_10" model="gamification.badge">
<field name="name">Expert</field>
<field name="description">Posted more than 10 questions or answers in one tag</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_11" model="gamification.badge">
<field name="name">Famous Question</field>
<field name="description">Asked a question with 500 views</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_12" model="gamification.badge">
<field name="name">Favorite Question</field>
<field name="description">Question favorited by 5 users</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_13" model="gamification.badge">
<field name="name">Good Answer</field>
<field name="description">Answer voted up 6 times</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_14" model="gamification.badge">
<field name="name">Good Question</field>
<field name="description">Question voted up 6 times</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_15" model="gamification.badge">
<field name="name">Great Answer</field>
<field name="description">Answer voted up 15 times</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_16" model="gamification.badge">
<field name="name">Great Question</field>
<field name="description">Question voted up 15 times</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_17" model="gamification.badge">
<field name="name">Guru</field>
<field name="description">Answer accepted with 15 or more votes</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_18" model="gamification.badge">
<field name="name">Necromancer</field>
<field name="description">Answered a question more than 30 days later with at least 2 votes</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_19" model="gamification.badge">
<field name="name">Nice Answer</field>
<field name="description">Answer voted up 4 times</field>
<field name="forum">True</field>
<field name="level">bronze</field>
</record>
<record id="badge_20" model="gamification.badge">
<field name="name">Nice Quesiotn</field>
<field name="description">Question voted up 4 times</field>
<field name="forum">True</field>
<field name="level">bronze</field>
</record>
<record id="badge_21" model="gamification.badge">
<field name="name">Notable Question</field>
<field name="description">Asked a question with 250 views</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_22" model="gamification.badge">
<field name="name">Organizer</field>
<field name="description">First retag</field>
<field name="forum">True</field>
<field name="level">bronze</field>
</record>
<record id="badge_23" model="gamification.badge">
<field name="name">Peer Pressure</field>
<field name="description">Deleted own post with 3 or more downvotes</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_24" model="gamification.badge">
<field name="name">Popular Question</field>
<field name="description">Asked a question with 150 views</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_25" model="gamification.badge">
<field name="name">Pundit</field>
<field name="description">Left 10 comments with score of 10 or more</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_26" model="gamification.badge">
<field name="name">Scholar</field>
<field name="description">Asked a question and accepted an answer</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_27" model="gamification.badge">
<field name="name">self-Learner</field>
<field name="description">Answered own question with at least 4 up votes</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_28" model="gamification.badge">
<field name="name">Stellar Question</field>
<field name="description">Question favorited by 25 users</field>
<field name="forum">True</field>
<field name="level">bronze</field>
</record>
<record id="badge_29" model="gamification.badge">
<field name="name">Associate Editor</field>
<field name="description">Edited 30 entries</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_30" model="gamification.badge">
<field name="name">Student</field>
<field name="description">Asked first question with at least one up vote</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_31" model="gamification.badge">
<field name="name">Supporter</field>
<field name="description">First upvote</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>
<record id="badge_32" model="gamification.badge">
<field name="name">Taxonomist</field>
<field name="description">Created a tag used by 15 questions</field>
<field name="forum">True</field>
<field name="level">silver</field>
</record>
<record id="badge_33" model="gamification.badge">
<field name="name">Teacher</field>
<field name="description">Received at least 3 upvote for an answer for the first time</field>
<field name="forum">True</field>
<field name="level">gold</field>
</record>

View File

@ -228,7 +228,7 @@ class PostHistory(osv.Model):
_description = 'Post History'
_inherit = ['website.seo.metadata']
_columns = {
'name': fields.char('Post Title')
'name': fields.char('Post Title'),
'post_id': fields.many2one('website.forum.post', 'Post', ondelete='cascade'),
'date': fields.datetime('Created on', select=True, readonly=True),
'user_id': fields.many2one('res.users', 'Created by', select=True, readonly=True),
@ -267,7 +267,7 @@ class Vote(osv.Model):
vote_ids = self.search(cr, uid, [('post_id', '=', post_id), ('user_id','=',uid)], context=context)
if vote_ids:
self.write(cr, uid, vote_uid, {
'vote': vote)
'vote': vote
}, context=context)
else:
self.create(cr, uid, {
@ -279,8 +279,6 @@ class Vote(osv.Model):
class Badge(osv.Model):
_inherit = 'gamification.badge'
_columns = {
# TODO: remove this forum field and use level is not False instead
'forum': fields.boolean('Is a Forum Badge'),
'level': fields.selection([('bronze', 'bronze'), ('silver', 'silver'), ('gold', 'gold')], 'Forum Badge Level'),
}

View File

@ -35,10 +35,10 @@
<template id="post_list">
<div class="question clearfix">
<div class="pull-left text-center">
<div t-attf-class="box #{len(question.child_ids) and 'oe_green' or 'oe_grey'}">
<span t-esc="len(question.child_ids)"/>
<div t-if="len(question.child_ids)&gt;1">Answers</div>
<div t-if="len(question.child_ids)&lt;=1">Answer</div>
<div t-attf-class="box #{question.child_count and 'oe_green' or 'oe_grey'}">
<span t-esc="question.child_count"/>
<div t-if="question.child_count&gt;1">Answers</div>
<div t-if="question.child_count&lt;=1">Answer</div>
</div>
<div class="text-muted text-center">
<span t-field="question.views"/> Views
@ -90,10 +90,10 @@
<a t-attf-href="/forum/#{ slug(forum) }/users">People</a>
</li>
<li t-att-class="searches.get('tags') and 'active' or '' ">
<a t-attf-href="/forum/#{ slug(forum) }/tags">Tags</a>
<a t-attf-href="/forum/#{ slug(forum) }/tag">Tags</a>
</li>
<li t-att-class="searches.get('badges') and 'active' or '' ">
<a t-attf-href="/forum/#{ slug(forum) }/badges">Badges</a>
<a t-attf-href="/forum/#{ slug(forum) }/badge">Badges</a>
</li>
</ul>
<form class="navbar-form navbar-right" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
@ -301,9 +301,9 @@
</div>
</div>
<div class="text-muted">
<span t-esc="len(question.child_ids)"/>
<span t-if="len(question.child_ids)&gt;1">Answers</span>
<span t-if="len(question.child_ids)&lt;=1">Answer</span>
<span t-esc="question.child_count"/>
<span t-if="question.child_count&gt;1">Answers</span>
<span t-if="question.child_count&lt;=1">Answer</span>
</div>
</div>
<div style="margin-left: 95px;">
@ -637,7 +637,7 @@
</div>
<div class="mb16" t-if="not user.badges">
<b>No badge yet!</b><br/>
<a t-attf-href="/forum/#{ slug(forum) }/badges" class="fa fa-arrow-right"> Check available badges</a>
<a t-attf-href="/forum/#{ slug(forum) }/badge" class="fa fa-arrow-right"> Check available badges</a>
</div>
</template>