Skip to content

Commit 1d23542

Browse files
authored
fix: static_alias unnecessarily creates new content objects when used with versioning (#202)
* Fix alias content creation regression * Run djmain tests against develop-4
1 parent 29721ef commit 1d23542

File tree

4 files changed

+9
-6
lines changed

4 files changed

+9
-6
lines changed

djangocms_alias/templatetags/djangocms_alias_tags.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ def _get_alias(self, request, static_code, extra_bits):
109109
if is_versioning_enabled() and not request.user.is_authenticated:
110110
return None
111111

112-
# Parlers get_or_create doesn't work well with translations, so we must perform our own get or create
112+
# Parler's get_or_create doesn't work well with translations, so we must perform our own get or create
113113
default_category = Category.objects.filter(translations__name=DEFAULT_STATIC_ALIAS_CATEGORY_NAME).first()
114114
if not default_category:
115115
default_category = Category.objects.create(name=DEFAULT_STATIC_ALIAS_CATEGORY_NAME)
@@ -124,7 +124,7 @@ def _get_alias(self, request, static_code, extra_bits):
124124

125125
alias = Alias.objects.create(category=default_category, **alias_creation_kwargs)
126126

127-
if not AliasContent._default_manager.filter(alias=alias, language=language).exists():
127+
if not AliasContent._base_manager.filter(alias=alias, language=language).exists():
128128
# Create a first content object if none exists in the given language.
129129
# If versioning is enabled we can only create the records with a logged-in user / staff member
130130
if is_versioning_enabled() and not request.user.is_authenticated:

tests/requirements/py311-djmain-cms41-default.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# requirements/compile.py
66
#
7-
asgiref==3.6.0
7+
asgiref==3.7.2
88
# via django
99
beautifulsoup4==4.12.2
1010
# via bs4
@@ -31,7 +31,7 @@ django-classy-tags==4.0.0
3131
# -r requirements.in
3232
# django-cms
3333
# django-sekizai
34-
django-cms==4.1.0rc3
34+
git+https://github.com/django-cms/django-cms@develop-4#egg=django-cms
3535
# via
3636
# -r requirements.in
3737
# djangocms-versioning

tests/requirements/py311-djmain-cms41-versioning.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#
55
# requirements/compile.py
66
#
7-
asgiref==3.6.0
7+
asgiref==3.7.2
88
# via django
99
beautifulsoup4==4.12.2
1010
# via bs4
@@ -31,7 +31,7 @@ django-classy-tags==4.0.0
3131
# -r requirements.in
3232
# django-cms
3333
# django-sekizai
34-
django-cms==4.1.0rc3
34+
git+https://github.com/django-cms/django-cms@develop-4#egg=django-cms
3535
# via
3636
# -r requirements.in
3737
# djangocms-versioning

tests/test_templatetags.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,12 +334,15 @@ def page_edit_url(lang):
334334

335335
with self.login_user_context(self.superuser):
336336
self.client.get(page_edit_url("en")) # supposed to create the alias and alias content for en
337+
self.client.get(page_edit_url("en")) # supposed to create no additional object
337338
self.client.get(page_edit_url("de")) # supposed to create the alias content for de
338339

339340
alias = AliasModel.objects.get(static_code="template_example_global_alias_code")
340341

341342
self.assertIsNotNone(alias.get_content("en", show_draft_content=True))
342343
self.assertIsNotNone(alias.get_content("de", show_draft_content=True))
344+
# Ensure that exactly two content objects have been created
345+
self.assertEqual(alias.contents(manager="admin_manager").count(), 2)
343346

344347
def test_alias_rendered_when_identifier_is_variable(self):
345348
alias_template = """{% load djangocms_alias_tags %}{% static_alias foo_variable %}""" # noqa: E501

0 commit comments

Comments
 (0)