From f6091ac70a66b403da404ca3deb079b485359879 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Tue, 11 Jul 2023 07:51:00 +0200 Subject: [PATCH 1/3] cms_info: add url field + ease overrides * add a generic `url` field * add specific hooks for each url type and simplify compute --- cms_info/models/cms_mixin.py | 44 +++++++++++++++++++------------ cms_info/tests/test_info_mixin.py | 6 +++++ 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/cms_info/models/cms_mixin.py b/cms_info/models/cms_mixin.py index 4b886fcc..31b5c633 100644 --- a/cms_info/models/cms_mixin.py +++ b/cms_info/models/cms_mixin.py @@ -32,35 +32,45 @@ def cms_delete_url_base(self): def cms_after_delete_url(self): return "/" + url = fields.Char( + string="URL", + compute="_compute_cms_url", + ) cms_edit_url = fields.Char( string="CMS edit URL", - compute="_compute_cms_edit_url", + compute="_compute_cms_url", ) - cms_delete_url = fields.Char( string="CMS delete URL", - compute="_compute_cms_delete_url", + compute="_compute_cms_url", ) - cms_delete_confirm_url = fields.Char( string="CMS delete confirm URL", - compute="_compute_cms_delete_url", + compute="_compute_cms_url", ) - 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 _compute_cms_url(self): + for rec in self: + rec.url = rec._get_cms_url() + rec.cms_edit_url = rec._get_cms_edit_url() + rec.update(rec._get_cms_delete_urls()) + + 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_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, From f982bbd17db52f952a07b9ca23e9168fa8e0bc97 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Thu, 3 Aug 2023 16:18:40 +0200 Subject: [PATCH 2/3] cms_info: use compute_sudo for urls --- cms_info/models/cms_mixin.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/cms_info/models/cms_mixin.py b/cms_info/models/cms_mixin.py index 31b5c633..a78e1216 100644 --- a/cms_info/models/cms_mixin.py +++ b/cms_info/models/cms_mixin.py @@ -35,18 +35,22 @@ def cms_after_delete_url(self): url = fields.Char( string="URL", compute="_compute_cms_url", + compute_sudo=True, ) cms_edit_url = fields.Char( string="CMS edit URL", compute="_compute_cms_url", + compute_sudo=True, ) cms_delete_url = fields.Char( string="CMS delete URL", compute="_compute_cms_url", + compute_sudo=True, ) cms_delete_confirm_url = fields.Char( string="CMS delete confirm URL", compute="_compute_cms_url", + compute_sudo=True, ) def _compute_cms_url(self): From 5b29913b61401b4fb2dd00554f27240d0192e578 Mon Sep 17 00:00:00 2001 From: Simone Orsi Date: Fri, 4 Aug 2023 14:18:56 +0200 Subject: [PATCH 3/3] cms_info: add cms_copy_url --- cms_info/models/cms_mixin.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/cms_info/models/cms_mixin.py b/cms_info/models/cms_mixin.py index a78e1216..e0bc97ce 100644 --- a/cms_info/models/cms_mixin.py +++ b/cms_info/models/cms_mixin.py @@ -52,11 +52,17 @@ def cms_after_delete_url(self): 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 _get_cms_url(self): @@ -69,6 +75,10 @@ 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 return {