diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py
index f6fbe6fa..2b745556 100644
--- a/chrono/agendas/models.py
+++ b/chrono/agendas/models.py
@@ -369,7 +369,7 @@ class Event(models.Model):
return self.start_datetime + datetime.timedelta(minutes=self.meeting_type.duration)
def get_absolute_url(self):
- return reverse('chrono-manager-event-edit', kwargs={'pk': self.id})
+ return reverse('chrono-manager-event-edit', kwargs={'pk': self.agenda.id, 'event_pk': self.id})
@classmethod
def import_json(cls, data):
diff --git a/chrono/manager/templates/chrono/manager_event_form.html b/chrono/manager/templates/chrono/manager_event_form.html
index 44f28cf6..c0052767 100644
--- a/chrono/manager/templates/chrono/manager_event_form.html
+++ b/chrono/manager/templates/chrono/manager_event_form.html
@@ -17,7 +17,7 @@
{% if object.id %}
{% trans "Edit Event" %}
-{% trans 'Delete' %}
+{% trans 'Delete' %}
{% else %}
{% trans "New Event" %}
diff --git a/chrono/manager/templates/chrono/manager_events_agenda_settings.html b/chrono/manager/templates/chrono/manager_events_agenda_settings.html
index 779d450e..7848d77f 100644
--- a/chrono/manager/templates/chrono/manager_events_agenda_settings.html
+++ b/chrono/manager/templates/chrono/manager_events_agenda_settings.html
@@ -22,7 +22,7 @@
{% elif event.waiting_list_places %}
data-total="{{event.waiting_list_places}}" data-booked="{{event.waiting_list}}"
{% endif %}
- >
+ >
{% if event.label %}{{event.label}} / {% endif %}
{{ event.start_datetime }}
{% if event.full %}/ {% trans "full" %}{% endif %}
@@ -41,7 +41,7 @@
({% trans "out of bookable period" %})
{% endif %}
- {% if user_can_manage %}{% trans "remove" %}{% endif %}
+ {% if user_can_manage %}{% trans "remove" %}{% endif %}
{% endfor %}
diff --git a/chrono/manager/urls.py b/chrono/manager/urls.py
index a163f0a0..8cee6b8c 100644
--- a/chrono/manager/urls.py
+++ b/chrono/manager/urls.py
@@ -43,8 +43,16 @@ urlpatterns = [
views.agenda_import_events,
name='chrono-manager-agenda-import-events',
),
- url(r'^events/(?P\d+)/$', views.event_edit, name='chrono-manager-event-edit'),
- url(r'^events/(?P\d+)/delete$', views.event_delete, name='chrono-manager-event-delete'),
+ url(
+ r'^agendas/(?P\d+)/events/(?P\d+)/edit$',
+ views.event_edit,
+ name='chrono-manager-event-edit',
+ ),
+ url(
+ r'^agendas/(?P\d+)/events/(?P\d+)/delete$',
+ views.event_delete,
+ name='chrono-manager-event-delete',
+ ),
url(
r'^agendas/(?P\d+)/add-meeting-type$',
views.agenda_add_meeting_type,
diff --git a/chrono/manager/views.py b/chrono/manager/views.py
index 030f99ee..fdf67f08 100644
--- a/chrono/manager/views.py
+++ b/chrono/manager/views.py
@@ -693,18 +693,20 @@ class AgendaImportEventsView(ManagedAgendaMixin, FormView):
agenda_import_events = AgendaImportEventsView.as_view()
-class EventEditView(ManagedAgendaSubobjectMixin, UpdateView):
+class EventEditView(ManagedAgendaMixin, UpdateView):
template_name = 'chrono/manager_event_form.html'
model = Event
form_class = EventForm
+ pk_url_kwarg = 'event_pk'
event_edit = EventEditView.as_view()
-class EventDeleteView(ManagedAgendaSubobjectMixin, DeleteView):
+class EventDeleteView(ManagedAgendaMixin, DeleteView):
template_name = 'chrono/manager_confirm_delete.html'
model = Event
+ pk_url_kwarg = 'event_pk'
def get_context_data(self, **kwargs):
context = super(EventDeleteView, self).get_context_data(**kwargs)
diff --git a/tests/test_manager.py b/tests/test_manager.py
index 271ffe11..9f65feec 100644
--- a/tests/test_manager.py
+++ b/tests/test_manager.py
@@ -358,7 +358,7 @@ def test_add_event(app, admin_user):
event = Event.objects.get(places=10)
assert event.slug is None
assert not "This agenda doesn't have any event yet." in resp.text
- assert '/manage/events/%s/' % event.id in resp.text
+ assert '/manage/agendas/%s/events/%s/' % (agenda.id, event.id) in resp.text
assert ('Feb. 15, %s, 5 p.m.' % year) in resp.text
assert '10 places' in resp.text
@@ -404,7 +404,7 @@ def test_add_event_as_manager(app, manager_user):
resp = resp.follow()
event = Event.objects.get(places=10)
assert not "This agenda doesn't have any event yet." in resp.text
- assert '/manage/events/%s/' % event.id in resp.text
+ assert '/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id) in resp.text
assert 'Feb. 15, 2016, 5 p.m.' in resp.text
assert '10 places' in resp.text
@@ -422,7 +422,7 @@ def test_edit_event(app, admin_user):
resp.form['places'] = 20
resp = resp.form.submit()
resp = resp.follow()
- assert '/manage/events/%s/' % event.id in resp.text
+ assert '/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id) in resp.text
assert 'Feb. 16, 2016, 5 p.m.' in resp.text
assert '20 places' in resp.text
@@ -439,7 +439,7 @@ def test_edit_event_as_manager(app, manager_user):
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=20, agenda=agenda)
event.save()
app = login(app, username='manager', password='manager')
- resp = app.get('/manage/events/%s/' % event.id, status=403)
+ resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id), status=403)
agenda.edit_role = manager_user.groups.all()[0]
agenda.save()
@@ -450,7 +450,7 @@ def test_edit_event_as_manager(app, manager_user):
resp.form['places'] = 20
resp = resp.form.submit()
resp = resp.follow()
- assert '/manage/events/%s/' % event.id in resp.text
+ assert '/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id) in resp.text
assert 'Feb. 16, 2016, 5 p.m.' in resp.text
assert '20 places' in resp.text
@@ -502,7 +502,7 @@ def test_delete_event(app, admin_user):
app = login(app)
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
- resp = resp.click(href=r'/manage/events/%s/$' % event.id)
+ resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
resp = resp.click('Delete')
resp = resp.form.submit()
assert resp.location.endswith('/manage/agendas/%s/settings' % agenda.id)
@@ -517,21 +517,21 @@ def test_delete_busy_event(app, admin_user):
app = login(app)
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
- resp = resp.click(href=r'/manage/events/%s/$' % event.id)
+ resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
resp = resp.click('Delete')
assert 'Are you sure you want to delete this?' in resp.text
booking = Booking(event=event)
booking.save()
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
- resp = resp.click(href=r'/manage/events/%s/$' % event.id)
+ resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
resp = resp.click('Delete')
assert 'This cannot be removed' in resp.text
booking.cancellation_datetime = now()
booking.save()
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
- resp = resp.click(href=r'/manage/events/%s/$' % event.id)
+ resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
resp = resp.click('Delete')
assert 'Are you sure you want to delete this?' in resp.text
@@ -551,7 +551,7 @@ def test_delete_event_as_manager(app, manager_user):
app = login(app, username='manager', password='manager')
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200)
- resp = resp.click(href=r'/manage/events/%s/$' % event.id)
+ resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
resp = resp.click('Delete')
resp = resp.form.submit()
assert resp.location.endswith('/manage/agendas/%s/settings' % agenda.id)