urlpatterns = [
url(r'^(?P<resource_id>[0-9]+)/$', BookingFormView.as_view(), name='create'),
url(r'^(?P<resource_id>[0-9]+)/edit/(?P<booking_id>[0-9]+)/$', BookingEditFormView.as_view(), name='edit'),
+
url(r'^(?P<resource_id>[0-9]+)/bookings_json/$', ResourceBookingsJSON.as_view(),
name='bookings_json'),
url(r'^detail/$', BookingView.as_view(), name='detail_prefix'),
url(r'^detail/(?P<booking_id>[0-9]+)/$', BookingView.as_view(), name='detail'),
+ url(r'^delete/$', BookingDeleteView.as_view(), name='delete_prefix'),
+ url(r'^delete/(?P<booking_id>[0-9]+)/$', BookingDeleteView.as_view(), name='delete'),
+
+ url(r'^delete/(?P<booking_id>[0-9]+)/confirm/$', bookingDelete, name='delete_booking'),
+
url(r'^list/$', BookingListView.as_view(), name='list')
-]
+]
\ No newline at end of file
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
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'
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"
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
<script type="text/javascript">
var bookings_url = "{% url 'booking:bookings_json' resource_id=resource.id %}";
var booking_detail_prefix = "{% url 'booking:detail_prefix' %}";
+ var booking_delete_prefix = "{% url 'booking:delete_prefix' %}";
var user_timezone = "{{ request.user.userprofile.timezone }}"
</script>
<script src={% static "js/fullcalendar-options.js" %}></script>
<script src={% static "js/datetimepicker-options.js" %}></script>
<script src={% static "js/booking-calendar.js" %}></script>
-{% endblock extrajs %}
+{% endblock extrajs %}
\ No newline at end of file
--- /dev/null
+{% load jira_filters %}
+{% load bootstrap3 %}
+
+<p>
+ Really delete Booking from {{ booking.start}} to {{ booking.end }}?
+</p>
+<p>
+ <div id="booking_delete_form_div">
+ <a href="{% url 'booking:delete_booking' booking_id=booking.id %}" class="btn btn btn-danger">Delete Booking</a>
+ </div>
+</p>
\ No newline at end of file
{% load jira_filters %}
+<script type="text/javascript">
+ function deleteClick(id) {
+ var booking_delete_url = booking_delete_prefix + id
+ $.ajax({
+ url: booking_delete_url,
+ type: 'get',
+ success: function (data) {
+ $('#booking_delete_content').html(data);
+ },
+ failure: function (data) {
+ alert('Error finding that booking');
+ }
+ });
+ $('#booking_delete_modal').modal('show');
+ }
+</script>
+
<p>
<b>Resource: </b>
<a href="{{ booking.resource.url }}">
<a href="{% url 'booking:edit' booking_id=booking.id resource_id=booking.resource.id %}" class="btn btn btn-success">
Edit Booking
</a>
+ <a href="javascript:deleteClick({{ booking.id }})" class="btn btn btn-danger">
+ Delete Booking
+ </a>
+ <div id="booking_delete_modal" class="modal fade" role="dialog">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal">×</button>
+ <h4 class="modal-title">Delete Booking</h4>
+ </div>
+ <div class="modal-body" id="booking_delete_content">
+ </div>
+ </div>
+ </div>
+ </div>
</p>
{% endif %}
-{% endif %}
+{% endif %}
\ No newline at end of file