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)
# 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:
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',
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', ''),
@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,
@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'),
}
# 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: