diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index b67bacf8da9..ca734f1afe7 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -383,5 +383,7 @@ class ModelConverter(ModelConverter): domain = safe_eval(self.domain, (args or {}).copy()) if dom: domain += dom - for record in Model.search_read(domain, ['display_name']): - yield {'loc': (record['id'], record['display_name'])} + for record in Model.search(domain): + # return record so URL will be the real endpoint URL as the record will go through `slug()` + # the same way as endpoint URL is retrieved during dispatch (301 redirect), see `to_url()` from ModelConverter + yield record diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 789b43708d4..54e4c8f6214 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -780,11 +780,9 @@ class Website(models.Model): if query == FALSE_DOMAIN: continue - for value_dict in converter.generate(uid=self.env.uid, dom=query, args=val): + for rec in converter.generate(uid=self.env.uid, dom=query, args=val): newval.append(val.copy()) - value_dict[name] = value_dict['loc'] - del value_dict['loc'] - newval[-1].update(value_dict) + newval[-1].update({name: rec}) values = newval for value in values: diff --git a/addons/website_blog/controllers/main.py b/addons/website_blog/controllers/main.py index ee6b17ba303..ec804c255c2 100644 --- a/addons/website_blog/controllers/main.py +++ b/addons/website_blog/controllers/main.py @@ -182,7 +182,7 @@ class WebsiteBlog(http.Controller): return r @http.route([ - '''/blog//post//post//track//track//question//question/////