From 8025ded3929212f047890312005062d2ff6d848c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Thu, 6 Dec 2018 13:52:35 +0100 Subject: [PATCH] misc: don't cascade group deletion to agendas (#28710) --- .../migrations/0025_auto_20181206_1252.py | 26 +++++++++++++++++++ chrono/agendas/models.py | 6 +++-- tests/test_agendas.py | 13 ++++++++++ 3 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 chrono/agendas/migrations/0025_auto_20181206_1252.py diff --git a/chrono/agendas/migrations/0025_auto_20181206_1252.py b/chrono/agendas/migrations/0025_auto_20181206_1252.py new file mode 100644 index 0000000..637f697 --- /dev/null +++ b/chrono/agendas/migrations/0025_auto_20181206_1252.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.12 on 2018-12-06 12:52 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('agendas', '0024_auto_20180426_1127'), + ] + + operations = [ + migrations.AlterField( + model_name='agenda', + name='edit_role', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='auth.Group', verbose_name='Edit Role'), + ), + migrations.AlterField( + model_name='agenda', + name='view_role', + field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='auth.Group', verbose_name='View Role'), + ), + ] diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py index 7540d21..92cde04 100644 --- a/chrono/agendas/models.py +++ b/chrono/agendas/models.py @@ -66,9 +66,11 @@ class Agenda(models.Model): maximal_booking_delay = models.PositiveIntegerField( _('Maximal booking delay (in days)'), default=56) # eight weeks edit_role = models.ForeignKey(Group, blank=True, null=True, default=None, - related_name='+', verbose_name=_('Edit Role')) + related_name='+', verbose_name=_('Edit Role'), + on_delete=models.SET_NULL) view_role = models.ForeignKey(Group, blank=True, null=True, default=None, - related_name='+', verbose_name=_('View Role')) + related_name='+', verbose_name=_('View Role'), + on_delete=models.SET_NULL) class Meta: ordering = ['label'] diff --git a/tests/test_agendas.py b/tests/test_agendas.py index c0bef22..d2d053d 100644 --- a/tests/test_agendas.py +++ b/tests/test_agendas.py @@ -6,6 +6,7 @@ import requests from django.utils.timezone import now, make_aware, localtime +from django.contrib.auth.models import Group from django.core.management import call_command from django.core.management.base import CommandError @@ -454,3 +455,15 @@ def test_timeperiodexception_creation_from_ics_with_recurrences_atreal(): desk = Desk(label='Test atreal desk', agenda=agenda) desk.save() assert desk.create_timeperiod_exceptions_from_ics(ICS_ATREAL) + + +def test_management_role_deletion(): + group = Group(name=u'Group') + group.save() + agenda = Agenda(label=u'Test agenda', edit_role=group, view_role=group) + agenda.save() + + Group.objects.all().delete() + + Agenda.objects.get(id=agenda.id).view_role is None + Agenda.objects.get(id=agenda.id).edit_role is None -- 2.20.0.rc2