diff --git a/chrono/apps/snapshot/migrations/0002_snapshot_models.py b/chrono/apps/snapshot/migrations/0002_snapshot_models.py index c838f567..b088246d 100644 --- a/chrono/apps/snapshot/migrations/0002_snapshot_models.py +++ b/chrono/apps/snapshot/migrations/0002_snapshot_models.py @@ -38,7 +38,7 @@ class Migration(migrations.Migration): ( 'user', models.ForeignKey( - null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL + null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL ), ), ], @@ -72,7 +72,7 @@ class Migration(migrations.Migration): ( 'user', models.ForeignKey( - null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL + null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL ), ), ], @@ -106,7 +106,7 @@ class Migration(migrations.Migration): ( 'user', models.ForeignKey( - null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL + null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL ), ), ], @@ -140,7 +140,7 @@ class Migration(migrations.Migration): ( 'user', models.ForeignKey( - null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL + null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL ), ), ], @@ -174,7 +174,7 @@ class Migration(migrations.Migration): ( 'user', models.ForeignKey( - null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL + null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL ), ), ], diff --git a/chrono/apps/snapshot/models.py b/chrono/apps/snapshot/models.py index 6f78b811..af94ffd6 100644 --- a/chrono/apps/snapshot/models.py +++ b/chrono/apps/snapshot/models.py @@ -45,7 +45,7 @@ class WithSnapshotMixin: class AbstractSnapshot(models.Model): timestamp = models.DateTimeField(auto_now_add=True) - user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True) + user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True) comment = models.TextField(blank=True, null=True) serialization = models.JSONField(blank=True, default=dict) label = models.CharField(_('Label'), max_length=150, blank=True) diff --git a/tests/manager/test_snapshot.py b/tests/manager/test_snapshot.py index 2d96ad69..b56c48ea 100644 --- a/tests/manager/test_snapshot.py +++ b/tests/manager/test_snapshot.py @@ -95,6 +95,11 @@ def test_agenda_history(settings, app, admin_user): assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp + assert AgendaSnapshot.objects.update(user=admin_user) + admin_user.delete() + assert AgendaSnapshot.objects.count() == 2 + assert AgendaSnapshot.objects.filter(user__isnull=True).count() == 2 + def test_agenda_history_as_manager(app, manager_user): agenda = Agenda.objects.create(slug='foo', label='Foo') @@ -195,6 +200,11 @@ def test_category_history(settings, app, admin_user): assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp + assert CategorySnapshot.objects.update(user=admin_user) + admin_user.delete() + assert CategorySnapshot.objects.count() == 2 + assert CategorySnapshot.objects.filter(user__isnull=True).count() == 2 + def test_events_type_history(settings, app, admin_user): events_type = EventsType.objects.create(slug='foo', label='Foo') @@ -273,6 +283,11 @@ def test_events_type_history(settings, app, admin_user): assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp + assert EventsTypeSnapshot.objects.update(user=admin_user) + admin_user.delete() + assert EventsTypeSnapshot.objects.count() == 2 + assert EventsTypeSnapshot.objects.filter(user__isnull=True).count() == 2 + def test_resource_history(settings, app, admin_user): resource = Resource.objects.create(slug='foo', label='Foo') @@ -347,6 +362,11 @@ def test_resource_history(settings, app, admin_user): assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp + assert ResourceSnapshot.objects.update(user=admin_user) + admin_user.delete() + assert ResourceSnapshot.objects.count() == 2 + assert ResourceSnapshot.objects.filter(user__isnull=True).count() == 2 + def test_unavailability_calendar_history(settings, app, admin_user): unavailability_calendar = UnavailabilityCalendar.objects.create(slug='foo', label='Foo') @@ -425,6 +445,11 @@ def test_unavailability_calendar_history(settings, app, admin_user): assert 'Snapshot (%s) - (Version 41.0)' % snapshot1.pk in resp assert 'Snapshot (%s) - (Version 42.0)' % snapshot2.pk in resp + assert UnavailabilityCalendarSnapshot.objects.update(user=admin_user) + admin_user.delete() + assert UnavailabilityCalendarSnapshot.objects.count() == 2 + assert UnavailabilityCalendarSnapshot.objects.filter(user__isnull=True).count() == 2 + def test_unavailability_calendar_history_as_manager(app, manager_user): unavailability_calendar = UnavailabilityCalendar.objects.create(slug='foo', label='Foo')