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 00000000..637f6973 --- /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 7540d21f..92cde042 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 c0bef223..d2d053d8 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