summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRomain Derie <rde@odoo.com>2020-02-13 13:45:15 +0000
committerRomain Derie <rde@odoo.com>2020-02-18 16:04:11 +0000
commitb997684b062bb1010c52f4af49f72f2be570e392 (patch)
treec4815311940cc68c6ac569156862d45143f88c6e
parent601795ba4e0255765a029ae38583a8dfcb648475 (diff)
[IMP] website, website_*: improvement of 7dd70438e1
* website_blog, website_event_track, website_forum, website_mail_channel 7dd70438e1ec was introduced in stable as a fix, which obviously had some stable policy preventing some changes. This commit improves that commit in master. task-2119086 closes odoo/odoo#45622 Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
-rw-r--r--addons/website/models/ir_http.py6
-rw-r--r--addons/website/models/website.py6
-rw-r--r--addons/website_blog/controllers/main.py2
-rw-r--r--addons/website_event_track/controllers/main.py2
-rw-r--r--addons/website_forum/controllers/main.py2
-rw-r--r--addons/website_mail_channel/controllers/main.py4
6 files changed, 11 insertions, 11 deletions
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/<model("blog.blog"):blog>/post/<model("blog.post", "[('blog_id','=',blog[0])]"):blog_post>''',
+ '''/blog/<model("blog.blog"):blog>/post/<model("blog.post", "[('blog_id','=',blog.id)]"):blog_post>''',
], type='http', auth="public", website=True, sitemap=True)
def blog_post(self, blog, blog_post, tag_id=None, page=1, enable_editor=None, **post):
""" Prepare all values to display the blog.
diff --git a/addons/website_event_track/controllers/main.py b/addons/website_event_track/controllers/main.py
index 95c7a909959..deb4630bd73 100644
--- a/addons/website_event_track/controllers/main.py
+++ b/addons/website_event_track/controllers/main.py
@@ -16,7 +16,7 @@ from odoo.tools import plaintext2html, html2plaintext
class WebsiteEventTrackController(http.Controller):
- @http.route(['''/event/<model("event.event"):event>/track/<model("event.track", "[('event_id','=',event[0])]"):track>'''], type='http', auth="public", website=True, sitemap=True)
+ @http.route(['''/event/<model("event.event"):event>/track/<model("event.track", "[('event_id','=',event.id)]"):track>'''], type='http', auth="public", website=True, sitemap=True)
def event_track_view(self, event, track, **post):
if not event.can_access_from_current_website():
raise NotFound()
diff --git a/addons/website_forum/controllers/main.py b/addons/website_forum/controllers/main.py
index 31606e41a9a..412a711730f 100644
--- a/addons/website_forum/controllers/main.py
+++ b/addons/website_forum/controllers/main.py
@@ -201,7 +201,7 @@ class WebsiteForum(WebsiteProfile):
except IOError:
return False
- @http.route(['''/forum/<model("forum.forum"):forum>/question/<model("forum.post", "[('forum_id','=',forum[0]),('parent_id','=',False),('can_view', '=', True)]"):question>'''],
+ @http.route(['''/forum/<model("forum.forum"):forum>/question/<model("forum.post", "[('forum_id','=',forum.id),('parent_id','=',False),('can_view', '=', True)]"):question>'''],
type='http', auth="public", website=True, sitemap=True)
def question(self, forum, question, **post):
if not forum.active:
diff --git a/addons/website_mail_channel/controllers/main.py b/addons/website_mail_channel/controllers/main.py
index 4e561f33c0c..4e2747bbeff 100644
--- a/addons/website_mail_channel/controllers/main.py
+++ b/addons/website_mail_channel/controllers/main.py
@@ -156,7 +156,7 @@ class MailGroup(http.Controller):
return request.render('website_mail_channel.group_messages', values)
@http.route([
- '''/groups/<model('mail.channel', "[('channel_type', '=', 'channel')]"):group>/<model('mail.message', "[('model','=','mail.channel'), ('res_id','=',group[0])]"):message>''',
+ '''/groups/<model('mail.channel', "[('channel_type', '=', 'channel')]"):group>/<model('mail.message', "[('model','=','mail.channel'), ('res_id','=',group.id)]"):message>''',
], type='http', auth="public", website=True, sitemap=True)
def thread_discussion(self, group, message, mode='thread', date_begin=None, date_end=None, **post):
if group.channel_type != 'channel':
@@ -183,7 +183,7 @@ class MailGroup(http.Controller):
return request.render('website_mail_channel.group_message', values)
@http.route(
- '''/groups/<model('mail.channel', "[('channel_type', '=', 'channel')]"):group>/<model('mail.message', "[('model','=','mail.channel'), ('res_id','=',group[0])]"):message>/get_replies''',
+ '''/groups/<model('mail.channel', "[('channel_type', '=', 'channel')]"):group>/<model('mail.message', "[('model','=','mail.channel'), ('res_id','=',group.id)]"):message>/get_replies''',
type='json', auth="public", methods=['POST'], website=True)
def render_messages(self, group, message, **post):
if group.channel_type != 'channel':