diff options
Diffstat (limited to 'addons/website_forum/controllers/main.py')
| -rw-r--r-- | addons/website_forum/controllers/main.py | 34 |
1 files changed, 24 insertions, 10 deletions
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index d2299ca7dc8..435e894db58 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -73,7 +73,7 @@ class WebsiteForum(WebsiteProfile): '''/forum/<model("forum.forum"):forum>/tag/<model("forum.tag"):tag>/questions''', '''/forum/<model("forum.forum"):forum>/tag/<model("forum.tag"):tag>/questions/page/<int:page>''', ], type='http', auth="public", website=True, sitemap=sitemap_forum) - def questions(self, forum, tag=None, page=1, filters='all', sorting=None, search='', **post): + def questions(self, forum, tag=None, page=1, filters='all', my=None, sorting=None, search='', **post): if not forum.can_access_from_current_website(): raise werkzeug.exceptions.NotFound() @@ -86,8 +86,21 @@ class WebsiteForum(WebsiteProfile): domain += [('tag_ids', 'in', tag.id)] if filters == 'unanswered': domain += [('child_ids', '=', False)] - elif filters == 'followed': - domain += [('message_partner_ids', '=', request.env.user.partner_id.id)] + elif filters == 'solved': + domain += [('has_validated_answer', '=', True)] + elif filters == 'unsolved': + domain += [('has_validated_answer', '=', False)] + + user = request.env.user + + if my == 'mine': + domain += [('create_uid', '=', user.id)] + elif my == 'followed': + domain += [('message_partner_ids', '=', user.partner_id.id)] + elif my == 'tagged': + domain += [('tag_ids.message_partner_ids', '=', user.partner_id.id)] + elif my == 'favourites': + domain += [('favourite_ids', '=', user.id)] if sorting: # check that sorting is valid @@ -128,6 +141,7 @@ class WebsiteForum(WebsiteProfile): 'pager': pager, 'tag': tag, 'filters': filters, + 'my': my, 'sorting': sorting, 'search': search, }) @@ -153,10 +167,9 @@ class WebsiteForum(WebsiteProfile): first_char_tag = forum.get_tags_first_char() first_char_list = [(t, t.lower()) for t in first_char_tag if t.isalnum()] first_char_list.insert(0, (_('All'), 'all')) - # get active first char tag - active_char_tag = first_char_list[1][1] if len(first_char_list) > 1 else 'all' - if tag_char: - active_char_tag = tag_char.lower() + + active_char_tag = tag_char and tag_char.lower() or 'all' + # generate domain for searched tags domain = [('forum_id', '=', forum.id), ('posts_count', '>', 0)] order_by = 'name' @@ -282,7 +295,7 @@ class WebsiteForum(WebsiteProfile): user = request.env.user 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_user_values(forum=forum, searches={}, header={'ask_hide': True}) + values = self._prepare_user_values(forum=forum, searches={}, header={'ask_hide': True}, new_question=True) return request.render("website_forum.new_question", values) @http.route(['/forum/<model("forum.forum"):forum>/new', @@ -349,6 +362,7 @@ class WebsiteForum(WebsiteProfile): values.update({ 'tags': tags, 'post': post, + 'is_edit': True, 'is_answer': bool(post.parent_id), 'searches': kwargs, 'content': post.name, @@ -518,8 +532,8 @@ class WebsiteForum(WebsiteProfile): # ----------------------------------- @http.route(['/forum/<model("forum.forum"):forum>/user/<int:user_id>'], type='http', auth="public", website=True) - def view_user_forum_profile(self, forum, user_id, **post): - return werkzeug.utils.redirect('/profile/user/' + str(user_id) + '?forum_id=' + str(forum.id)) + def view_user_forum_profile(self, forum, user_id, forum_origin, **post): + return werkzeug.utils.redirect('/profile/user/' + str(user_id) + '?forum_id=' + str(forum.id) + '&forum_origin=' + str(forum_origin)) def _prepare_user_profile_values(self, user, **post): values = super(WebsiteForum, self)._prepare_user_profile_values(user, **post) |
