From 0365d4a2cb9fa2709623f6845dd30d63fce2c1c3 Mon Sep 17 00:00:00 2001 From: Ryan Westfall Date: Tue, 14 Jul 2026 07:13:24 -0500 Subject: [PATCH] Upgrade Django from 5.2 to 6.0 (#20). Align Model.save with keyword-only Django 6 API, fix recaptcha score widget usage, and make Payments.date use a callable default. --- pyproject.toml | 2 +- schasite/forms.py | 6 +----- .../migrations/0012_alter_payments_date.py | 19 +++++++++++++++++++ schasite/models.py | 6 +++--- uv.lock | 8 ++++---- 5 files changed, 28 insertions(+), 13 deletions(-) create mode 100644 schasite/migrations/0012_alter_payments_date.py diff --git a/pyproject.toml b/pyproject.toml index aeb876d..85f8cec 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,7 +5,7 @@ description = "Django site for SCHA Wheaton" readme = "README.md" requires-python = ">=3.12" dependencies = [ - "django>=5.2,<6", + "django>=6.0,<7", "django-phonenumber-field>=8.1.0", "django-recaptcha>=4.1.0", "gunicorn>=23.0.0", diff --git a/schasite/forms.py b/schasite/forms.py index 2c68303..b447d95 100644 --- a/schasite/forms.py +++ b/schasite/forms.py @@ -19,11 +19,7 @@ class CaptchaForm(forms.Form): captcha = ReCaptchaField( public_key=settings.RECAPTCHA_PUBLIC_KEY, private_key=settings.RECAPTCHA_PRIVATE_KEY, - widget=ReCaptchaV3( - attrs={ - 'required_score':0.85, - } - ), + widget=ReCaptchaV3(required_score=0.85), ) diff --git a/schasite/migrations/0012_alter_payments_date.py b/schasite/migrations/0012_alter_payments_date.py new file mode 100644 index 0000000..9acbb0f --- /dev/null +++ b/schasite/migrations/0012_alter_payments_date.py @@ -0,0 +1,19 @@ +# Generated by Django 6.0.7 on 2026-07-14 12:13 + +import django.utils.timezone +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('schasite', '0011_alter_payments_date_communitymember_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='payments', + name='date', + field=models.DateField(default=django.utils.timezone.now), + ), + ] diff --git a/schasite/models.py b/schasite/models.py index b3ffce1..8f10bdd 100644 --- a/schasite/models.py +++ b/schasite/models.py @@ -12,13 +12,13 @@ class TimeInfoBase(models.Model): class Meta: abstract = True - def save(self, *args, **kwargs): + def save(self, **kwargs): if not kwargs.pop("skip_last_modified", False) and not hasattr(self, "skip_last_modified"): self.last_modified = timezone.now() if kwargs.get("update_fields") is not None: kwargs["update_fields"] = list({*kwargs["update_fields"], "last_modified"}) - super().save(*args, **kwargs) + super().save(**kwargs) # Create your models here. class UsefulLinks(TimeInfoBase): @@ -148,7 +148,7 @@ class MembershipServices(TimeInfoBase): class Payments(TimeInfoBase): - date = models.DateField(default=timezone.now()) + date = models.DateField(default=timezone.now) status = models.CharField(default="Completed", max_length=256) email = models.EmailField(blank=True, null=True) person = models.ForeignKey( diff --git a/uv.lock b/uv.lock index f05ee97..c70961a 100644 --- a/uv.lock +++ b/uv.lock @@ -101,16 +101,16 @@ wheels = [ [[package]] name = "django" -version = "5.2.16" +version = "6.0.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "asgiref" }, { name = "sqlparse" }, { name = "tzdata", marker = "sys_platform == 'win32'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a9/26/889449d521ae508b26de715954faecd8bcf3f740affb81b2d146a83b42a5/django-5.2.16.tar.gz", hash = "sha256:59ea02020c3136fce14bef0bbece21a10a4febef5eed1c51c22ae468efa22200", size = 10890894, upload-time = "2026-07-07T13:52:17.005Z" } +sdist = { url = "https://files.pythonhosted.org/packages/89/55/664f24ff81c9ea19cb7dfc851afeae1f3c2390c7aee01d4ded68b5c1580d/django-6.0.7.tar.gz", hash = "sha256:2998503fc083124fb58037084bfa00de323c7c743f05f1b4284e77bff0ab8890", size = 10921299, upload-time = "2026-07-07T13:51:26.485Z" } wheels = [ - { url = "https://files.pythonhosted.org/packages/4e/13/1e5e3e4c15dcecb04281b3cb2a46a4670e1cef131068e202f6040df19224/django-5.2.16-py3-none-any.whl", hash = "sha256:04f354bf9d807a86ad1a8392fe3808d362358a8eafc322848e0e43e59b24371d", size = 8311943, upload-time = "2026-07-07T13:52:11.223Z" }, + { url = "https://files.pythonhosted.org/packages/ba/ec/1ce5334b6a2c52ce619c23a0be8d366a57a0e080ebb2d88266e5c849157c/django-6.0.7-py3-none-any.whl", hash = "sha256:a037427c2288443a8c02a1b02295a31c239663aa682bc50b1976afb7cf6a769e", size = 8373344, upload-time = "2026-07-07T13:51:20.007Z" }, ] [[package]] @@ -366,7 +366,7 @@ dev = [ [package.metadata] requires-dist = [ - { name = "django", specifier = ">=5.2,<6" }, + { name = "django", specifier = ">=6.0,<7" }, { name = "django-phonenumber-field", specifier = ">=8.1.0" }, { name = "django-recaptcha", specifier = ">=4.1.0" }, { name = "gunicorn", specifier = ">=23.0.0" },