From b3f4ad597cb6a47cc7223ae3227d4e5ab2095e13 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Wed, 1 Jul 2020 11:51:50 +0200 Subject: [PATCH] manager: allow reusing meeting type slug after deletion (#44512) --- chrono/manager/views.py | 2 ++ tests/test_manager.py | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 15cea5a..e89d7eb 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -18,6 +18,7 @@ import datetime import itertools import json import math +import uuid from django.contrib import messages from django.core.exceptions import PermissionDenied @@ -1371,6 +1372,7 @@ class MeetingTypeDeleteView(ManagedAgendaSubobjectMixin, DeleteView): # to mark for deletion instead of actually delete success_url = self.get_success_url() self.object.deleted = True + self.object.slug += '#' + str(uuid.uuid4())[8:] self.object.save() return HttpResponseRedirect(success_url) diff --git a/tests/test_manager.py b/tests/test_manager.py index cdae53f..51d1322 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -1439,6 +1439,7 @@ def test_meetings_agenda_delete_meeting_type(app, admin_user): assert resp.location.endswith('/manage/agendas/%s/settings' % agenda.id) meeting_type.refresh_from_db() assert meeting_type.deleted is True + assert meeting_type.slug != 'blah' # meeting type not showing up anymore resp = app.get('/manage/', status=200) @@ -1446,6 +1447,10 @@ def test_meetings_agenda_delete_meeting_type(app, admin_user): resp = resp.click('Settings') assert 'Meeting Type Foo' not in resp.text + # it is possible to add a new meeting type with the same slug + new_meeting_type = MeetingType.objects.create(agenda=agenda, label='Blah') + assert new_meeting_type.slug == 'blah' + def test_meetings_agenda_add_time_period(app, admin_user): agenda = Agenda.objects.create(label=u'Foo bar', kind='meetings') -- 2.20.1