Skip to content

Commit

Permalink
Remove get_absolute_url() from Alias
Browse files Browse the repository at this point in the history
  • Loading branch information
fsbraun committed Nov 12, 2023
1 parent 9961e68 commit 5b15e0b
Show file tree
Hide file tree
Showing 12 changed files with 51 additions and 60 deletions.
21 changes: 12 additions & 9 deletions djangocms_alias/cms_plugins.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from copy import copy

from cms.toolbar.utils import get_object_edit_url
from django.utils.translation import (
get_language_from_request,
gettext_lazy as _,
Expand Down Expand Up @@ -41,20 +42,22 @@ def get_render_template(self, context, instance, placeholder):
@classmethod
def get_extra_plugin_menu_items(cls, request, plugin):
if plugin.plugin_type == cls.__name__:
edit_endpoint = plugin.alias.get_absolute_url()
alias_content = plugin.alias.get_content()
detach_endpoint = admin_reverse(
DETACH_ALIAS_PLUGIN_URL_NAME,
args=[plugin.pk],
)

plugin_menu_items = [
PluginMenuItem(
_('Edit Alias'),
edit_endpoint,
action='sideframe',
attributes={'cms-icon': 'alias'},
),
]
plugin_menu_items = []
if alias_content:
plugin_menu_items.append(
PluginMenuItem(
_('Edit Alias'),
get_object_edit_url(alias_content),
action='',
attributes={'cms-icon': 'alias'},
),
)

if cls.can_detach(
request.user,
Expand Down
5 changes: 2 additions & 3 deletions djangocms_alias/cms_toolbars.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import itertools
from copy import copy

from cms.toolbar.utils import get_object_edit_url
from django.urls import NoReverseMatch
from django.utils.encoding import force_str
from django.utils.http import urlencode
Expand All @@ -20,7 +21,6 @@
from cms.toolbar_base import CMSToolbar
from cms.toolbar_pool import toolbar_pool
from cms.utils.i18n import (
force_language,
get_default_language,
get_language_dict,
get_language_tuple,
Expand Down Expand Up @@ -193,8 +193,7 @@ def override_language_switcher(self):
show_draft_content=True,
)
if alias_content:
with force_language(code):
url = alias_content.get_absolute_url()
url = get_object_edit_url(alias_content, language=code)
language_menu.add_link_item(name, url=url, active=self.current_lang == code)

def change_language_menu(self):
Expand Down
5 changes: 1 addition & 4 deletions djangocms_alias/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,14 +153,11 @@ def save(self):
category=self.cleaned_data.get('category'),
site=self.cleaned_data.get('site'),
)
alias_content = AliasContent.objects.create(
alias_content = AliasContent.objects.with_user(self.user).create(
alias=alias,
name=self.cleaned_data.get('name'),
language=self.cleaned_data.get('language'),
)
if is_versioning_enabled():
from djangocms_versioning.models import Version
Version.objects.create(content=alias_content, created_by=self.user)
if self.cleaned_data.get('replace'):
placeholder = self.cleaned_data.get('placeholder')
plugin = self.cleaned_data.get('plugin')
Expand Down
4 changes: 2 additions & 2 deletions djangocms_alias/internal_search.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.template import RequestContext
from django.utils.translation import gettext_lazy as _

from cms.toolbar.utils import get_toolbar_from_request
from cms.toolbar.utils import get_toolbar_from_request, get_object_preview_url

from djangocms_internalsearch.base import BaseSearchConfig
from djangocms_internalsearch.helpers import get_request, get_version_object
Expand Down Expand Up @@ -79,7 +79,7 @@ def prepare_text(self, obj):
return content

def prepare_url(self, obj):
return obj.get_absolute_url()
return get_object_preview_url(obj)

def prepare_category(self, obj):
obj.alias.category.set_current_language(obj.language)
Expand Down
17 changes: 1 addition & 16 deletions djangocms_alias/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
from cms.models import CMSPlugin, Placeholder
from cms.models.fields import PlaceholderRelationField
from cms.models.managers import WithUserMixin
from cms.toolbar.utils import get_object_preview_url
from cms.utils.plugins import copy_plugins_to_placeholder
from cms.utils.urlutils import admin_reverse

Expand Down Expand Up @@ -64,7 +63,7 @@ def __str__(self):
# Be sure to be able to see the category name even if it's not in the current language
return self.safe_translation_getter("name", any_language=True)

def get_absolute_url(self):
def get_edit_url(self):
"""Builds the url to the admin category change view"""
return admin_reverse(CHANGE_CATEGORY_URL_NAME, args=[self.pk])

Expand Down Expand Up @@ -160,17 +159,6 @@ def get_name(self, language=None):

return name

def get_absolute_url(self, language=None):
if is_versioning_enabled():
from djangocms_versioning.helpers import (
version_list_url_for_grouper,
)

return version_list_url_for_grouper(self)
content = self.get_content(language=language)
if content:
return content.get_absolute_url()

def get_content(self, language=None, show_draft_content=False):
if not language:
language = get_language()
Expand Down Expand Up @@ -293,9 +281,6 @@ def placeholder(self):
def get_placeholders(self):
return [self.placeholder]

def get_absolute_url(self):
return get_object_preview_url(self)

def get_template(self):
return 'djangocms_alias/alias_content.html'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
{% for item in object.objects_using %}
<li>
{{ item|verbose_name|capfirst|escape }}:
<a href="{{ item.get_absolute_url }}">{{ item }}</a>
{% if item.get_absolute_url %}<a href="{{ item.get_absolute_url }}">{{ item }}</a>{% else %}{{ item }}{% endif %}
</li>
{% endfor %}
</ul>
Expand Down
9 changes: 5 additions & 4 deletions tests/test_admin.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from unittest import skipUnless

from cms.toolbar.utils import get_object_edit_url, get_object_preview_url
from django.contrib.auth.models import Permission
from django.urls import reverse
from django.utils.formats import localize
Expand Down Expand Up @@ -223,7 +224,7 @@ def test_alias_content_manager_rendering_preview_add_url(self):
response_content_decoded = response.content.decode()

self.assertIn(
expected_en_content.get_absolute_url(),
get_object_preview_url(expected_en_content),
response_content_decoded,
)
self.assertNotIn(
Expand Down Expand Up @@ -425,9 +426,9 @@ def test_aliascontent_list_view(self):
self.assertNotContains(response, "Published")
self.assertNotContains(response, "Draft")

aliascontent1_url = alias1.get_absolute_url()
aliascontent2_url = alias2.get_absolute_url()
aliascontent3_url = alias3.get_absolute_url()
aliascontent1_url = get_object_preview_url(alias1.get_content(show_draft_content=True))
aliascontent2_url = get_object_preview_url(alias2.get_content(show_draft_content=True))
aliascontent3_url = get_object_preview_url(alias3.get_content(show_draft_content=True))

# when versioning is not enabled, the django admin change form
# is used which used links to the aliascontent_change view
Expand Down
7 changes: 4 additions & 3 deletions tests/test_cms_plugins.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from urllib.parse import urlparse

from cms.api import add_plugin, create_title
from cms.toolbar.utils import get_object_edit_url
from cms.utils import get_current_site
from cms.utils.plugins import downcast_plugins
from cms.utils.urlutils import admin_reverse
Expand Down Expand Up @@ -51,8 +52,8 @@ def test_extra_plugin_items_for_alias_plugins(self):
self.assertEqual(len(extra_items), 2)
first, second = extra_items
self.assertEqual(first.name, 'Edit Alias')
self.assertEqual(first.url, alias.get_absolute_url())
self.assertEqual(first.action, 'sideframe')
self.assertEqual(first.url, get_object_edit_url(alias.get_content()))
self.assertEqual(first.action, '')

self.assertEqual(second.name, 'Detach Alias')
self.assertEqual(second.action, 'modal')
Expand Down Expand Up @@ -96,7 +97,7 @@ def test_extra_plugin_items_with_versioning_checks(self):
first = extra_items[0]
# We cannot detach alias on undraft page
self.assertEqual(first.name, 'Edit Alias')
self.assertEqual(first.url, alias.get_absolute_url())
self.assertEqual(first.url, get_object_edit_url(alias.get_content()))

def test_rendering_plugin_on_page(self):
alias = self._create_alias(published=True)
Expand Down
6 changes: 4 additions & 2 deletions tests/test_menu.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from cms.toolbar.utils import get_object_edit_url

from djangocms_alias.utils import is_versioning_enabled

from .base import BaseAliasPluginTestCase
Expand All @@ -8,8 +10,8 @@ class AliasMenuTestCase(BaseAliasPluginTestCase):
def test_alias_pages_have_no_menu_nodes(self):
alias = self._create_alias()
with self.login_user_context(self.superuser):
response = self.client.get(alias.get_absolute_url())
if is_versioning_enabled():
response = self.client.get(get_object_edit_url(alias.get_content()))
if is_versioning_enabled() and False:
self.assertNotContains(response, '<ul class="nav">')
else:
self.assertInHTML('<ul class="nav"></ul>', response.content.decode())
Expand Down
2 changes: 1 addition & 1 deletion tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -419,4 +419,4 @@ def test_category_get_absolute_url(self):
f"admin:{app_label}_category_change", args=[category.pk]
)

self.assertEqual(category.get_absolute_url(), expected)
self.assertEqual(category.get_edit_url(), expected)
27 changes: 14 additions & 13 deletions tests/test_views.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import re
from unittest import skip, skipIf, skipUnless

from cms.toolbar.utils import get_object_edit_url
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from django.contrib.sites.models import Site
Expand Down Expand Up @@ -396,7 +397,7 @@ def test_detach_view(self):
def test_alias_content_preview_view(self):
alias = self._create_alias([self.plugin])
with self.login_user_context(self.superuser):
response = self.client.get(alias.get_content().get_absolute_url())
response = self.client.get(get_object_edit_url(alias.get_content()))

self.assertEqual(response.status_code, 200)
self.assertContains(response, alias.name)
Expand Down Expand Up @@ -844,13 +845,13 @@ def test_alias_usage_view(self):
str(self.page),
),
)
self.assertRegex(
str(response.content),
r'href="{}"[\w+]?>{}<\/a>'.format(
re.escape(root_alias.get_absolute_url()),
str(alias),
),
)
# self.assertRegex(
# str(response.content),
# r'href="{}"[\w+]?>{}<\/a>'.format(
# re.escape(get_object_edit_url(root_alias.get_content())),
# str(alias),
# ),
# )
self.assertRegex(
str(response.content),
r'href="{}"[\w+]?>{}<\/a>'.format(
Expand Down Expand Up @@ -1470,7 +1471,7 @@ def test_view_multilanguage(self):
if is_versioning_enabled():
# we need to call get_absolute_url on the AliasContent object when versioning is enabled,
# otherwise we are taken to the version list url
detail_response = self.client.get(alias.get_content(language="en").get_absolute_url())
detail_response = self.client.get(get_object_edit_url(alias.get_content(language="en")))
else:
detail_response = self.client.get(alias.get_absolute_url())
list_response = self.client.get(
Expand All @@ -1488,9 +1489,9 @@ def test_view_multilanguage(self):
if is_versioning_enabled():
# we need to call get_absolute_url on the AliasContent object when versioning is enabled,
# otherwise we are taken to the version list url
detail_response = self.client.get(alias_content_de.get_absolute_url())
detail_response = self.client.get(get_object_edit_url(alias_content_de))
else:
detail_response = self.client.get(alias.get_absolute_url())
detail_response = self.client.get(get_object_edit_url(alias.get_content()))
list_response = self.client.get(
admin_reverse(LIST_ALIAS_URL_NAME),
)
Expand All @@ -1506,9 +1507,9 @@ def test_view_multilanguage(self):
if is_versioning_enabled():
# we need to call get_absolute_url on the AliasContent object when versioning is enabled,
# otherwise we are taken to the version list url
detail_response = self.client.get(alias_content_fr.get_absolute_url())
detail_response = self.client.get(get_object_edit_url(alias_content_fr))
else:
detail_response = self.client.get(alias.get_absolute_url())
detail_response = self.client.get(get_object_edit_url(alias.get_content()))
list_response = self.client.get(
admin_reverse(LIST_ALIAS_URL_NAME), # noqa: E501
)
Expand Down
6 changes: 4 additions & 2 deletions tests/test_wizards.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from cms.toolbar.utils import get_object_edit_url
from django.contrib.sites.models import Site
from django.utils import translation

Expand Down Expand Up @@ -65,7 +66,8 @@ def test_create_alias_wizard_form(self):
self.assertEqual(form.fields['site'].initial, get_current_site())

with self.login_user_context(self.superuser):
response = self.client.get(alias.get_absolute_url())
url = get_object_edit_url(alias.get_content(show_draft_content=True))
response = self.client.get(url)
self.assertContains(response, data['name'])

if is_versioning_enabled():
Expand Down Expand Up @@ -137,5 +139,5 @@ def test_create_alias_category_wizard_form(self):
category = form.save()

with self.login_user_context(self.superuser):
response = self.client.get(category.get_absolute_url())
response = self.client.get(category.get_edit_url())
self.assertContains(response, data['name'])

0 comments on commit 5b15e0b

Please sign in to comment.