snapshot: do not delete snapshots on user deletion (#88623)
gitea/chrono/pipeline/head This commit looks good Details

This commit is contained in:
Lauréline Guérin 2024-03-26 13:32:51 +01:00
parent be975cfa29
commit 4b8c3412e4
No known key found for this signature in database
GPG Key ID: 1FAB9B9B4F93D473
3 changed files with 31 additions and 6 deletions

View File

@ -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
),
),
],

View File

@ -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)

View File

@ -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')