0002-manager-update-event-URIs-to-be-under-agendas-pk-202.patch
chrono/agendas/models.py | ||
---|---|---|
369 | 369 |
return self.start_datetime + datetime.timedelta(minutes=self.meeting_type.duration) |
370 | 370 | |
371 | 371 |
def get_absolute_url(self): |
372 |
return reverse('chrono-manager-event-edit', kwargs={'pk': self.id}) |
|
372 |
return reverse('chrono-manager-event-edit', kwargs={'pk': self.agenda.id, 'event_pk': self.id})
|
|
373 | 373 | |
374 | 374 |
@classmethod |
375 | 375 |
def import_json(cls, data): |
chrono/manager/templates/chrono/manager_event_form.html | ||
---|---|---|
17 | 17 |
{% if object.id %} |
18 | 18 |
<h2>{% trans "Edit Event" %}</h2> |
19 | 19 |
<span class="actions"> |
20 |
<a rel="popup" href="{% url 'chrono-manager-event-delete' pk=object.id %}">{% trans 'Delete' %}</a> |
|
20 |
<a rel="popup" href="{% url 'chrono-manager-event-delete' pk=object.agenda.id event_pk=object.id %}">{% trans 'Delete' %}</a>
|
|
21 | 21 |
</span> |
22 | 22 |
{% else %} |
23 | 23 |
<h2>{% trans "New Event" %}</h2> |
chrono/manager/templates/chrono/manager_events_agenda_settings.html | ||
---|---|---|
22 | 22 |
{% elif event.waiting_list_places %} |
23 | 23 |
data-total="{{event.waiting_list_places}}" data-booked="{{event.waiting_list}}" |
24 | 24 |
{% endif %} |
25 |
><a rel="popup" href="{% if user_can_manage %}{% url 'chrono-manager-event-edit' pk=event.id %}{% else %}#{% endif %}"> |
|
25 |
><a rel="popup" href="{% if user_can_manage %}{% url 'chrono-manager-event-edit' pk=agenda.id event_pk=event.id %}{% else %}#{% endif %}">
|
|
26 | 26 |
{% if event.label %}{{event.label}} / {% endif %} |
27 | 27 |
{{ event.start_datetime }} |
28 | 28 |
{% if event.full %}/ <span class="full">{% trans "full" %}</span>{% endif %} |
... | ... | |
41 | 41 |
({% trans "out of bookable period" %}) |
42 | 42 |
{% endif %} |
43 | 43 |
</a> |
44 |
{% if user_can_manage %}<a rel="popup" class="delete" href="{% url 'chrono-manager-event-delete' pk=event.id %}">{% trans "remove" %}</a>{% endif %} |
|
44 |
{% if user_can_manage %}<a rel="popup" class="delete" href="{% url 'chrono-manager-event-delete' pk=agenda.id event_pk=event.id %}">{% trans "remove" %}</a>{% endif %}
|
|
45 | 45 |
<span class="occupation-bar"></span> |
46 | 46 |
</li> |
47 | 47 |
{% endfor %} |
chrono/manager/urls.py | ||
---|---|---|
43 | 43 |
views.agenda_import_events, |
44 | 44 |
name='chrono-manager-agenda-import-events', |
45 | 45 |
), |
46 |
url(r'^events/(?P<pk>\d+)/$', views.event_edit, name='chrono-manager-event-edit'), |
|
47 |
url(r'^events/(?P<pk>\d+)/delete$', views.event_delete, name='chrono-manager-event-delete'), |
|
46 |
url( |
|
47 |
r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/edit$', |
|
48 |
views.event_edit, |
|
49 |
name='chrono-manager-event-edit', |
|
50 |
), |
|
51 |
url( |
|
52 |
r'^agendas/(?P<pk>\d+)/events/(?P<event_pk>\d+)/delete$', |
|
53 |
views.event_delete, |
|
54 |
name='chrono-manager-event-delete', |
|
55 |
), |
|
48 | 56 |
url( |
49 | 57 |
r'^agendas/(?P<pk>\d+)/add-meeting-type$', |
50 | 58 |
views.agenda_add_meeting_type, |
chrono/manager/views.py | ||
---|---|---|
683 | 683 |
agenda_import_events = AgendaImportEventsView.as_view() |
684 | 684 | |
685 | 685 | |
686 |
class EventEditView(ManagedAgendaSubobjectMixin, UpdateView):
|
|
686 |
class EventEditView(ManagedAgendaMixin, UpdateView): |
|
687 | 687 |
template_name = 'chrono/manager_event_form.html' |
688 | 688 |
model = Event |
689 | 689 |
form_class = EventForm |
690 |
pk_url_kwarg = 'event_pk' |
|
690 | 691 | |
691 | 692 | |
692 | 693 |
event_edit = EventEditView.as_view() |
693 | 694 | |
694 | 695 | |
695 |
class EventDeleteView(ManagedAgendaSubobjectMixin, DeleteView):
|
|
696 |
class EventDeleteView(ManagedAgendaMixin, DeleteView): |
|
696 | 697 |
template_name = 'chrono/manager_confirm_delete.html' |
697 | 698 |
model = Event |
699 |
pk_url_kwarg = 'event_pk' |
|
698 | 700 | |
699 | 701 |
def get_context_data(self, **kwargs): |
700 | 702 |
context = super(EventDeleteView, self).get_context_data(**kwargs) |
tests/test_manager.py | ||
---|---|---|
358 | 358 |
event = Event.objects.get(places=10) |
359 | 359 |
assert event.slug is None |
360 | 360 |
assert not "This agenda doesn't have any event yet." in resp.text |
361 |
assert '/manage/events/%s/' % event.id in resp.text
|
|
361 |
assert '/manage/agendas/%s/events/%s/' % (agenda.id, event.id) in resp.text
|
|
362 | 362 |
assert ('Feb. 15, %s, 5 p.m.' % year) in resp.text |
363 | 363 |
assert '10 places' in resp.text |
364 | 364 | |
... | ... | |
404 | 404 |
resp = resp.follow() |
405 | 405 |
event = Event.objects.get(places=10) |
406 | 406 |
assert not "This agenda doesn't have any event yet." in resp.text |
407 |
assert '/manage/events/%s/' % event.id in resp.text
|
|
407 |
assert '/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id) in resp.text
|
|
408 | 408 |
assert 'Feb. 15, 2016, 5 p.m.' in resp.text |
409 | 409 |
assert '10 places' in resp.text |
410 | 410 | |
... | ... | |
422 | 422 |
resp.form['places'] = 20 |
423 | 423 |
resp = resp.form.submit() |
424 | 424 |
resp = resp.follow() |
425 |
assert '/manage/events/%s/' % event.id in resp.text
|
|
425 |
assert '/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id) in resp.text
|
|
426 | 426 |
assert 'Feb. 16, 2016, 5 p.m.' in resp.text |
427 | 427 |
assert '20 places' in resp.text |
428 | 428 | |
... | ... | |
439 | 439 |
event = Event(start_datetime=make_aware(datetime.datetime(2016, 2, 15, 17, 0)), places=20, agenda=agenda) |
440 | 440 |
event.save() |
441 | 441 |
app = login(app, username='manager', password='manager') |
442 |
resp = app.get('/manage/events/%s/' % event.id, status=403)
|
|
442 |
resp = app.get('/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id), status=403)
|
|
443 | 443 | |
444 | 444 |
agenda.edit_role = manager_user.groups.all()[0] |
445 | 445 |
agenda.save() |
... | ... | |
450 | 450 |
resp.form['places'] = 20 |
451 | 451 |
resp = resp.form.submit() |
452 | 452 |
resp = resp.follow() |
453 |
assert '/manage/events/%s/' % event.id in resp.text
|
|
453 |
assert '/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id) in resp.text
|
|
454 | 454 |
assert 'Feb. 16, 2016, 5 p.m.' in resp.text |
455 | 455 |
assert '20 places' in resp.text |
456 | 456 | |
... | ... | |
502 | 502 | |
503 | 503 |
app = login(app) |
504 | 504 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200) |
505 |
resp = resp.click(href=r'/manage/events/%s/$' % event.id)
|
|
505 |
resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
|
|
506 | 506 |
resp = resp.click('Delete') |
507 | 507 |
resp = resp.form.submit() |
508 | 508 |
assert resp.location.endswith('/manage/agendas/%s/settings' % agenda.id) |
... | ... | |
517 | 517 | |
518 | 518 |
app = login(app) |
519 | 519 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200) |
520 |
resp = resp.click(href=r'/manage/events/%s/$' % event.id)
|
|
520 |
resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
|
|
521 | 521 |
resp = resp.click('Delete') |
522 | 522 |
assert 'Are you sure you want to delete this?' in resp.text |
523 | 523 | |
524 | 524 |
booking = Booking(event=event) |
525 | 525 |
booking.save() |
526 | 526 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200) |
527 |
resp = resp.click(href=r'/manage/events/%s/$' % event.id)
|
|
527 |
resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
|
|
528 | 528 |
resp = resp.click('Delete') |
529 | 529 |
assert 'This cannot be removed' in resp.text |
530 | 530 | |
531 | 531 |
booking.cancellation_datetime = now() |
532 | 532 |
booking.save() |
533 | 533 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200) |
534 |
resp = resp.click(href=r'/manage/events/%s/$' % event.id)
|
|
534 |
resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
|
|
535 | 535 |
resp = resp.click('Delete') |
536 | 536 |
assert 'Are you sure you want to delete this?' in resp.text |
537 | 537 | |
... | ... | |
551 | 551 | |
552 | 552 |
app = login(app, username='manager', password='manager') |
553 | 553 |
resp = app.get('/manage/agendas/%s/settings' % agenda.id, status=200) |
554 |
resp = resp.click(href=r'/manage/events/%s/$' % event.id)
|
|
554 |
resp = resp.click(href='/manage/agendas/%s/events/%s/edit' % (agenda.id, event.id))
|
|
555 | 555 |
resp = resp.click('Delete') |
556 | 556 |
resp = resp.form.submit() |
557 | 557 |
assert resp.location.endswith('/manage/agendas/%s/settings' % agenda.id) |
558 |
- |