diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index d90b40bf15e..358f105b0d0 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -193,10 +193,13 @@ class ModelConverter(ir.ir_http.ModelConverter): request.cr, _uid, int(m.group(1)), context=request.context) def generate(self, cr, uid, query=None, args=None, context=None): - for record in request.registry[self.model].name_search( - cr, uid, name=query or '', args=eval( self.domain, (args or {}).copy()), - context=context): - yield {'loc': record} + obj = request.registry[self.model] + domain = eval( self.domain, (args or {}).copy()) + if query: + domain.append((obj._rec_name, 'ilike', '%'+query+'%')) + for record in obj.search_read(cr, uid, domain=domain, fields=['write_date',obj._rec_name], context=context): + if record.get(obj._rec_name, False): + yield {'loc': (record['id'], record[obj._rec_name])} class PageConverter(werkzeug.routing.PathConverter): """ Only point of this converter is to bundle pages enumeration logic """ diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 40a296a1a21..5e339a21d03 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -325,7 +325,11 @@ class website(osv.osv): converters = rule._converters or {} values = [{}] - for (name, converter) in converters.items(): + convitems = converters.items() + # converters with a domain are processed after the other ones + gd = lambda x: hasattr(x[1], 'domain') and (x[1].domain <> '[]') + convitems.sort(lambda x, y: cmp(gd(x), gd(y))) + for (name, converter) in convitems: newval = [] for val in values: for v in converter.generate(request.cr, uid, query=query_string, args=val, context=context): diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py index 1464019b4d9..2619a8bd828 100644 --- a/addons/website_forum/controllers/main.py +++ b/addons/website_forum/controllers/main.py @@ -576,7 +576,7 @@ class WebsiteForum(http.Controller): }) return request.website.render("website_forum.badge", values) - @http.route(['''/forum//badge/'''], type='http', auth="public", website=True, multilang=True) + @http.route(['''/forum//badge/'''], type='http', auth="public", website=True, multilang=True) def badge_users(self, forum, badge, **kwargs): user_ids = [badge_user.user_id.id for badge_user in badge.owner_ids] users = request.registry['res.users'].browse(request.cr, SUPERUSER_ID, user_ids, context=request.context) diff --git a/addons/website_forum/security/ir.model.access.csv b/addons/website_forum/security/ir.model.access.csv index f7a0e666ad7..0d00861d65d 100644 --- a/addons/website_forum/security/ir.model.access.csv +++ b/addons/website_forum/security/ir.model.access.csv @@ -1,19 +1,15 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_forum_forum,forum.forum,model_forum_forum,,1,0,0,0 access_forum_forum_manager,forum.forum.maanger,model_forum_forum,base.group_erp_manager,1,1,1,1 - access_forum_post_public,forum.post.public,model_forum_post,base.group_public,1,0,0,0 access_forum_post_portal,forum.post.portal,model_forum_post,base.group_portal,1,1,1,0 access_forum_post_user,forum.post.user,model_forum_post,base.group_user,1,1,1,1 - access_forum_post_vote_public,forum.post.vote.public,model_forum_post_vote,base.group_public,1,0,0,0 access_forum_post_vote_portal,orum.post.vote.portal,model_forum_post_vote,base.group_portal,1,1,1,0 access_forum_post_vote_user,forum.post.vote.user,model_forum_post_vote,base.group_user,1,1,1,1 - access_forum_post_reason_public,forum.post.reason.public,model_forum_post_reason,base.group_public,1,0,0,0 access_forum_post_reason_portal,forum.post.reason.portal,model_forum_post_reason,base.group_portal,1,0,0,0 access_forum_post_reason_user,forum.post.reason.user,model_forum_post_reason,base.group_user,1,1,1,1 - access_forum_tag_public,forum.tag.public,model_forum_tag,base.group_public,1,0,1,0 access_forum_tag_portal,forum.tag.portal,model_forum_tag,base.group_portal,1,0,1,0 access_forum_tag_user,forum.tag.user,model_forum_tag,base.group_user,1,1,1,1