Skip to content

Commit 9af67f0

Browse files
alextremeclaude
andcommitted
build: upgrade to Django 5.2 and django-cms 4.x
This commit upgrades the project from Django 4.2.x to Django 5.2 and from django-cms 3.11.x to django-cms 4.x with djangocms-versioning. Key changes: **Django 5.2 compatibility:** - Logout now requires POST instead of GET - User.objects.make_random_password() removed - use secrets module - Form field choices return tuples instead of lists **CMS 4.x with djangocms-versioning:** - Page.is_published() removed - use Version model to check state - page.publish() removed - use versioning API via _publish_page() helper - api.create_page() requires created_by parameter for version creation - Placeholders are on PageContent, not Page - Use PageContent.admin_manager to access draft content **Test infrastructure:** - Added cms_tools helpers: _cleanup_cms_test_user(), user_queryset() - Updated OIDC tests to exclude CMS system user from counts - Fixed menu tests for CMS 4.x versioning behavior - Added data migration for ExtendedCMSLink link field Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 3fa76e3 commit 9af67f0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+1101
-528
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[project]
22
name = "open-inwoner"
33
version = "2.0.0-dev"
4-
requires-python = "== 3.12"
4+
requires-python = ">=3.12"
55

66
[tool.uv.pip]
77
no-emit-package = [

requirements/base.in

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ Pillow>=9.0.0 # handle images
33
psycopg2 # database driver
44
pytz # handle timezones
55
python-dotenv # environment variables for secrets
6-
python-decouple # processing of envvar configs
6+
python-decouple>=3.8 # processing of envvar configs (3.8+ needed for Python 3.12)
77
geopy # geo decoder
88
glom # processing nested data
99
furl # processing urls
@@ -14,10 +14,13 @@ pydantic[email]
1414
typing-extensions
1515

1616
# Framework libraries
17-
Django>=4.2,<5.0
17+
Django>=5.2,<6.0
1818
django-admin-index
19-
django-axes
19+
django-axes>=7.0.0 # 7.0+ needed for Python 3.12
20+
django-formtools>=2.5 # 2.5+ needed for Python 3.12
2021
django-filer
22+
django-polymorphic>=4.0.0 # 4.0+ removes pkg_resources dependency (needed for Python 3.12+)
23+
easy-thumbnails>=2.9 # 2.9+ needed for Django 5.x
2124
django-ordered-model
2225
django-redis
2326
django-sniplates
@@ -55,11 +58,13 @@ django-yubin
5558
django-structlog
5659
jinja2
5760

58-
# django cms
59-
django-cms
60-
djangocms-link
61-
djangocms-file
62-
djangocms-picture
61+
# django cms (upgraded to 4.x for Django 5.2 compatibility)
62+
django-cms>=4.1.0,<5.0
63+
djangocms-versioning # provides publishing workflow for CMS 4.x
64+
djangocms-text # replaces djangocms-text-ckeditor in CMS 4.x
65+
djangocms-link>=4.0.0
66+
djangocms-file # Note: 3.0.1 may need patches for CMS 4.x
67+
djangocms-picture>=4.0.0
6368
# djangocms-video
6469
# djangocms-googlemap
6570
# djangocms-snippet
@@ -99,7 +104,7 @@ git+https://github.com/maykinmedia/django-celery-monitor@74b1252#egg=django_cele
99104
# Common Ground integration
100105
zgw-consumers
101106
zgw-consumers-oas
102-
notifications-api-common
107+
notifications-api-common>=0.10.0 # 0.10+ drops gemma-zds-client dependency (pkg_resources issue)
103108
objects-api-client-django
104109

105110

requirements/base.txt

Lines changed: 40 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@ annotated-types==0.6.0
88
# via pydantic
99
ape-pie==0.1.0
1010
# via
11+
# notifications-api-common
1112
# objects-api-client-django
1213
# zgw-consumers
13-
asgiref==3.7.2
14+
asgiref==3.11.1
1415
# via
1516
# django
17+
# django-axes
1618
# django-htmx
1719
# django-structlog
1820
asn1crypto==1.5.1
@@ -97,7 +99,7 @@ defusedxml==0.7.1
9799
# via odfpy
98100
diff-match-patch==20200713
99101
# via django-import-export
100-
django==4.2.28
102+
django==5.2.11
101103
# via
102104
# -r requirements/base.in
103105
# django-admin-index
@@ -118,6 +120,7 @@ django==4.2.28
118120
# django-filer
119121
# django-filter
120122
# django-formtools
123+
# django-fsm-2
121124
# django-health-check
122125
# django-htmx
123126
# django-import-export
@@ -170,9 +173,9 @@ django-appdata==0.4.0
170173
# via aldryn-apphooks-config
171174
django-autoslug==1.9.8
172175
# via -r requirements/base.in
173-
django-axes==5.25.0
176+
django-axes==8.1.0
174177
# via -r requirements/base.in
175-
django-celery-beat==2.6.0
178+
django-celery-beat==2.8.1
176179
# via -r requirements/base.in
177180
django-celery-monitor @ git+https://github.com/maykinmedia/django-celery-monitor@74b12529dcdd6923a4deed4c4b6fd3c9fc56eecd#egg=django_celery_monitor
178181
# via -r requirements/base.in
@@ -184,41 +187,44 @@ django-classy-tags==4.0.0
184187
# via
185188
# django-cms
186189
# django-sekizai
187-
django-cms==3.11.1
190+
django-cms==4.1.9
188191
# via
189192
# -r requirements/base.in
190193
# aldryn-apphooks-config
191194
# djangocms-attributes-field
192195
# djangocms-file
193196
# djangocms-link
194197
# djangocms-picture
198+
# djangocms-versioning
195199
django-colorfield==0.4.5
196200
# via -r requirements/base.in
197201
django-cors-headers==3.10.0
198202
# via -r requirements/base.in
199203
django-csp==3.7
200204
# via -r requirements/base.in
201-
django-csp-reports==1.9.1
205+
django-csp-reports==1.10.0
202206
# via -r requirements/base.in
203207
django-digid-eherkenning[oidc] @ git+https://github.com/maykinmedia/django-digid-eherkenning@8be5292813d58eda2910cd0a535baa39fc566006#egg=django-digid-eherkenning
204208
# via -r requirements/base.in
205209
django-elasticsearch-dsl==8.2
206210
# via -r requirements/base.in
207211
django-extra-fields==3.0.2
208212
# via -r requirements/base.in
209-
django-filer==3.1.1
213+
django-filer==3.4.3
210214
# via
211215
# -r requirements/base.in
212216
# djangocms-file
213-
# djangocms-link
214217
# djangocms-picture
215218
# maykin-django-prosemirror
216219
django-filter==21.1
217220
# via -r requirements/base.in
218-
django-formtools==2.3
221+
django-formtools==2.5.1
219222
# via
223+
# -r requirements/base.in
220224
# django-cms
221225
# django-two-factor-auth
226+
django-fsm-2==4.1.0
227+
# via djangocms-versioning
222228
django-health-check==3.20.8
223229
# via maykin-common
224230
django-htmx==1.23.0
@@ -228,9 +234,7 @@ django-image-cropping==1.7
228234
django-import-export==2.6.1
229235
# via -r requirements/base.in
230236
django-ipware==4.0.0
231-
# via
232-
# django-axes
233-
# django-structlog
237+
# via django-structlog
234238
django-js-asset==2.2.0
235239
# via django-ckeditor
236240
django-jsonform==2.22.0
@@ -251,8 +255,10 @@ django-otp==1.3.0
251255
# via django-two-factor-auth
252256
django-phonenumber-field==5.2.0
253257
# via django-two-factor-auth
254-
django-polymorphic==3.0.0
255-
# via django-filer
258+
django-polymorphic==4.10.5
259+
# via
260+
# -r requirements/base.in
261+
# django-filer
256262
django-privates==3.1.1
257263
# via
258264
# -r requirements/base.in
@@ -317,10 +323,14 @@ djangocms-attributes-field==2.1.0
317323
# djangocms-picture
318324
djangocms-file==3.0.1
319325
# via -r requirements/base.in
320-
djangocms-link==3.1.1
326+
djangocms-link==5.1.0
321327
# via -r requirements/base.in
322328
djangocms-picture==4.1.1
323329
# via -r requirements/base.in
330+
djangocms-text==0.9.3
331+
# via -r requirements/base.in
332+
djangocms-versioning==2.5.0
333+
# via -r requirements/base.in
324334
djangorestframework==3.16.1
325335
# via
326336
# -r requirements/base.in
@@ -337,8 +347,9 @@ docutils==0.21.2
337347
# via django-setup-configuration
338348
drf-spectacular==0.20.1
339349
# via -r requirements/base.in
340-
easy-thumbnails[svg]==2.8.5
350+
easy-thumbnails[svg]==2.10.1
341351
# via
352+
# -r requirements/base.in
342353
# django-filer
343354
# djangocms-picture
344355
ecs-logging==2.1.0
@@ -366,8 +377,6 @@ furl==2.1.3
366377
# -r requirements/base.in
367378
# ape-pie
368379
# django-digid-eherkenning
369-
gemma-zds-client==2.0.0
370-
# via notifications-api-common
371380
geographiclib==1.52
372381
# via geopy
373382
geopy==2.2.0
@@ -407,6 +416,7 @@ kombu==5.5.4
407416
lxml==6.0.0
408417
# via
409418
# django-digid-eherkenning
419+
# djangocms-text
410420
# mail-editor
411421
# maykin-python3-saml
412422
# prosemirror
@@ -446,7 +456,9 @@ mozilla-django-oidc-db[setup-configuration]==0.23.0
446456
# via
447457
# -r requirements/base.in
448458
# django-digid-eherkenning
449-
notifications-api-common==0.2.2
459+
nh3==0.3.2
460+
# via djangocms-text
461+
notifications-api-common==0.10.1
450462
# via -r requirements/base.in
451463
oath==1.4.4
452464
# via -r requirements/base.in
@@ -511,6 +523,9 @@ orderedmultidict==1.0.1
511523
# via furl
512524
packaging==23.0
513525
# via
526+
# django-cms
527+
# djangocms-text
528+
# djangocms-versioning
514529
# kombu
515530
# opentelemetry-instrumentation
516531
phonenumbers==8.13.29
@@ -520,6 +535,7 @@ phonenumberslite==8.13.29
520535
pillow==10.3.0
521536
# via
522537
# -r requirements/base.in
538+
# djangocms-text
523539
# easy-thumbnails
524540
# reportlab
525541
# weasyprint
@@ -555,7 +571,6 @@ pygments==2.19.2
555571
# via rich
556572
pyjwt==2.8.0
557573
# via
558-
# gemma-zds-client
559574
# messagebird
560575
# zgw-consumers
561576
pyopenssl==25.1.0
@@ -577,7 +592,7 @@ python-dateutil==2.8.2
577592
# faker
578593
# messagebird
579594
# python-crontab
580-
python-decouple==3.5
595+
python-decouple==3.8
581596
# via
582597
# -r requirements/base.in
583598
# maykin-common
@@ -594,7 +609,6 @@ pytz==2021.3
594609
pyyaml==6.0.2
595610
# via
596611
# drf-spectacular
597-
# gemma-zds-client
598612
# pydantic-settings
599613
# tablib
600614
# zgw-consumers-oas
@@ -613,7 +627,6 @@ requests==2.32.5
613627
# ape-pie
614628
# django-log-outgoing-requests
615629
# django-open-forms-client
616-
# gemma-zds-client
617630
# mail-editor
618631
# maykin-common
619632
# maykin-python3-saml
@@ -651,7 +664,9 @@ sqlparse==0.5.3
651664
structlog==25.4.0
652665
# via django-structlog
653666
svglib==1.5.1
654-
# via easy-thumbnails
667+
# via
668+
# django-filer
669+
# easy-thumbnails
655670
tablib[html, ods, xls, xlsx, yaml]==3.1.0
656671
# via django-import-export
657672
tinycss2==1.5.1
@@ -725,7 +740,7 @@ xmlsec==1.3.16
725740
# via maykin-python3-saml
726741
xsdata==23.8
727742
# via -r requirements/base.in
728-
zgw-consumers==0.38.1
743+
zgw-consumers==1.2.0
729744
# via
730745
# -r requirements/base.in
731746
# notifications-api-common

0 commit comments

Comments
 (0)