Projet

Général

Profil

0002-manager-update-event-URIs-to-be-under-agendas-pk-202.patch

Frédéric Péters, 23 décembre 2019 11:37

Télécharger (9,41 ko)

Voir les différences:

Subject: [PATCH 2/4] manager: update event URIs to be under /agendas/<pk>/
 (#20279)

 chrono/agendas/models.py                      |  2 +-
 .../templates/chrono/manager_event_form.html  |  2 +-
 .../manager_events_agenda_settings.html       |  4 ++--
 chrono/manager/urls.py                        | 12 +++++++++--
 chrono/manager/views.py                       |  6 ++++--
 tests/test_manager.py                         | 20 +++++++++----------
 6 files changed, 28 insertions(+), 18 deletions(-)
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
-