[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:
parent
07e5c1340c
commit
c03ffffa8a
|
@ -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,
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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'),
|
||||
}
|
||||
|
||||
|
|
|
@ -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)>1">Answers</div>
|
||||
<div t-if="len(question.child_ids)<=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>1">Answers</div>
|
||||
<div t-if="question.child_count<=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)>1">Answers</span>
|
||||
<span t-if="len(question.child_ids)<=1">Answer</span>
|
||||
<span t-esc="question.child_count"/>
|
||||
<span t-if="question.child_count>1">Answers</span>
|
||||
<span t-if="question.child_count<=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>
|
||||
|
||||
|
|
Loading…
Reference in New Issue