github django-cms/django-cms 5.1.0

10 hours ago

What's Changed

  • fix: Structure board update sometimes failed to add all interactive elements by @fsbraun in #8227
  • chore: Prepare new dev branch by @fsbraun in #8223
  • chore: Move from script tags containing dom elements to template tags by @fsbraun in #8233
  • docs: Require American spelling in documentation by @shundread in #8207
  • fix: Update migrations to respect the --database option by @fsbraun in #8222
  • fix: Page settings raised an exception when USE_I18N = False by @fsbraun in #8236
  • fix: replace outdated usage of page__node__path with page__path by @PeterW-LWL in #8238
  • fix: 404 no raised in CMS view when no URLs match by @stefanw in #8240
  • fix: Remove unused import by @dnlzrgz in #8241
  • build(deps): bump tar-fs by @dependabot[bot] in #8244
  • fix: broken links in CONTRIBUTING file by @dnlzrgz in #8245
  • build(deps): bump django from 4.2.21 to 4.2.22 in /docs by @dependabot[bot] in #8250
  • build(deps): bump requests from 2.32.3 to 2.32.4 in /docs by @dependabot[bot] in #8252
  • chore: Make djangocms-admin-style optional dependency by @fsbraun in #8251
  • fix: Allow legacy PlaceholderField to be deconstructed by @stefanw in #8248
  • fix: Migration error with cms.0027_title_placeholders_data_migration by @jmit-modern in #8249
  • refactor: Replace inline-scripts and onclick handlers for better CSP conformance by @stefanw in #8246
  • build(deps): bump urllib3 from 2.3.0 to 2.5.0 in /docs by @dependabot[bot] in #8260
  • build(deps-dev): bump pbkdf2 from 3.1.2 to 3.1.3 by @dependabot[bot] in #8262
  • fix: Apphook widget detection (#8263) by @fsbraun in #8264
  • chore: Remove legacy publication code from extensions by @fsbraun in #8270
  • fix: show_placeholder did not respect edit/preview mode and failed loudly by @fsbraun in #8272
  • fix: Page 'str' return page title for all pages by @mhsiddiqui in #8280
  • chore: Include package data in distr by @fsbraun in #8281
  • fix: Allow lazy wizard initialization by @fsbraun in #8266
  • chore: Introduce dynamic badges by @mrbazzan in #8282
  • chore: Run code coverage upon merge of PR by @fsbraun in #8285
  • fix: Allow clicks to propagate to plugins by @fsbraun in #8288
  • chore: Remove djangocms-text-ckeditor from tests by @fsbraun in #8287
  • fix: GrouperAdmin Search in content model by @mhsiddiqui in #8284
  • docs: link pr template link to Discord channel by @wesleyboar in #8257
  • fix: The headless template included inline CSS by @fsbraun in #8291
  • build(deps): bump actions/first-interaction from 1 to 2 by @dependabot[bot] in #8295
  • docs: Fix broken link in 01-install.rst by @macolo in #8297
  • feat: Django 6 compatibility (July 2025) by @fsbraun in #8299
  • feat: Help menu on CMS5 (#8300) by @florianschieder in #8301
  • build(deps): bump tmp from 0.2.1 to 0.2.4 by @dependabot[bot] in #8304
  • build(deps): bump starlette from 0.46.1 to 0.47.2 in /docs by @dependabot[bot] in #8305
  • build(deps): bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #8308
  • build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #8307
  • build(deps): bump actions/first-interaction from 2 to 3 by @dependabot[bot] in #8310
  • build(deps): bump amannn/action-semantic-pull-request from 5.5.3 to 6.0.1 by @dependabot[bot] in #8309
  • docs: Add documentation for toolbar get_object and set_object methods by @fsbraun with @Copilot in #8312
  • build(deps-dev): bump cipher-base from 1.0.4 to 1.0.6 by @dependabot[bot] in #8316
  • build(deps-dev): bump sha.js from 2.4.11 to 2.4.12 by @dependabot[bot] in #8315
  • fix: Respect individual placeholder checks if they can be changed by @fsbraun in #8317
  • perf: Optimize placeholder and plugin utilities by @fsbraun in #8319
  • build(deps): bump amannn/action-semantic-pull-request from 6.0.1 to 6.1.1 by @dependabot[bot] in #8323
  • fix: Cut children from inactive menu nodes when level is less or equal to 0 by @stefanw in #8322
  • build(deps): bump actions/setup-python from 5 to 6 by @dependabot[bot] in #8329
  • build(deps): bump actions/setup-node from 4 to 5 by @dependabot[bot] in #8332
  • build(deps): bump actions/github-script from 7 to 8 by @dependabot[bot] in #8331
  • build(deps): bump actions/stale from 9.1.0 to 10.0.0 by @dependabot[bot] in #8330
  • fix: copy lang management command - include PageUrl by @vasekch in #7548
  • fix: Migration 0033 failed when empty placeholder objects were not present in the db by @fsbraun in #8338
  • build(deps): bump django from 4.2.22 to 4.2.24 in /docs by @dependabot[bot] in #8333
  • build(deps): bump tar-fs from 3.0.9 to 3.1.1 by @dependabot[bot] in #8345
  • fix: Wrong placholders rendered when using apphooks with own placeholder by @fsbraun in #8343
  • build(deps): bump django from 4.2.24 to 4.2.25 in /docs by @dependabot[bot] in #8351
  • build(deps): bump actions/stale from 10.0.0 to 10.1.0 by @dependabot[bot] in #8354
  • fix: Searching pages for language-specific content failed due to wrong serach queryset by @fsbraun in #8355
  • build(deps): bump github/codeql-action from 3 to 4 by @dependabot[bot] in #8359
  • ci: Fix new contributor message by @marksweb in #8369
  • build(deps): bump actions/setup-node from 5 to 6 by @dependabot[bot] in #8370
  • chore: change python version by @vinitkumar in #8371
  • build(deps): bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #8373
  • build(deps): bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #8372
  • fix: avoid stringifying None-values in page attribute template tag by @wfehr in #8375
  • fix: link in welcome.html for fellowship program by @fsbraun in #8365
  • feat: optimize CI with conditional database testing and nightly runs by @vinitkumar in #8377
  • fix: Copying x-language lead to unique constraint violation by @fsbraun in #8366
  • fix: Fix default value for edit_fields parameter to avoid AttributeError by @fsbraun in #8379
  • build(deps): bump starlette from 0.47.2 to 0.49.1 in /docs by @dependabot[bot] in #8376
  • fix: Ensure edit endpoint language selection when admin is not using i18n_patterns by @fsbraun in #8367
  • build(deps): bump django from 4.2.25 to 4.2.26 in /docs by @dependabot[bot] in #8389
  • fix: Update toolbar URL to use language context by @fsbraun in #8394
  • chore: Upgrade JS build pipeline by @fsbraun in #8393
  • feat: Implement new Django CMS design language for Django CMS 5.1 by @fsbraun in #8320
  • fix: copying failed if a target placeholders was missing by @pietzschke in #8399
  • build(deps-dev): bump js-yaml from 3.14.1 to 3.14.2 by @dependabot[bot] in #8400
  • fix: Fix ApphookReloadMiddleware not handling new language variants #2 by @pietzschke in #8401
  • feat: Refactor site handling, and allow single-instance multi-site configurations by @stefanw in #8303
  • fix: Save fallback for includes when scanning for placeholders by @fsbraun in #8405
  • build(deps): bump actions/checkout from 5 to 6 by @dependabot[bot] in #8409
  • fix: Allow frontend-editable models to omit get_template method by @fsbraun in #8406
  • feat: Let the "eye" icon in the page tree directly go to edit endpoints for editable content by @fsbraun in #8414
  • feat: Allow plugins to restrict themselves to specific models by @fsbraun in #8395
  • build(deps): bump django from 4.2.26 to 4.2.27 in /docs by @dependabot[bot] in #8421
  • fix: clear apphook fields when copying page trees by @Vincent-Ngobeh in #8418
  • fix: gracefully handle unresolvable extends variables in placeholder scanning by @Vincent-Ngobeh in #8420
  • build(deps): bump urllib3 from 2.5.0 to 2.6.0 in /docs by @dependabot[bot] in #8422
  • fix: Potential fix for code scanning alert no. 1231: Wrong name for an argument in a call by @fsbraun in #8423
  • chore: Replace Django 6.0a1 with 6.0 in test requirements by @vinitkumar in #8424
  • build(deps): bump actions/stale from 10.1.0 to 10.1.1 by @dependabot[bot] in #8425
  • chore: Update copyright notice by @fsbraun in #8417
  • feat: Allow page permission change from advanced settings by @fsbraun in #8387
  • build(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in #8428
  • build(deps): bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #8429
  • build(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #8430
  • fix: Improved UX for external placeholders (e.g., static aliases) by @fsbraun in #8416
  • docs: Add note on system attribute in CMSPluginBase by @mrbazzan in #8368
  • fix: Ignore plugins placeholder conf settings nor non-root plugins. by @fsbraun in #8433
  • fix: Add default_auto_field to cms/apps.py (#8254) by @fsbraun in #8258
  • build(deps): bump urllib3 from 2.6.0 to 2.6.3 in /docs by @dependabot[bot] in #8436
  • feat: Add icon for redirected pages in page tree by @fsbraun in #8437
  • ci: Skip live PyPI publish for tags containing "dev" by @fsbraun with @Copilot in #8439
  • fix: Use PageContent.template_choices attribute for template choices instead of settings by @fsbraun in #8441
  • feat: Preserve GET params when switching to preview or edit mode by @fsbraun in #8444
  • chore: Add release notes of minor versions to main branch by @fsbraun in #8448
  • docs: Update logo by @fsbraun in #8450
  • fix: Improve anti-aliasing of django CMS logo png by @fsbraun in #8452
  • docs: Update release notes for 5.1 by @fsbraun in #8454
  • fix: resolve empty page_title in frontend edit mode for apphooks by @woolfie1101 in #8449
  • docs: Add more type hints and tidy up docstrings in plugin_pool.py by @jasperbok in #8445
  • fix: Make Placeholder.add_plugin() set plugin.instance to self (#8442) by @jasperbok in #8447
  • build(deps): bump lodash from 4.17.21 to 4.17.23 by @dependabot[bot] in #8457
  • build(deps): bump lodash-es from 4.17.21 to 4.17.23 by @dependabot[bot] in #8458
  • docs: Rework doc's starting page, and dedicate a full page on explaining the philosophy by @fsbraun in #8453
  • fix: Revert "Add default_auto_field to cms/apps.py (#8254)" by @fsbraun in #8461
  • feat: Make page content placeholders available to apphook root pages by @fsbraun in #8456
  • feat: Avoid database access when registering apphook urls to make them async-safe by @fsbraun in #8460
  • build(deps): bump wheel from 0.45.1 to 0.46.2 in /docs by @dependabot[bot] in #8459
  • fix: Remove async method from user middleware to avoid asgi freeze when accessing session object by @fsbraun in #8464
  • fix: Create page wizard not available on empty install by @fsbraun in #8463
  • build(deps): bump django from 4.2.27 to 4.2.28 in /docs by @dependabot[bot] in #8467
  • feat: introduce contracts for django CMS Extensions by @fsbraun in #8455
  • fix: get_permissions failed for missing global permissions by @fsbraun in #8468
  • fix: Align detection of frontend-editable models by @fsbraun in #8472
  • fix: Grouper admin kept read-only fields as prepopulated fields by @fsbraun in #8471
  • build(deps-dev): bump webpack from 5.102.1 to 5.105.0 by @dependabot[bot] in #8476
  • fix: Language changer for edit and preview mode if no get_absolute_url is available by @fsbraun in #8474
  • feat: Add button for django CMS chat by @fsbraun in #8478
  • chore: Merge back release 5.1.0a1 by @fsbraun in #8481
  • docs: Update screenshots for new UI design by @fsbraun in #8482
  • chore: Squash early migrations by @fsbraun in #8484
  • build(deps-dev): bump basic-ftp from 5.0.5 to 5.2.0 by @dependabot[bot] in #8498
  • docs: Remove reference to page_moved signal which is never called by @fsbraun in #8495
  • build(deps): bump actions/stale from 10.1.1 to 10.2.0 by @dependabot[bot] in #8494
  • fix: Keep GET params when toggling structure mode (#8497) by @fsbraun in #8501
  • build(deps): bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #8504
  • build(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #8505
  • fix: slug and overwrite_url caching failed in read-only change_views by @fsbraun in #8507
  • build(deps): bump minimatch by @dependabot[bot] in #8503
  • build: bump minimum Django version to 4.2.26 (CVE-2025-64459) by @maycuatroi1 in #8502
  • build(deps): bump django from 4.2.28 to 4.2.29 in /docs by @dependabot[bot] in #8514
  • build(deps-dev): bump svgo from 4.0.0 to 4.0.1 by @dependabot[bot] in #8515
  • build(deps): bump immutable by @dependabot[bot] in #8519
  • fix: make django CMS logo on welcome page responsive to dark mode by @entuziaz in #8513
  • docs: Add example for SEO using hreflang by @fsbraun in #8527
  • fix: Chunk size was missing for plugin queryset.iterator() by @fsbraun in #8532
  • build(deps-dev): bump flatted from 3.3.3 to 3.4.2 by @dependabot[bot] in #8535
  • fix: Proxy models of CMSPlugin were not downcasted correctly by @fsbraun in #8539
  • fix: Multi-site permissions were incomplete for wizards and autocomplete by @EaEa0001 in #8537
  • build(deps): bump requests from 2.32.5 to 2.33.0 in /docs by @dependabot[bot] in #8545
  • build(deps): bump picomatch from 2.3.1 to 2.3.2 by @dependabot[bot] in #8543
  • fix: delete_orphaned_plugins could corrupt the plugin tree order by @entuziaz in #8528
  • build(deps): bump black from 26.1.0 to 26.3.1 in /docs by @dependabot[bot] in #8524
  • build(deps): bump serialize-javascript and terser-webpack-plugin by @dependabot[bot] in #8552
  • fix: Inline editing could circumvent permissions by @fsbraun in #8542
  • build(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #8554
  • build(deps): bump pygments from 2.19.2 to 2.20.0 in /docs by @dependabot[bot] in #8555
  • fix: Updating plugins could lead to minified toolbar by @fsbraun in #8550
  • feat: Provide UI for plugins acting as slots by @fsbraun in #8540
  • build(deps): bump lodash-es from 4.17.23 to 4.18.1 by @dependabot[bot] in #8560
  • fix: Fallback languages rendered empty (when not redirecting) by @fsbraun in #8557
  • build(deps): bump lodash from 4.17.23 to 4.18.1 by @dependabot[bot] in #8561
  • fix: DomDiff re-executed existing scripts or link tags by @fsbraun in #8523
  • build(deps): bump django from 4.2.29 to 4.2.30 in /docs by @dependabot[bot] in #8565
  • build(deps-dev): bump basic-ftp from 5.2.0 to 5.2.1 by @dependabot[bot] in #8566
  • fix: Text not fully centered in toobar buttons by @fsbraun in #8563
  • build(deps-dev): bump basic-ftp from 5.2.1 to 5.2.2 by @dependabot[bot] in #8571
  • fix: Add page_title parameter to cms.api.create_page function by @PeterW-LWL in #8567
  • fix: XSS vulnerability in validator error message by @fsbraun in #8576
  • build(deps): bump actions/github-script from 8 to 9 by @dependabot[bot] in #8577
  • fix: Latent XSS vulnerability in the tooltip by @fsbraun in #8568
  • build(deps): bump follow-redirects from 1.15.11 to 1.16.0 by @dependabot[bot] in #8583
  • fix: Deleting a non-local plugin did not refresh the screen by @fsbraun in #8582
  • chore: Remove legacy select2 dependency by @fsbraun in #8573
  • fix: Update Apphook Widget template for modern admin by @fsbraun in #8585
  • fix: Remove optional dependency on deprecated djangocms-admin-style by @fsbraun in #8548
  • fix: Outdated code in UserSelectAdminWidget by @fsbraun in #8575
  • fix: FrontendEditableMixin failed to provide the obj to the Django permission backend by @fsbraun in #8584
  • chore: Missing empty options in PageSmartLinkWidger by @fsbraun in #8589
  • chore: Update release script by @fsbraun in #8593
  • fix: Convert value to string in ApplicationConfigSelect. by @zbohm in #8594
  • docs: Improved placeholder documentation by @fsbraun in #8596
  • fix: Refactor content object caching in GrouperAdmin by @fsbraun in #8588
  • fix: Migrations with a custom user model caused a Programming error by @fsbraun in #8606
  • fix: deadlock could happen on moving large pagesubtrees by @fsbraun in #8529
  • fix: Compatibility shim for Page.objects.order_by used non-existing fields by @fsbraun in #8597
  • build(deps-dev): bump uuid from 13.0.0 to 14.0.0 by @dependabot[bot] in #8613
  • fix: Do not lock whole tree when editing a page by @fsbraun in #8612
  • build(deps): bump postcss from 8.5.6 to 8.5.13 by @dependabot[bot] in #8614
  • docs: Improve installation guides by @fsbraun in #8517
  • build(deps): bump ip-address from 10.1.0 to 10.2.0 by @dependabot[bot] in #8618
  • feat: Extend CMSApp class to provide root template for apphook by @fsbraun in #8619
  • build(deps-dev): bump fast-uri from 3.1.0 to 3.1.2 by @dependabot[bot] in #8621
  • build(deps-dev): bump @babel/plugin-transform-modules-systemjs from 7.29.0 to 7.29.4 by @dependabot[bot] in #8623
  • build(deps): bump urllib3 from 2.6.3 to 2.7.0 in /docs by @dependabot[bot] in #8626
  • fix: Compatibility with formtools 2.6+ caching by @fsbraun in #8629
  • fix: Missing redirect_url in CMSNavigationNode.attr (#8625) by @fsbraun in #8627
  • chore: Update JS dependencies by @fsbraun in #8620
  • build(deps-dev): bump @tootallnate/once from 2.0.0 to 2.0.1 by @dependabot[bot] in #8631
  • build(deps): bump idna from 3.11 to 3.15 in /docs by @dependabot[bot] in #8630
  • build(deps): bump actions/stale from 10.2.0 to 10.3.0 by @dependabot[bot] in #8633
  • build(deps): bump tmp from 0.2.5 to 0.2.7 by @dependabot[bot] in #8638
  • fix: GrouperModelAdmin shadowed prepopulated_fields class attribute by @fsbraun in #8636
  • fix: Single phased CMSAppExtension could extensions with contracts by @fsbraun in #8632
  • chore: Add Django 6.1 to test matrix, remove Django 5.0, 5.1 by @fsbraun in #8635
  • build(deps): bump starlette from 0.52.1 to 1.0.1 in /docs by @dependabot[bot] in #8648
  • test: placeholder source availability for CMS_PLACEHOLDER_CONFIG was not covered by tests by @fsbraun in #8653
  • fix: Slugs of published pages could be changed by @fsbraun in #8640
  • fix: Honour plugin-declared Vary headers in the page cache key by @fsbraun in #8646
  • fix: Toolbar login followed an unverified redirect after authentication by @fsbraun in #8642
  • fix: Enforce authorization on structure, move and clipboard endpoints by @fsbraun in #8644
  • build(deps): bump codecov/codecov-action from 6 to 7 by @dependabot[bot] in #8659
  • fix: Copying from the clipboard into a different language sometimes failed by @fsbraun in #8664
  • docs: First stab at a simplified tutorial by @fsbraun in #8641
  • fix: Corrupted plugin positions are now automatically healed by @fsbraun in #8667
  • fix: Minor fixes of long-standing bugs by @fsbraun in #8666
  • fix: Some page permissions created invalid filter strings by @fsbraun in #8662
  • feat: add configurable menu cache backend (fixes #4440) by @JaeHyuckSa in #8475
  • feat: Simplify project creation with interactive djangocms command and options by @fsbraun in #8671
  • feat: Propagate information why fields are readonly to user by @fsbraun in #8673
  • fix: get_child_classes was always cached by @fsbraun in #8677
  • feat: Accessibility update for wizards by @fsbraun in #8674
  • build(deps-dev): bump @babel/core from 7.29.0 to 7.29.6 by @dependabot[bot] in #8682
  • docs: Improve explanation section by @fsbraun in #8637
  • build(deps): bump starlette from 1.2.1 to 1.3.1 in /docs by @dependabot[bot] in #8681
  • build(deps): bump actions/checkout from 6 to 7 by @dependabot[bot] in #8688
  • chore: Remove CMS_CONFIRM_VERSION4 setting for CMS 5.1 by @fsbraun in #8686
  • feat: Allow wildcards (*, ?, []) for plugin restrictions, and "auto" child_classes detection by @fsbraun in #8675
  • chore: Fix signatures for clarity by @fsbraun in #8683
  • fix: Language selector triggered wrong toolbar by @fsbraun in #8687
  • feat: Allow toolbar ajax items to return a data bridge structure by @fsbraun in #8694
  • fix: cascade delete plugins of detached placeholders by @hey-granth in #8622
  • fix: Missing authorization in render_object_structure disclosed non-PageContent placeholder structure by @fsbraun in #8692
  • build(deps): bump actions/cache from 5 to 6 by @dependabot[bot] in #8705
  • chore: Update test and compatibility setup for django >= 5.2 by @fsbraun in #8708
  • fix: Page title leaked unescaped into rendering error message, clipboard could be cleared by get request by @fsbraun in #8699
  • fix: Subpage wizard failed by @fsbraun in #8698
  • fix: get_preview_url failed on frontend-editable objects without language attribute by @fsbraun in #8691
  • fix: Replace left-over inline JS/CSS that might be blocked by CSP by @fsbraun in #8690
  • feat: Add extra key to get/set_page_url_cache by @jrief in #8696
  • feat: Clearer page permissions admin by @fsbraun in #8672
  • fix: Additional permissions in advance page change form were invisible by @fsbraun in #8685
  • fix: Harden page duplication, group permissions and URL validator by @fsbraun in #8704
  • fix: GrouperAdmin only showed current content versions by @fsbraun in #8700
  • feat: json config for djangocms command by @fsbraun in #8717
  • fix: check and delete-orphaned-plugins had an n+1 issue by @fsbraun in #8701
  • fix: Page tree had a n+1 regression fetching urls by @fsbraun in #8716
  • feat: Add allowed_slots property to plugins by @fsbraun in #8709
  • feat: Support django 6.1+ breadcrumb styles by @fsbraun in #8689
  • chore: Prepare release 5.1 by @fsbraun in #8719
  • feat: Add list_editable support to GrouperAdmin by @fsbraun in #8722
  • fix: Placeholder operation signals lacked plugin ordering context by @fsbraun in #8723

New Contributors

Full Changelog: 5.0.0...5.1.0

Don't miss a new django-cms release

NewReleases is sending notifications on new releases.