diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 46300d35c2..dcae2c5065 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -19,16 +19,16 @@ on: # Current configuration: # - django 3.2, python 3.7, postgres # - django 3.2, python 3.8, mysql -# - django 3.2, python 3.9, sqlite -# - django 4.0, python 3.9, mysql (allow failures) -# - django 3.2, python 3.10, postgres, USE_EMAIL_USER_MODEL=yes -# - django 3.2, python 3.10, postgres, DISABLE_TIMEZONE=yes +# - django 4.0, python 3.9, sqlite +# - django 4.0, python 3.9, mysql +# - django 4.0, python 3.10, postgres, USE_EMAIL_USER_MODEL=yes +# - django 4.0, python 3.10, postgres, DISABLE_TIMEZONE=yes # - django stable/4.0.x, python 3.10, postgres (allow failures) # - django main, python 3.10, postgres (allow failures) # - elasticsearch 5, django 3.2, python 3.7, sqlite # - elasticsearch 6, django 3.2, python 3.7, postgres -# - elasticsearch 7, django 4.0, python 3.8, postgres (allow failures) -# - elasticsearch 7, django 3.2, python 3.9, sqlite, USE_EMAIL_USER_MODEL=yes +# - elasticsearch 7, django 4.0, python 3.8, postgres +# - elasticsearch 7, django 4.0, python 3.9, sqlite, USE_EMAIL_USER_MODEL=yes jobs: test-sqlite: @@ -37,7 +37,7 @@ jobs: matrix: include: - python: "3.9" - django: "Django>=3.2,<3.3" + django: "Django>=4.0,<4.1" steps: - uses: actions/checkout@v2 @@ -66,11 +66,11 @@ jobs: django: "Django>=3.2,<3.3" experimental: false - python: "3.10" - django: "Django>=3.2,<3.3" + django: "Django>=4.0,<4.1" notz: notz experimental: false - python: "3.10" - django: "Django>=3.2,<3.3" + django: "Django>=4.0,<4.1" experimental: false emailuser: emailuser - python: "3.10" @@ -121,7 +121,7 @@ jobs: experimental: false - python: "3.9" django: "Django>=4.0,<4.1" - experimental: true + experimental: false services: mysql: @@ -201,7 +201,7 @@ jobs: matrix: include: - python: "3.9" - django: "Django>=3.2,<3.3" + django: "Django>=4.0,<4.1" emailuser: emailuser steps: - name: Configure sysctl limits @@ -295,7 +295,7 @@ jobs: include: - python: "3.8" django: "Django>=4.0,<4.1" - experimental: true + experimental: false services: postgres: diff --git a/CHANGELOG.txt b/CHANGELOG.txt index ed0c51f23f..8cc85ce039 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -4,6 +4,7 @@ Changelog 2.16 (xx.xx.xxxx) - IN DEVELOPMENT ~~~~~~~~~~~~~~~~~ + * Added support for Django 4.0 * Removed support for Django 3.0 and 3.1 * Removed support for Python 3.6 * Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidjani Dia, with sponsorship from [NHS](https://www.nhs.uk/)) diff --git a/README.md b/README.md index 497149f82c..8531a935b3 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ _(If you are reading this on GitHub, the details here may not be indicative of t Wagtail supports: -* Django 3.2.x +* Django 3.2.x and 4.0.x * Python 3.7, 3.8, 3.9 and 3.10 * PostgreSQL, MySQL and SQLite as database backends diff --git a/docs/getting_started/integrating_into_django.md b/docs/getting_started/integrating_into_django.md index 215dc1a2fb..daea5b9fea 100644 --- a/docs/getting_started/integrating_into_django.md +++ b/docs/getting_started/integrating_into_django.md @@ -5,7 +5,7 @@ Wagtail provides the `wagtail start` command and project template to get you started with a new Wagtail project as quickly as possible, but it's easy to integrate Wagtail into an existing Django project too. -Wagtail is currently compatible with Django 3.2. First, install the `wagtail` package from PyPI: +Wagtail is currently compatible with Django 3.2 and 4.0. First, install the `wagtail` package from PyPI: ```sh $ pip install wagtail diff --git a/docs/releases/2.16.md b/docs/releases/2.16.md index 80a2bafeeb..4dd177a42f 100644 --- a/docs/releases/2.16.md +++ b/docs/releases/2.16.md @@ -8,6 +8,11 @@ ## What's new +### Django 4.0 support + +This release adds support for Django 4.0. + + ### Slim sidebar As part of a [wider redesign](https://github.com/wagtail/wagtail/discussions/7739) of Wagtail’s administration interface, we have replaced the sidebar with a slim, keyboard-friendly version. This re-implementation comes with significant accessibility improvements for keyboard and screen reader users, and will enable us to make navigation between views much snappier in the future. Please have a look at [upgrade considerations](#upgrade-considerations) for more details on differences with the previous version. @@ -24,6 +29,7 @@ WAGTAILREDIRECTS_AUTO_CREATE = False Thank you to [The National Archives](https://www.nationalarchives.gov.uk) for kindly sponsoring this feature. + ### Other features * Added persistent IDs for ListBlock items, allowing commenting and improvements to revision comparisons (Matt Westcott, Tidjani Dia, with sponsorship from [NHS](https://www.nhs.uk/)) diff --git a/docs/releases/upgrading.rst b/docs/releases/upgrading.rst index 4359e1b6b9..ba5a89eb73 100644 --- a/docs/releases/upgrading.rst +++ b/docs/releases/upgrading.rst @@ -147,5 +147,5 @@ The compatible versions of Django and Python for each Wagtail release are: +-------------------+------------------------------+-----------------------------+ | 2.15 LTS | 3.0, 3.1, 3.2 | 3.6, 3.7, 3.8, 3.9, 3.10 | +-------------------+------------------------------+-----------------------------+ -| 2.16 | 3.2 | 3.7, 3.8, 3.9, 3.10 | +| 2.16 | 3.2, 4.0 | 3.7, 3.8, 3.9, 3.10 | +-------------------+------------------------------+-----------------------------+ diff --git a/setup.py b/setup.py index 0b2b8cf284..5554f58af9 100755 --- a/setup.py +++ b/setup.py @@ -20,7 +20,7 @@ except ImportError: install_requires = [ - "Django>=3.2,<4.0", + "Django>=3.2,<4.1", "django-modelcluster>=5.2,<6.0", "django-taggit>=2.0,<3.0", "django-treebeard>=4.2.0,<5.0,!=4.5", @@ -111,6 +111,7 @@ https://github.com/wagtail/wagtail/.", 'Programming Language :: Python :: 3.10', 'Framework :: Django', 'Framework :: Django :: 3.2', + 'Framework :: Django :: 4.0', 'Framework :: Wagtail', 'Topic :: Internet :: WWW/HTTP :: Site Management', ], diff --git a/tox.ini b/tox.ini index ed0cfa141f..6e42eabed7 100644 --- a/tox.ini +++ b/tox.ini @@ -2,7 +2,7 @@ skipsdist = True usedevelop = True -envlist = py{37,38,39,310}-dj{32,40stable,main}-{sqlite,postgres,mysql,mssql}-{elasticsearch7,elasticsearch6,elasticsearch5,noelasticsearch}-{customuser,emailuser}-{tz,notz}, +envlist = py{37,38,39,310}-dj{32,40,40stable,main}-{sqlite,postgres,mysql,mssql}-{elasticsearch7,elasticsearch6,elasticsearch5,noelasticsearch}-{customuser,emailuser}-{tz,notz}, [testenv] install_command = pip install -e ".[testing]" -U {opts} {packages} @@ -23,6 +23,7 @@ deps = Embedly dj32: Django~=3.2.0 + dj40: Django~=4.0.0 dj40stable: git+https://github.com/django/django.git@stable/4.0.x#egg=Django djmain: git+https://github.com/django/django.git@main#egg=Django diff --git a/wagtail/project_template/requirements.txt b/wagtail/project_template/requirements.txt index 6951082ee6..b0ae0f8f03 100644 --- a/wagtail/project_template/requirements.txt +++ b/wagtail/project_template/requirements.txt @@ -1,2 +1,2 @@ -Django>=3.2,<3.3 +Django>=4.0,<4.1 wagtail==2.16rc1