[FIX] links and threads
[odoo/odoo.git] / addons / website_forum / controllers / main.py
index 43788ed..3a1397e 100644 (file)
@@ -156,9 +156,12 @@ class WebsiteForum(http.Controller):
         return request.website.render("website_forum.faq", values)
 
     @http.route('/forum/get_tags', type='http', auth="public", methods=['GET'], website=True)
-    def tag_read(self, **post):
-        tags = request.env['forum.tag'].search_read([], ['name'])
-        data = [tag['name'] for tag in tags]
+    def tag_read(self, q='', l=25, **post):
+        data = request.env['forum.tag'].search_read(
+            domain=[('name', '=ilike', (q or '') + "%")],
+            fields=['id', 'name'],
+            limit=int(l),
+        )
         return simplejson.dumps(data)
 
     @http.route(['/forum/<model("forum.forum"):forum>/tag'], type='http', auth="public", website=True)
@@ -253,7 +256,6 @@ class WebsiteForum(http.Controller):
 
     # Post
     # --------------------------------------------------
-
     @http.route(['/forum/<model("forum.forum"):forum>/ask'], type='http', auth="public", website=True)
     def forum_post(self, forum, post_type=None, **post):
         if not request.session.uid:
@@ -263,7 +265,7 @@ class WebsiteForum(http.Controller):
             return werkzeug.utils.redirect('/forum/%s' % slug(forum))
         if not user.email or not tools.single_email_re.match(user.email):
             return werkzeug.utils.redirect("/forum/%s/user/%s/edit?email_required=1" % (slug(forum), request.session.uid))
-        values = self._prepare_forum_values(forum=forum, searches={},  header={'ask_hide': True})
+        values = self._prepare_forum_values(forum=forum, searches={}, header={'ask_hide': True})
         return request.website.render("website_forum.new_%s" % post_type, values)
 
     @http.route(['/forum/<model("forum.forum"):forum>/new',
@@ -273,18 +275,7 @@ class WebsiteForum(http.Controller):
         cr, uid, context = request.cr, request.uid, request.context
         if not request.session.uid:
             return login_redirect()
-
-        post_tag_ids = []
-        Tag = request.env['forum.tag']
-        if post.get('post_tags', False) and post.get('post_tags').strip('[]'):
-            tags = post.get('post_tags').strip('[]').replace('"', '').split(",")
-            for tag in tags:
-                tag_rec = Tag.search([('name', '=', tag)])
-                if tag_rec:
-                    post_tag_ids.append((4, tag_rec.id))
-                else:
-                    post_tag_ids.append((0, 0, {'name': tag, 'forum_id': forum.id}))
-
+        post_tag_ids = forum._tag_to_write_vals(post.get('post_tags', ''))
         new_question = request.env['forum.post'].create({
             'forum_id': forum.id,
             'name': post.get('post_name', ''),
@@ -331,9 +322,8 @@ class WebsiteForum(http.Controller):
 
     @http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/edit', type='http', auth="user", website=True)
     def post_edit(self, forum, post, **kwargs):
-        tags = ""
-        for tag_name in post.tag_ids:
-            tags += tag_name.name + ","
+        tags = [dict(id=tag.id, name=tag.name) for tag in post.tag_ids]
+        tags = simplejson.dumps(tags)
         values = self._prepare_forum_values(forum=forum)
         values.update({
             'tags': tags,
@@ -345,19 +335,9 @@ class WebsiteForum(http.Controller):
 
     @http.route('/forum/<model("forum.forum"):forum>/post/<model("forum.post"):post>/save', type='http', auth="user", methods=['POST'], website=True)
     def post_save(self, forum, post, **kwargs):
-        post_tags = []
-        if kwargs.get('post_tag') and kwargs.get('post_tag').strip('[]'):
-            Tag = request.env['forum.tag']
-            tags = kwargs.get('post_tag').strip('[]').replace('"', '').split(",")
-            for tag in tags:
-                tag_rec = Tag.search([('name', '=', tag)])
-                if tag_rec:
-                    post_tags += tag_rec.ids
-                else:
-                    new_tag = Tag.create({'name': tag, 'forum_id': forum.id})
-                    post_tags.append(new_tag.id)
+        post_tags = forum._tag_to_write_vals(kwargs.get('post_tag', ''))
         vals = {
-            'tag_ids': [(6, 0, post_tags)],
+            'tag_ids': post_tags,
             'name': kwargs.get('post_name'),
             'content': kwargs.get('content'),
         }
@@ -483,7 +463,8 @@ class WebsiteForum(http.Controller):
 
         # activity by user.
         model, comment = Data.get_object_reference('mail', 'mt_comment')
-        activities = Activity.search([('res_id', 'in', (user_question_ids+user_answer_ids).ids), ('model', '=', 'forum.post'), ('subtype_id', '!=', comment)], order='date DESC', limit=100)
+        activities = Activity.search([('res_id', 'in', (user_question_ids + user_answer_ids).ids), ('model', '=', 'forum.post'), ('subtype_id', '!=', comment)],
+                                     order='date DESC', limit=100)
 
         posts = {}
         for act in activities: