[FIX] website_forum: mooooore baaaaaadges

bzr revid: mat@openerp.com-20140415101842-yf6vndw7h62q0b42
This commit is contained in:
Martin Trigaux 2014-04-15 12:18:42 +02:00
parent 9f3a2f84e0
commit 14ff39f96e
3 changed files with 46 additions and 38 deletions

View File

@ -304,7 +304,11 @@ class gamification_goal(osv.Model):
if end_date:
subquery_domain.append((field_date_name, '>=', end_date))
user_values = obj.read_group(cr, uid, subquery_domain, fields=[field_name], groupby=[field_name], context=context)
if field_name == 'id':
user_ids = obj.search(cr, uid, subquery_domain, context=context)
user_values = [{'id': user_id, 'id_count': 1} for user_id in user_ids]
else:
user_values = obj.read_group(cr, uid, subquery_domain, fields=[field_name], groupby=[field_name], context=context)
for goal in [g for g in goals if g.id in query_goals.keys()]:
for user_value in user_values:

View File

@ -3,7 +3,7 @@
<data>
<!-- Biography: complet your profile -->
<!-- <record id="badge_p_1" model="gamification.badge">
<record id="badge_p_1" model="gamification.badge">
<field name="name">Autobiographer</field>
<field name="description">Completed own biography</field>
<field name="level">bronze</field>
@ -14,11 +14,15 @@
<field name="computation_mode">count</field>
<field name="display_mode">boolean</field>
<field name="model_id" eval="ref('base.model_res_users')" />
<field name="domain">[('id','=',user.id),
('partner_id.country_id', '!=', False),
('partner_id.city', '!=', False),
('partner_id.email', '!=', False)]</field>
<field name="condition">higher</field>
<field name="domain">[
('partner_id.country_id', '!=', False),
('partner_id.city', '!=', False),
('partner_id.email', '!=', False)
]</field>
<field name="batch_mode">True</field>
<field name="batch_distinctive_field" eval="ref('base.field_res_users_id')" />
<field name="batch_user_expression">user.id</field>
</record>
<record model="gamification.challenge" id="challenge_configure_profile">
<field name="name">Complete own biography</field>
@ -26,6 +30,7 @@
<field name="visibility_mode">personal</field>
<field name="report_message_frequency">never</field>
<field name="reward_id" eval="ref('badge_p_1')"/>
<field name="reward_realtime">True</field>
<field name="autojoin_group_id" eval="ref('base.group_user')"/>
<field name="state">inprogress</field>
<field name="category">forum</field>
@ -34,10 +39,10 @@
<field name="definition_id" eval="ref('definition_configure_profile')"/>
<field name="challenge_id" eval="ref('challenge_configure_profile')"/>
<field name="target_goal">1</field>
</record> -->
</record>
<!-- Commentator: at least 10 comments posted on posts -->
<!-- <record id="badge_p_2" model="gamification.badge">
<record id="badge_p_2" model="gamification.badge">
<field name="name">Commentator</field>
<field name="description">Posted 10 comments</field>
<field name="level">bronze</field>
@ -48,8 +53,11 @@
<field name="computation_mode">count</field>
<field name="display_mode">boolean</field>
<field name="model_id" eval="ref('mail.model_mail_message')"/>
<field name="domain" eval="[('author_id', '=', user.partner_id.id), ('type', '=', 'comment'), ('subtype_id', '=', ref('mail.mt_comment')), ('model', '=', 'forum post')]"/>
<field name="condition">higher</field>
<field name="domain" eval="[('type', '=', 'comment'), ('subtype_id', '=', ref('mail.mt_comment')), ('model', '=', 'forum.post')]"/>
<field name="batch_mode">True</field>
<field name="batch_distinctive_field" eval="ref('mail.field_mail_message_author_id')" />
<field name="batch_user_expression">user.partner_id.id</field>
</record>
<record model="gamification.challenge" id="challenge_commentator">
<field name="name">Commentator</field>
@ -57,6 +65,7 @@
<field name="visibility_mode">personal</field>
<field name="report_message_frequency">never</field>
<field name="reward_id" eval="ref('badge_p_2')"/>
<field name="reward_realtime">True</field>
<field name="autojoin_group_id" eval="ref('base.group_user')"/>
<field name="state">inprogress</field>
<field name="category">forum</field>
@ -65,33 +74,24 @@
<field name="definition_id" eval="ref('definition_commentator')"/>
<field name="challenge_id" eval="ref('challenge_commentator')"/>
<field name="target_goal">10</field>
</record> -->
</record>
<!-- Pundit: 10 comments with at least score of 10 -->
<!-- <record id="badge_25" model="gamification.badge">
<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="description">Left comments with score of 10 or more</field>
<field name="level">silver</field>
</record>
<record model="gamification.goal.definition" id="definition_pundit">
<field name="name">Pundit</field>
<field name="description">Post 10 comments with score of 10 or more</field>
<field name="computation_mode">python</field>
<field name="compute_code">def get_count(cr, uid, context=None):
res = 1
Message = self.pool['mail.message']
Post = self.pool['website.forum.post']
user_message = Message.read_group(cr, uid,[('create_uid','=',object.user_id.id), ('type', '=', 'comment'), ('model', '=', 'website.forum.post')], ['res_id'], groupby=['res_id'], context=context)
for rec in user_message:
if rec.get('res_id_count') >= 10:
post = Post.browse(cr, uid, rec.get('res_id'), context=context)
if post.vote_count >= 10:
res += 1
return res
result = get_count(cr, uid, context=context)
</field>
<field name="display_mode">boolean</field>
<field name="condition">higher</field>
<field name="model_id" eval="ref('website_forum.model_forum_post')"/>
<field name="domain" eval="[('parent', '!=', False), ('vote_count' '>=', 10)]"/>
<field name="batch_mode">True</field>
<field name="batch_distinctive_field" eval="ref('website_forum.field_forum_post_create_uid')" />
<field name="batch_user_expression">user.id</field>
</record>
<record model="gamification.challenge" id="challenge_pundit">
<field name="name">Pundit</field>
@ -99,18 +99,19 @@ result = get_count(cr, uid, context=context)
<field name="visibility_mode">personal</field>
<field name="report_message_frequency">never</field>
<field name="reward_id" eval="ref('badge_25')" />
<field name="reward_realtime">True</field>
<field name="autojoin_group_id" eval="ref('base.group_user')" />
<field name="state">inprogress</field>
<field name="category">forum</field>
</record>
<record model="gamification.challenge.line" id="line_pundit">
<field name="definition_id" eval="ref('definition_pundit')" />
<field name="target_goal">2</field>
<field name="target_goal">10</field>
<field name="challenge_id" eval="ref('challenge_pundit')" />
</record> -->
</record>
<!-- Chief Commentator: 100 comments -->
<!-- <record id="badge_p_4" model="gamification.badge">
<record id="badge_p_4" model="gamification.badge">
<field name="name">Chief Commentator</field>
<field name="description">Posted 100 comments</field>
<field name="level">silver</field>
@ -121,6 +122,7 @@ result = get_count(cr, uid, context=context)
<field name="visibility_mode">personal</field>
<field name="report_message_frequency">never</field>
<field name="reward_id" eval="ref('badge_p_4')"/>
<field name="reward_realtime">True</field>
<field name="autojoin_group_id" eval="ref('base.group_user')"/>
<field name="state">inprogress</field>
<field name="category">forum</field>
@ -129,7 +131,7 @@ result = get_count(cr, uid, context=context)
<field name="definition_id" eval="ref('definition_commentator')"/>
<field name="challenge_id" eval="ref('challenge_chief_commentator')"/>
<field name="target_goal">100</field>
</record> -->
</record>
<!-- Expert: tag-based activity -->
<!-- <record id="badge_10" model="gamification.badge">
@ -171,38 +173,39 @@ result = get_counter(cr, uid, context=context)
<field name="challenge_id" eval="ref('challenge_expert')" />
</record> -->
<!-- <record id="badge_32" model="gamification.badge">
<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="level">silver</field>
</record>
<record model="gamification.goal.definition" id="definition_taxonomist">
<field name="name">Taxonomist</field>
<field name="description">Create a tag which can used in minimum 15 questions</field>
<field name="computation_mode">count</field>
<field name="display_mode">boolean</field>
<field name="model_id" eval="ref('website_forum.model_website_forum_tag')" />
<field name="domain">[('create_uid','=',user.id), ('posts_count', '>=', 15)]</field>
<field name="model_id" eval="ref('website_forum.model_forum_tag')" />
<field name="condition">higher</field>
<field name="domain">[('posts_count', '>=', 15)]</field>
<field name="batch_mode">True</field>
<field name="batch_distinctive_field" eval="ref('website_forum.field_forum_tag_create_uid')" />
<field name="batch_user_expression">user.id</field>
</record>
<record model="gamification.challenge" id="challenge_taxonomist">
<field name="name">Taxonomist</field>
<field name="period">once</field>
<field name="visibility_mode">personal</field>
<field name="report_message_frequency">never</field>
<field name="reward_id" eval="ref('badge_32')" />
<field name="reward_realtime">True</field>
<field name="autojoin_group_id" eval="ref('base.group_user')" />
<field name="state">inprogress</field>
<field name="category">forum</field>
</record>
<record model="gamification.challenge.line" id="line_taxonomist">
<field name="definition_id" eval="ref('definition_taxonomist')" />
<field name="target_goal">1</field>
<field name="challenge_id" eval="ref('challenge_taxonomist')" />
</record> -->
<field name="target_goal">1</field>
</record>
</data>
</openerp>

View File

@ -293,4 +293,5 @@ class Tags(osv.Model):
'forum.post': (_get_tag_from_post, ['tag_ids'], 10),
}
),
'create_uid': fields.many2one('res.users', 'Created by', readonly=True),
}