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)