Skip to content

Commit 4851ffb

Browse files
joshyuJosh Yufsbraun
authored
Feat: CMS 4.1 compatible (#89)
Co-authored-by: Josh Yu <joshyu@foxmail.com> Co-authored-by: Fabian Braun <fsbraun@gmx.de>
1 parent 80991bd commit 4851ffb

File tree

7 files changed

+31
-13
lines changed

7 files changed

+31
-13
lines changed

.github/workflows/test.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,11 @@ jobs:
1010
strategy:
1111
fail-fast: false
1212
matrix:
13-
python-version: [ 3.8, 3.9, '3.10' ] # latest release minus two
13+
python-version: [ 3.9, '3.10' ] # latest release minus two
1414
requirements-file: [
1515
dj32_cms40.txt,
1616
dj42_cms40.txt,
17+
dj42_cms41.txt,
1718
]
1819
os: [
1920
ubuntu-20.04,
@@ -43,10 +44,11 @@ jobs:
4344
strategy:
4445
fail-fast: false
4546
matrix:
46-
python-version: [ 3.8, 3.9, '3.10' ] # latest release minus two
47+
python-version: [ 3.9, '3.10' ] # latest release minus two
4748
requirements-file: [
4849
dj32_cms40.txt,
4950
dj42_cms40.txt,
51+
dj42_cms41.txt,
5052
]
5153

5254
steps:

CHANGELOG.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
Changelog
33
=========
44

5+
Unleased
6+
========
7+
* Python 3.8 support removed
8+
* Django CMS 4.1 support added
9+
510
1.2.0 (2024-05-16)
611
==========
712
* Python 3.10 support added

djangocms_url_manager/compat.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
import django
22

3+
from cms import __version__ as CMS_VERSION
4+
35
from packaging.version import Version
46

57

68
DJANGO_4_1 = Version(django.get_version()) < Version('4.2')
9+
CMS_41 = Version("4.1") <= Version(CMS_VERSION)
710

811

912
def get_page_placeholders(page, language=None):

djangocms_url_manager/models.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
from djangocms_attributes_field.fields import AttributesField
1414

15+
from djangocms_url_manager.compat import CMS_41
1516
from djangocms_url_manager.utils import is_versioning_enabled
1617

1718

@@ -116,9 +117,8 @@ def get_content_queryset(self):
116117
raise NotImplementedError("Models implementing AbstractUrlGrouper should implement get_content_queryset")
117118

118119
def get_content(self, show_draft_content=False):
119-
qs = self.get_content_queryset()
120-
121-
if show_draft_content and is_versioning_enabled():
120+
qs = self.get_content_queryset(show_draft_content)
121+
if not CMS_41 and show_draft_content and is_versioning_enabled():
122122
from djangocms_versioning.constants import DRAFT, PUBLISHED
123123
from djangocms_versioning.helpers import remove_published_where
124124

@@ -130,7 +130,9 @@ def get_content(self, show_draft_content=False):
130130

131131

132132
class UrlGrouper(AbstractUrlGrouper):
133-
def get_content_queryset(self):
133+
def get_content_queryset(self, show_draft_content=False):
134+
if hasattr(Url, "admin_manager") and show_draft_content:
135+
return Url.admin_manager.current_content().filter(url_grouper=self)
134136
return Url.objects.filter(url_grouper=self)
135137

136138

tests/requirements/dj42_cms41.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
-r requirements_base.txt
2+
3+
Django>=4.2,<5.0
4+
django-cms>=4.1.0
5+
djangocms-versioning>2.0
6+
7+
# Unreleased django 4.2 compatible packages
8+
https://github.com/django-cms/djangocms-moderation/tarball/master#egg=djangocms-moderation

tests/test_versioning_integration.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ def test_edit_endpoint_published_page_rendering_published_url(self):
184184

185185
request_url = get_object_edit_url(self.published_pagecontent, self.language)
186186
with self.login_user_context(self.user):
187-
response = self.client.get(request_url)
187+
response = self.client.get(request_url, follow=True)
188188

189189
self.assertContains(response, "some/path/")
190190

@@ -216,7 +216,7 @@ def test_edit_endpoint_published_page_rendering_draft_url(self):
216216

217217
request_url = get_object_edit_url(self.published_pagecontent, self.language)
218218
with self.login_user_context(self.user):
219-
response = self.client.get(request_url)
219+
response = self.client.get(request_url, follow=True)
220220

221221
self.assertContains(response, "some/path/")
222222

tox.ini

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
envlist =
33
flake8
44
isort
5-
py{38,39,'3.10'}-dj{32,42}-sqlite-cms40-{default,versioning}
5+
py{39,3.10}-dj{32,42}-sqlite-cms{40,41}-{default,versioning}
66

77
skip_missing_interpreters=True
88

@@ -13,12 +13,10 @@ deps =
1313
-r {toxinidir}/tests/requirements/requirements_base.txt
1414

1515
dj32: -r {toxinidir}/tests/requirements/django-3_2.txt
16-
dj42: -r {toxinidir}/tests/requirements/dj42_cms40.txt
17-
18-
cms40: https://github.com/divio/django-cms/archive/release/4.0.x.zip
16+
dj42-cms40: -r {toxinidir}/tests/requirements/dj42_cms40.txt
17+
dj42-cms41: -r {toxinidir}/tests/requirements/dj42_cms41.txt
1918

2019
basepython =
21-
py38: python3.8
2220
py39: python3.9
2321
py310: python3.10
2422

0 commit comments

Comments
 (0)