[FIX] various: slug of a non-existing record
better patch for rev e9b649b555
* also fixes website_event which present the same issue (depends
on a function that slugs)
* raise an exception when slug is called with wrong arguments
instead of returning None (which was unclear)
* before calling slug in a function where we got a depends, check
that the record is actually created
This commit is contained in:
@@ -122,8 +122,7 @@ def slugify(s, max_length=None):
|
||||
def slug(value):
|
||||
if isinstance(value, models.BaseModel):
|
||||
if isinstance(value.id, models.NewId):
|
||||
# it's not possible to slug a record if it's not saved
|
||||
return None
|
||||
raise ValueError("Cannot slug non-existent record %s" % value)
|
||||
# [(id, name)] = value.name_get()
|
||||
identifier, name = value.id, value.display_name
|
||||
else:
|
||||
|
||||
@@ -43,7 +43,8 @@ class Event(models.Model):
|
||||
def _compute_website_url(self):
|
||||
super(Event, self)._compute_website_url()
|
||||
for event in self:
|
||||
event.website_url = '/event/%s' % slug(event)
|
||||
if event.id: # avoid to perform a slug on a not yet saved record in case of an onchange.
|
||||
event.website_url = '/event/%s' % slug(event)
|
||||
|
||||
@api.multi
|
||||
def _get_new_menu_pages(self):
|
||||
|
||||
@@ -148,9 +148,8 @@ class Channel(models.Model):
|
||||
super(Channel, self)._compute_website_url()
|
||||
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
|
||||
for channel in self:
|
||||
channel_slug = slug(channel)
|
||||
if channel_slug:
|
||||
channel.website_url = '%s/slides/%s' % (base_url, channel_slug)
|
||||
if channel.id: # avoid to perform a slug on a not yet saved record in case of an onchange.
|
||||
channel.website_url = '%s/slides/%s' % (base_url, slug(channel))
|
||||
|
||||
@api.onchange('visibility')
|
||||
def change_visibility(self):
|
||||
@@ -354,13 +353,12 @@ class Slide(models.Model):
|
||||
super(Slide, self)._compute_website_url()
|
||||
base_url = self.env['ir.config_parameter'].get_param('web.base.url')
|
||||
for slide in self:
|
||||
slide_slug = slug(slide)
|
||||
if slide_slug:
|
||||
#link_tracker is not in dependencies, so use it to shorten url only if installed.
|
||||
if slide.id: # avoid to perform a slug on a not yet saved record in case of an onchange.
|
||||
# link_tracker is not in dependencies, so use it to shorten url only if installed.
|
||||
if self.env.registry.get('link.tracker'):
|
||||
url = self.env['link.tracker'].sudo().create({'url': '%s/slides/slide/%s' % (base_url, slide_slug)}).short_url
|
||||
url = self.env['link.tracker'].sudo().create({'url': '%s/slides/slide/%s' % (base_url, slug(slide))}).short_url
|
||||
else:
|
||||
url = '%s/slides/slide/%s' % (base_url, slide_slug)
|
||||
url = '%s/slides/slide/%s' % (base_url, slug(slide))
|
||||
slide.website_url = url
|
||||
|
||||
@api.model
|
||||
|
||||
Reference in New Issue
Block a user