diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 53059fb8..daa85cf1 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -776,6 +776,14 @@ class TimePeriodExceptionDeleteView(ManagedDeskSubobjectMixin, DeleteView): template_name = 'chrono/manager_confirm_delete.html' model = TimePeriodException + def get_success_url(self): + referer = self.request.META.get('HTTP_REFERER') + success_url = reverse('chrono-manager-time-period-exception-list', kwargs={'pk': self.desk.agenda_id}) + if success_url in referer: + return success_url + + return super(TimePeriodExceptionDeleteView, self).get_success_url() + time_period_exception_delete = TimePeriodExceptionDeleteView.as_view() diff --git a/tests/test_manager.py b/tests/test_manager.py index e0333f6f..9f04ea6b 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -1025,8 +1025,22 @@ def test_meetings_agenda_delete_time_period_exception(app, admin_user): assert localtime(time_period_exception.end_datetime).strftime(dt_format) == tomorrow.replace(hour=16).strftime(dt_format) resp = resp.click(href='/manage/time-period-exceptions/%d/edit' % time_period_exception.id) resp = resp.click('Delete') - resp = resp.form.submit() + resp = resp.form.submit().follow() assert TimePeriodException.objects.count() == 0 + assert resp.request.url.endswith('/manage/agendas/%d/settings' % agenda.pk) + + # stay on exception list + time_period_exception = TimePeriodException.objects.create( + label='Future Exception', + desk=desk, + start_datetime=now() + datetime.timedelta(days=1), + end_datetime=now() + datetime.timedelta(days=2)) + resp = app.get('/manage/time-period-exceptions/%d/exception-list' % desk.pk) + resp = resp.click(href='/manage/time-period-exceptions/%d/delete' % time_period_exception.pk) + resp = resp.form.submit( + extra_environ={'HTTP_REFERER': str('/manage/time-period-exceptions/%d/exception-list' % desk.pk)} + ).follow() + assert resp.request.url.endswith('/manage/time-period-exceptions/%d/exception-list' % desk.pk) def test_exception_list(app, admin_user):