From e5c2305cea0d7359dce6fc04fb23ad032735b1fd Mon Sep 17 00:00:00 2001 From: Sawyer Bergeron Date: Tue, 13 Feb 2018 17:53:56 -0500 Subject: Provide Interface for Booking Deletion Jira: PHAROS-355 User can now delete their own booking by going to the detail view of their booking and clicking 'delete' Change-Id: I279da364c2a5dfd03b877d1236c610d0fef563bc Signed-off-by: Sawyer Bergeron --- src/booking/urls.py | 8 +++++++- src/booking/views.py | 19 ++++++++++++++++++- 2 files changed, 25 insertions(+), 2 deletions(-) (limited to 'src/booking') diff --git a/src/booking/urls.py b/src/booking/urls.py index 403e32f..ed3b1d4 100644 --- a/src/booking/urls.py +++ b/src/booking/urls.py @@ -30,11 +30,17 @@ from booking.views import * urlpatterns = [ url(r'^(?P[0-9]+)/$', BookingFormView.as_view(), name='create'), url(r'^(?P[0-9]+)/edit/(?P[0-9]+)/$', BookingEditFormView.as_view(), name='edit'), + url(r'^(?P[0-9]+)/bookings_json/$', ResourceBookingsJSON.as_view(), name='bookings_json'), url(r'^detail/$', BookingView.as_view(), name='detail_prefix'), url(r'^detail/(?P[0-9]+)/$', BookingView.as_view(), name='detail'), + url(r'^delete/$', BookingDeleteView.as_view(), name='delete_prefix'), + url(r'^delete/(?P[0-9]+)/$', BookingDeleteView.as_view(), name='delete'), + + url(r'^delete/(?P[0-9]+)/confirm/$', bookingDelete, name='delete_booking'), + url(r'^list/$', BookingListView.as_view(), name='list') -] +] \ No newline at end of file diff --git a/src/booking/views.py b/src/booking/views.py index ab3a04e..7e35af2 100644 --- a/src/booking/views.py +++ b/src/booking/views.py @@ -18,6 +18,7 @@ from django.views import View from django.views.generic import FormView from django.views.generic import TemplateView from jira import JIRAError +from django.shortcuts import redirect from account.jira_util import get_jira from booking.forms import BookingForm, BookingEditForm @@ -163,6 +164,7 @@ class BookingEditFormView(FormView): class BookingView(TemplateView): template_name = "booking/booking_detail.html" + def get_context_data(self, **kwargs): booking = get_object_or_404(Booking, id=self.kwargs['booking_id']) title = 'Booking Details' @@ -170,6 +172,21 @@ class BookingView(TemplateView): context.update({'title': title, 'booking': booking}) return context +class BookingDeleteView(TemplateView): + template_name = "booking/booking_delete.html" + + def get_context_data(self, **kwargs): + booking = get_object_or_404(Booking, id=self.kwargs['booking_id']) + title = 'Delete Booking' + context = super(BookingDeleteView, self).get_context_data(**kwargs) + context.update({'title': title, 'booking': booking}) + return context + +def bookingDelete(request, booking_id): + booking = get_object_or_404(Booking, id=booking_id) + booking.delete() + messages.add_message(request, messages.SUCCESS, 'Booking deleted') + return redirect('../../../../') class BookingListView(TemplateView): template_name = "booking/booking_list.html" @@ -188,4 +205,4 @@ class ResourceBookingsJSON(View): bookings = resource.booking_set.get_queryset().values('id', 'start', 'end', 'purpose', 'jira_issue_status', 'opsys__name', 'installer__name', 'scenario__name') - return JsonResponse({'bookings': list(bookings)}) + return JsonResponse({'bookings': list(bookings)}) \ No newline at end of file -- cgit 1.2.3-korg