diff --git a/addons/website_forum/data/forum_badges_data.xml b/addons/website_forum/data/forum_badges_data.xml
index c503dc713e6..23aae9bfc82 100644
--- a/addons/website_forum/data/forum_badges_data.xml
+++ b/addons/website_forum/data/forum_badges_data.xml
@@ -248,14 +248,22 @@
silver
-
Enthusiast
Vote on questions/answers for 15 days in a row
- count
+ python
+ def get_counter(cr, uid, context=None):
+ res = 1
+ start_date = date.today() - timedelta(days=16)
+ end_date = date.today() - timedelta(days=1)
+ cr.execute('SELECT COUNT(id), create_date from website_forum_post_vote where create_date >= %s and create_date <= %s and user_id = %s GROUP BY create_date',(start_date,end_date, object.user_id.id,))
+ data = cr.dictfetchall()
+ if len(data) == 15:
+ res += 1
+ return res
+result = get_counter(cr, uid, context=context)
+
boolean
-
- [('user_id','=',user.id)]
higher
@@ -272,7 +280,7 @@
- 1
+ 2
@@ -282,14 +290,22 @@
silver
-
Expert
- Post more than 10 questions or answers in one tag
- count
+ Post more than 10 questions in one tag
+ python
+ def get_counter(cr, uid, context=None):
+ res = 1
+ Post = self.pool['website.forum.post']
+ Tag = self.pool['website.forum.tag']
+ for tag in Tag.search(cr, uid, [], context=context):
+ post_count = Post.search_count(cr, uid , [('tags', '=', tag), ('user_id', '=', object.user_id.id)], context=context)
+ if post_count >= 10:
+ res += 1
+ return res
+result = get_counter(cr, uid, context=context)
+
boolean
-
-
higher
@@ -306,7 +322,7 @@
- 11
+ 2
@@ -357,7 +373,7 @@
def count_favorites(cr, uid, context=None):
res = 1
Post = self.pool['website.forum.post']
- user_posts = Post.search(cr, uid, [('user_id','=',uid), ('parent_id', '=', False)], context=context)
+ user_posts = Post.search(cr, uid, [('user_id','=',object.user_id.id), ('parent_id', '=', False)], context=context)
for post in Post.browse(cr, uid, user_posts, context=context):
if len(post.favourite_ids) >= 5:
res += 1
@@ -563,8 +579,8 @@ result = count_favorites(cr, uid, context=context)
def get_posts(cr, uid, context=None):
res = 1
Post = self.pool['website.forum.post']
- user_posts = Post.search(cr, uid, [('user_id','=',uid), ('parent_id', '!=', False), ('vote_count', '>=', 2)], context=context)
- for post in Post.browse(cr, uid, user_posts, context=context):
+ user_posts = Post.search(cr, uid, [('user_id','=',object.user_id.id), ('parent_id', '!=', False), ('vote_count', '>=', 2)], context=context)
+ for post in Post.browse(cr, uid, user_posts, context=context):
print post.parent_id.create_date
question_date = datetime.strptime(post.parent_id.create_date, "%Y-%m-%d %H:%M:%S")
answer_date = datetime.strptime(post.create_date, "%Y-%m-%d %H:%M:%S")
@@ -810,7 +826,7 @@ result = get_posts(cr, uid, context=context)
res = 1
Message = self.pool['mail.message']
Post = self.pool['website.forum.post']
- user_message = Message.read_group(cr, uid,[('create_uid','=',uid), ('type', '=', 'comment'), ('model', '=', 'website.forum.post')], ['res_id'], groupby=['res_id'], context=context)
+ 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)
@@ -925,7 +941,7 @@ result = get_count(cr, uid, context=context)
def count_favorites(cr, uid, context=None):
res = 1
Post = self.pool['website.forum.post']
- user_posts = Post.search(cr, uid, [('user_id','=',uid), ('parent_id', '=', False)], context=context)
+ user_posts = Post.search(cr, uid, [('user_id','=',object.user_id), ('parent_id', '=', False)], context=context)
for post in Post.browse(cr, uid, user_posts, context=context):
if len(post.favourite_ids) >= 25:
res += 1
diff --git a/addons/website_forum/models/website_forum.py b/addons/website_forum/models/website_forum.py
index 1bfdbda47d6..8a772ae3f16 100644
--- a/addons/website_forum/models/website_forum.py
+++ b/addons/website_forum/models/website_forum.py
@@ -246,6 +246,7 @@ class Vote(osv.Model):
'post_id': fields.many2one('website.forum.post', 'Post', required=True),
'user_id': fields.many2one('res.users', 'User'),
'vote': fields.selection([('1', '1'),('-1', '-1'),('0','0')], 'Vote'),
+ 'create_date': fields.datetime('Create Date', select=True, readonly=True),
}
_defaults = {
'user_id': lambda self, cr, uid, ctx: uid,