summaryrefslogtreecommitdiff
path: root/addons/website_forum/controllers/main.py
diff options
context:
space:
mode:
Diffstat (limited to 'addons/website_forum/controllers/main.py')
-rw-r--r--addons/website_forum/controllers/main.py34
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)