diff --git a/cms_info/models/cms_mixin.py b/cms_info/models/cms_mixin.py index 4b886fcc..e0bc97ce 100644 --- a/cms_info/models/cms_mixin.py +++ b/cms_info/models/cms_mixin.py @@ -32,35 +32,59 @@ def cms_delete_url_base(self): def cms_after_delete_url(self): return "/" + url = fields.Char( + string="URL", + compute="_compute_cms_url", + compute_sudo=True, + ) cms_edit_url = fields.Char( string="CMS edit URL", - compute="_compute_cms_edit_url", + compute="_compute_cms_url", + compute_sudo=True, ) - cms_delete_url = fields.Char( string="CMS delete URL", - compute="_compute_cms_delete_url", + compute="_compute_cms_url", + compute_sudo=True, ) - cms_delete_confirm_url = fields.Char( string="CMS delete confirm URL", - compute="_compute_cms_delete_url", + compute="_compute_cms_url", + compute_sudo=True, ) + cms_copy_url = fields.Char( + string="CMS copy URL", + compute="_compute_cms_url", + compute_sudo=True, + ) + + def _compute_cms_url(self): + for rec in self: + rec.url = rec._get_cms_url() + rec.cms_edit_url = rec._get_cms_edit_url() + rec.cms_copy_url = rec._get_cms_copy_url() + rec.update(rec._get_cms_delete_urls()) - def _compute_cms_edit_url(self): - base_url = self.cms_edit_url_base - for item in self: - item.cms_edit_url = "{}/{}".format(base_url, item.id) + def _get_cms_url(self): + # TODO: add glue module for website + # TODO: should be empty by default? + base_view_url = self._cms_make_url("view") + return f"{base_view_url}/{self.id}" - def _compute_cms_delete_url(self): + def _get_cms_edit_url(self): + base_edit_url = self.cms_edit_url_base + return f"{base_edit_url}/{self.id}" + + def _get_cms_copy_url(self): + base_url = self._cms_make_url("copy") + return f"{base_url}/{self.id}" + + def _get_cms_delete_urls(self): base_url = self.cms_delete_url_base - for item in self: - item.update( - { - "cms_delete_url": "{}/{}".format(base_url, item.id), - "cms_delete_confirm_url": "{}/{}/confirm".format(base_url, item.id), - } - ) + return { + "cms_delete_url": "{}/{}".format(base_url, self.id), + "cms_delete_confirm_url": "{}/{}/confirm".format(base_url, self.id), + } def cms_is_owner(self, uid=None): self.ensure_one() diff --git a/cms_info/tests/test_info_mixin.py b/cms_info/tests/test_info_mixin.py index a157bc8d..d3df621f 100644 --- a/cms_info/tests/test_info_mixin.py +++ b/cms_info/tests/test_info_mixin.py @@ -40,6 +40,12 @@ def test_create_url(self): def test_search_url(self): self.assertEqual(self.record.cms_search_url, "/cms/search/fake.model") + def test_view_url(self): + self.assertEqual( + self.record.url, + "/cms/view/fake.model/%s" % self.record.id, + ) + def test_edit_url(self): self.assertEqual( self.record.cms_edit_url,