Skip to content

Commit

Permalink
Add Django 5 and Wagtail 5 support (#29)
Browse files Browse the repository at this point in the history
* Run django-upgrade for 3.2
* Allow Django 5 and Wagtail 5
* Update tox test matrix
* Update GH actions for new versions
* Fix wagtail.core import
* Update classifiers
* Lint
* Remove Django 4.1, Wagtail 4.1
* Relax Wagtail upper bound
* Update pre-commit hooks
  • Loading branch information
jhonatan-lopes authored Jan 17, 2024
1 parent 7394651 commit 78dba17
Show file tree
Hide file tree
Showing 20 changed files with 60 additions and 76 deletions.
34 changes: 20 additions & 14 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,29 +12,35 @@ concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true


env:
FORCE_COLOR: '1' # Make tools pretty.
TOX_TESTENV_PASSENV: FORCE_COLOR
PIP_DISABLE_PIP_VERSION_CHECK: '1'
PIP_NO_PYTHON_VERSION_WARNING: '1'
PYTHON_LATEST: '3.11'


jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python 3.8
uses: actions/setup-python@v4
- uses: actions/setup-python@v4
with:
python-version: '3.8'
- uses: pre-commit/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
python-version: ${{ env.PYTHON_LATEST }}
- uses: pre-commit/[email protected]

test-sqlite:
runs-on: ubuntu-latest
needs: lint
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
Expand All @@ -54,23 +60,23 @@ jobs:
needs: lint
strategy:
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

services:
postgres:
image: postgres:11
image: postgres:15
env:
POSTGRES_PASSWORD: postgres
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python }}
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
Expand Down
14 changes: 7 additions & 7 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
default_language_version:
python: python3.8
python: python3.11
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.3.0
rev: v4.5.0
hooks:
- id: check-added-large-files
- id: check-case-conflict
Expand All @@ -15,25 +15,25 @@ repos:
- id: end-of-file-fixer
- id: trailing-whitespace
- repo: https://github.com/psf/black
rev: 22.8.0
rev: 23.12.1
hooks:
- id: black
args: ['--target-version', 'py38']
- repo: https://github.com/pycqa/isort
# isort config is in setup.cfg
rev: 5.10.1
rev: 5.13.2
hooks:
- id: isort
- repo: https://github.com/pycqa/flake8
# flake8 config is in setup.cfg
rev: 5.0.4
rev: 7.0.0
hooks:
- id: flake8
additional_dependencies:
- flake8-bugbear
- flake8-comprehensions
- repo: https://github.com/asottile/blacken-docs
rev: v1.12.1
rev: 1.16.0
hooks:
- id: blacken-docs
additional_dependencies: [black==22.8.0]
additional_dependencies: [black==23.12.1]
16 changes: 7 additions & 9 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,23 +41,21 @@
"Operating System :: OS Independent",
"Programming Language :: Python",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Framework :: Django",
"Framework :: Django :: 2.2",
"Framework :: Django :: 3.0",
"Framework :: Django :: 3.1",
"Framework :: Django :: 3.2",
"Framework :: Django :: 4.2",
"Framework :: Django :: 5.0",
"Framework :: Wagtail",
"Framework :: Wagtail :: 2",
"Framework :: Wagtail :: 3",
"Framework :: Wagtail :: 4",
"Framework :: Wagtail :: 5",
],
install_requires=[
"Django>=3.2,<4.2",
"Wagtail>=2.15,<5.0",
"Django>=3.2,<5.1",
"Wagtail>=5.2",
"wagtail-localize>=1.0",
"pygit2>=1.0,<2.0",
"gitpython>=3.0,<4.0",
Expand Down
2 changes: 1 addition & 1 deletion testmanage.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def runtests():
try:
execute_from_command_line(argv)
finally:
from wagtail.tests.settings import MEDIA_ROOT, STATIC_ROOT
from wagtail.test.settings import MEDIA_ROOT, STATIC_ROOT

shutil.rmtree(STATIC_ROOT, ignore_errors=True)
shutil.rmtree(MEDIA_ROOT, ignore_errors=True)
Expand Down
18 changes: 8 additions & 10 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ requires = tox >= 3.23.0, < 4.0

# note: use py and non-dotted python version as we use tox-py
envlist =
py{37,38,39,310}-django{3.2}-wagtail{2.15,3,4}
py{38,39,310}-django{4.0}-wagtail{3,4}
py{38,39,310}-django{4.1}-wagtail{4,main}
python{3.8,3.9,3.10}-django{3.2}-wagtail{5.2}
python{3.8,3.9,3.10,3.11,3.12}-django{4.2}-wagtail{5.2}
python{3.10,3.11,3.12}-django{5.0}-wagtail{5.2}

[flake8]
# E501: Line too long
Expand All @@ -25,25 +25,23 @@ deps =
coverage

django3.2: Django>=3.2,<3.3
django4.0: Django>=4.0,<4.1
django4.1: Django>=4.1,<4.2
django4.2: Django>=4.2,<4.3
django5.0: Django>=5.0,<5.1
djmain: git+https://github.com/django/django.git@main#egg=Django

wagtail2.15: wagtail>=2.15,<2.16
wagtail3: wagtail>=3.0,<4.0
wagtail4: wagtail>=4.0,<5.0
wagtail5.2: wagtail>=5.2,<5.3
wagtailmain: git+https://github.com/wagtail/wagtail.git

postgres: psycopg2>=2.6

[testenv:flake8]
basepython=python3.7
basepython=python3.11
deps=flake8>=2.2.0
commands=flake8 wagtail_localize_git


[testenv:interactive]
basepython = python3.9
basepython = python3.11

commands_pre =
python {toxinidir}/testmanage.py makemigrations
Expand Down
3 changes: 0 additions & 3 deletions wagtail_localize_git/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
default_app_config = "wagtail_localize_git.apps.WagtailLocalizeGitAppConfig"


VERSION = (0, 13, 0)
__version__ = ".".join(map(str, VERSION))
1 change: 0 additions & 1 deletion wagtail_localize_git/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@


class Migration(migrations.Migration):

initial = True

dependencies = [
Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/models.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from django.db import models
from django.utils.text import slugify
from wagtail.core.models import Locale, Page
from wagtail.documents.models import AbstractDocument
from wagtail.images.models import AbstractImage
from wagtail.models import Locale, Page
from wagtail.snippets.models import get_snippet_models

from wagtail_localize.models import TranslatableObject
Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from django.conf import settings
from django.db import transaction
from django.utils.module_loading import import_string
from wagtail.core.models import Locale
from wagtail.models import Locale

from wagtail_localize.models import Translation

Expand Down
1 change: 0 additions & 1 deletion wagtail_localize_git/test/__init__.py
Original file line number Diff line number Diff line change
@@ -1 +0,0 @@
default_app_config = "wagtail_localize_git.test.apps.WagtailLocalizeGitTestAppConfig"
7 changes: 1 addition & 6 deletions wagtail_localize_git/test/migrations/0001_initial.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,10 @@
from django.db import migrations, models
import django.db.models.deletion
import uuid

try:
import wagtail.fields as wagtail_fields
except ImportError:
import wagtail.core.fields as wagtail_fields
import wagtail.fields as wagtail_fields


class Migration(migrations.Migration):

initial = True

dependencies = [
Expand Down
13 changes: 3 additions & 10 deletions wagtail_localize_git/test/models.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,14 @@
from django.db import models
from django.utils.translation import gettext_lazy
from modelcluster.models import ClusterableModel
from wagtail.admin.panels import FieldPanel
from wagtail.fields import RichTextField
from wagtail.models import Page, TranslatableMixin
from wagtail.snippets.models import register_snippet

from wagtail_localize.fields import SynchronizedField, TranslatableField


try:
from wagtail.admin.panels import FieldPanel
from wagtail.fields import RichTextField
from wagtail.models import Page, TranslatableMixin
except ImportError:
from wagtail.admin.edit_handlers import FieldPanel
from wagtail.core.fields import RichTextField
from wagtail.core.models import Page, TranslatableMixin


class TestPage(Page):
test_charfield = models.CharField(
gettext_lazy("char field"), max_length=255, blank=True, null=True, default=""
Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/test/settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
"wagtail.contrib.routable_page",
"wagtail.contrib.styleguide",
"wagtail.sites",
"wagtail.core",
"wagtail",
"taggit",
"rest_framework",
"django.contrib.admin",
Expand Down
5 changes: 2 additions & 3 deletions wagtail_localize_git/test/urls.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
from django.conf.urls import include
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.urls import path
from django.urls import include, path
from wagtail import urls as wagtail_urls
from wagtail.admin import urls as wagtailadmin_urls
from wagtail.core import urls as wagtail_urls
from wagtail.documents import urls as wagtaildocs_urls


Expand Down
4 changes: 2 additions & 2 deletions wagtail_localize_git/tests/test_git.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

from django.test import TestCase, override_settings
from git import PushInfo
from wagtail.core.models import Locale
from wagtail.models import Locale

from wagtail_localize_git.git import (
DEFAULT_BRANCH,
Expand Down Expand Up @@ -256,7 +256,7 @@ def test_read_nonexistent_file(self):
reader = self.repo.reader()

with self.assertRaises(KeyError) as e:
reader.read_file("foo.txt"),
reader.read_file("foo.txt")

self.assertEqual(e.exception.args, ("foo.txt",))

Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/tests/test_importer.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from django.core.exceptions import ValidationError
from django.test import TestCase
from django.utils import timezone
from wagtail.core.models import Locale, Page
from wagtail.models import Locale, Page

from wagtail_localize.models import (
MissingRelatedObjectError,
Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/tests/test_models.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from django.test import TestCase
from wagtail.core.models import Page, Site
from wagtail.documents.models import Document
from wagtail.images.models import Image
from wagtail.images.tests.utils import get_test_image_file
from wagtail.models import Page, Site

from wagtail_localize.models import TranslationSource
from wagtail_localize_git.models import Resource
Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/tests/test_sync.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import pygit2

from django.test import TestCase, override_settings
from wagtail.core.models import Locale, Page
from wagtail.models import Locale, Page

from wagtail_localize.models import StringTranslation, Translation, TranslationSource
from wagtail_localize_git.models import Resource, SyncLog
Expand Down
4 changes: 2 additions & 2 deletions wagtail_localize_git/tests/test_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
from django.contrib.auth.models import Group
from django.test import TestCase
from django.urls import reverse
from wagtail.core.models import Locale, Page
from wagtail.tests.utils import WagtailTestUtils
from wagtail.models import Locale, Page
from wagtail.test.utils import WagtailTestUtils

from wagtail_localize.models import Translation, TranslationSource
from wagtail_localize_git.models import Resource, SyncLog, SyncLogResource
Expand Down
2 changes: 1 addition & 1 deletion wagtail_localize_git/wagtail_hooks.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from django.urls import include, path, reverse
from django.utils.translation import gettext_lazy as _
from django.views.i18n import JavaScriptCatalog
from wagtail import hooks
from wagtail.admin.menu import MenuItem
from wagtail.core import hooks

from . import views

Expand Down

0 comments on commit 78dba17

Please sign in to comment.