From bffacf7808c68259172e22910b13199fecabba90 Mon Sep 17 00:00:00 2001 From: Christian Merten Date: Sat, 22 Feb 2025 23:17:02 +0100 Subject: [PATCH] fix(members/models): replace `auto_now=True` by `default=timezone.now` --- ...roup_date_alter_member_created_and_more.py | 34 +++++++++++++++++++ jdav_web/members/models.py | 10 +++--- jdav_web/members/tests.py | 1 - 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 jdav_web/members/migrations/0038_alter_invitationtogroup_date_alter_member_created_and_more.py diff --git a/jdav_web/members/migrations/0038_alter_invitationtogroup_date_alter_member_created_and_more.py b/jdav_web/members/migrations/0038_alter_invitationtogroup_date_alter_member_created_and_more.py new file mode 100644 index 0000000..01fabb9 --- /dev/null +++ b/jdav_web/members/migrations/0038_alter_invitationtogroup_date_alter_member_created_and_more.py @@ -0,0 +1,34 @@ +# Generated by Django 4.0.1 on 2025-02-22 21:59 + +from django.db import migrations, models +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('members', '0037_memberwaitinglist_leave_key'), + ] + + operations = [ + migrations.AlterField( + model_name='invitationtogroup', + name='date', + field=models.DateField(default=django.utils.timezone.now, verbose_name='Invitation date'), + ), + migrations.AlterField( + model_name='member', + name='created', + field=models.DateField(default=django.utils.timezone.now, verbose_name='created'), + ), + migrations.AlterField( + model_name='memberwaitinglist', + name='last_reminder', + field=models.DateTimeField(default=django.utils.timezone.now, verbose_name='Last reminder'), + ), + migrations.AlterField( + model_name='memberwaitinglist', + name='last_wait_confirmation', + field=models.DateField(default=django.utils.timezone.now, verbose_name='Last wait confirmation'), + ), + ] diff --git a/jdav_web/members/models.py b/jdav_web/members/models.py index b81e583..ba9e5fd 100644 --- a/jdav_web/members/models.py +++ b/jdav_web/members/models.py @@ -312,7 +312,7 @@ class Member(Person): default=True) unsubscribe_key = models.CharField(max_length=32, default="") unsubscribe_expire = models.DateTimeField(default=timezone.now) - created = models.DateField(auto_now=True, verbose_name=_('created')) + created = models.DateField(default=timezone.now, verbose_name=_('created')) active = models.BooleanField(default=True, verbose_name=_('Active')) registration_form = RestrictedFileField(verbose_name=_('registration form'), upload_to='registration_forms', @@ -858,7 +858,7 @@ class InvitationToGroup(models.Model): """An invitation of a waiter to a group.""" waiter = models.ForeignKey('MemberWaitingList', verbose_name=_('Waiter'), on_delete=models.CASCADE) group = models.ForeignKey(Group, verbose_name=_('Group'), on_delete=models.CASCADE) - date = models.DateField(auto_now=True, verbose_name=_('Invitation date')) + date = models.DateField(default=timezone.now, verbose_name=_('Invitation date')) rejected = models.BooleanField(verbose_name=_('Invitation rejected'), default=False) key = models.CharField(max_length=32, default=gen_key) @@ -890,13 +890,13 @@ class MemberWaitingList(Person): application_text = models.TextField(_('Do you want to tell us something else?'), default='', blank=True) application_date = models.DateTimeField(verbose_name=_('application date'), default=timezone.now) - last_wait_confirmation = models.DateField(auto_now=True, verbose_name=_('Last wait confirmation')) + last_wait_confirmation = models.DateField(default=timezone.now, verbose_name=_('Last wait confirmation')) wait_confirmation_key = models.CharField(max_length=32, default="") wait_confirmation_key_expire = models.DateTimeField(default=timezone.now) leave_key = models.CharField(max_length=32, default="") - last_reminder = models.DateTimeField(auto_now=True, verbose_name=_('Last reminder')) + last_reminder = models.DateTimeField(default=timezone.now, verbose_name=_('Last reminder')) sent_reminders = models.IntegerField(default=0, verbose_name=_('Missed reminders')) registration_key = models.CharField(max_length=32, default="") @@ -940,7 +940,7 @@ class MemberWaitingList(Person): def ask_for_wait_confirmation(self): """Sends an email to the person asking them to confirm their intention to wait.""" - self.last_reminder = datetime.now() + self.last_reminder = timezone.now() self.sent_reminders += 1 self.leave_key = gen_key() self.save() diff --git a/jdav_web/members/tests.py b/jdav_web/members/tests.py index c73a5ef..4484518 100644 --- a/jdav_web/members/tests.py +++ b/jdav_web/members/tests.py @@ -1473,7 +1473,6 @@ class ConfirmWaitingViewTestCase(BasicMemberTestCase): waiter = MemberWaitingList.objects.get(pk=self.waiter.pk) self.assertEqual(waiter.leave_key, '') - @skip("This currently fails, because `last_wait_confirmation` has `auto_now=True`, which is wrong.") def test_get_expired(self): self.waiter.last_wait_confirmation = datetime.date(1900, 1, 1) self.waiter.save()