[IMP] [FIX] website_forum: better control of actions based on karma; those
authorThibault Delavallée <tde@openerp.com>
Fri, 18 Apr 2014 13:57:24 +0000 (15:57 +0200)
committerThibault Delavallée <tde@openerp.com>
Fri, 18 Apr 2014 13:57:24 +0000 (15:57 +0200)
actions are calculated in the controller, based on forum.forum values instead of values hardcoded
in the view.

bzr revid: tde@openerp.com-20140418135724-k64yey6hhrki0b6h

addons/website_forum/controllers/main.py
addons/website_forum/models/forum.py
addons/website_forum/views/website_forum.xml

index 4d91b36..a56ece4 100644 (file)
@@ -32,12 +32,21 @@ class WebsiteForum(http.Controller):
         return msg
 
     def _prepare_forum_values(self, forum=None, **kwargs):
+        Forum = request.registry['forum.forum']
         user = request.registry['res.users'].browse(request.cr, request.uid, request.uid, context=request.context)
         public_uid = request.registry['website'].get_public_user(request.cr, request.uid, request.context)
         values = {'user': user, 'is_public_user': user.id == public_uid,
                   'notifications': self._get_notifications(),
                   'header': kwargs.get('header', dict()),
-                  'searches': kwargs.get('searches', dict())}
+                  'searches': kwargs.get('searches', dict()),
+                  'can_edit_own': True,
+                  'can_edit_all': user.karma > Forum._karma_modo_edit_all,
+                  'can_close_own': user.karma > Forum._karma_modo_close_own,
+                  'can_close_all': user.karma > Forum._karma_modo_close_all,
+                  'can_unlink_own': user.karma > Forum._karma_modo_unlink_own,
+                  'can_unlink_all': user.karma > Forum._karma_modo_unlink_all,
+                  'can_unlink_comment': user.karma > Forum._karma_modo_unlink_comment,
+                  }
         if forum:
             values['forum'] = forum
         elif kwargs.get('forum_id'):
index 88755e6..662ec10 100644 (file)
@@ -17,15 +17,21 @@ class Forum(osv.Model):
     _karma_upvote = 5  # done
     _karma_downvote = 50  # done
     _karma_answer_accept_own = 20  # done
-    _karma_answer_own_question_immediately = 50
+    _karma_answer_accept_own_now = 50
+    _karma_answer_accept_all = 500
     _karma_editor_link_files = 30  # done
     _karma_editor_clickable_link = 50
+    _karma_comment = 1
     _karma_modo_retag = 75
-    _karma_modo_close_own = 100
-    _karma_modo_edit_all = 300
-    _karma_modo_unlink_comment = 400
-    _karma_modo_close_all = 900
-    _karma_modo_unlink_all = 1000
+    _karma_modo_flag = 100
+    _karma_modo_flag_see_all = 300
+    _karma_modo_unlink_comment = 750
+    _karma_modo_edit_own = 1  # done
+    _karma_modo_edit_all = 300  # done
+    _karma_modo_close_own = 100  # done
+    _karma_modo_close_all = 900  # done
+    _karma_modo_unlink_own = 500  # done
+    _karma_modo_unlink_all = 1000  # done
     # karma generation
     _karma_gen_quest_new = 2  # done
     _karma_gen_upvote_quest = 5  # done
index 9dc6d8f..5f82e3b 100644 (file)
                                     comment
                                 </a>
                             </li>
-                            <li t-if="question.state != 'close' and (user.id == question.create_uid.id or user.karma&gt;=100)">
+                            <li t-if="question.state != 'close' and ((user.id == question.create_uid.id and can_close_own) or can_close_all)">
                                 <a class="text-muted fa fa-times" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/ask_for_close">close</a>
                             </li>
-                            <li t-if="question.state == 'close' and user.karma&gt;=500">
+                            <li t-if="question.state == 'close' and ((user.id == question.create_uid.id and can_close_own) or can_close_all)">
                                 <a class="text-muted fa fa-undo" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)/reopen">reopen</a>
                             </li>
-                            <li t-if="user.id == question.create_uid.id or user.karma&gt;=300">
+                            <li t-if="(user.id == question.create_uid.id and can_edit_own) or can_edit_all">
                                 <a class="text-muted fa fa-edit" t-attf-href="/forum/#{ slug(forum) }/post/#{slug(question)}/edit">edit</a>
                             </li>
-                            <li t-if="question.active and user.id == question.create_uid.id or user.karma&gt;=1000">
+                            <li t-if="question.active and ((user.id == question.create_uid.id and can_unlink_own) or can_unlink_all)">
                                 <a class="text-muted fa fa-trash-o" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/delete">delete</a>
                             </li>
-                            <li t-if="uid == question.create_uid.id and not question.active">
+                            <li t-if="not question.active and ((user.id == question.create_uid.id and can_unlink_own) or can_unlink_all)">
                                 <a class="text-muted fa fa-trash-o" t-attf-href="/forum/#{ slug(forum) }/question/#{slug(question)}/undelete">undelete</a>
                             </li>
                             <li><a class="text-muted fa fa-share" t-attf-href="/forum/#{slug(forum)}/question/#{slug(question)}">share</a></li>
                                       t-attf-data-target="#comment#{ answer._name.replace('.','') + '-' + str(answer.id) }">comment
                                 </a>
                             </li>
-                            <li t-if="user.id == answer.create_uid.id or user.karma&gt;=300">
+                            <li t-if="(user.id == answer.create_uid.id and can_edit_own) or can_edit_all">
                                 <a class="text-muted fa fa-edit" t-attf-href="/forum/#{slug(forum)}/post/#{slug(answer)}/edit">edit</a>
                             </li>
-                            <li t-if="user.id == answer.create_uid.id or user.karma&gt;=1000">
+                            <li t-if="(user.id == answer.create_uid.id and can_unlink_own) or can_unlink_all">
                                 <a class="text-muted fa fa-trash-o" t-attf-href="/forum/#{slug(forum)}/post/#{slug(answer)}/delete">delete</a>
                             </li>
                             <li t-if="user.id == answer.create_uid.id">