misc: don't cascade group deletion to agendas (#28710)

This commit is contained in:
Frédéric Péters 2018-12-06 13:52:35 +01:00
parent fcc9a33b96
commit 8025ded392
3 changed files with 43 additions and 2 deletions

View File

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

View File

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

View File

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