diff options
Diffstat (limited to 'src/booking/views.py')
-rw-r--r-- | src/booking/views.py | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/src/booking/views.py b/src/booking/views.py index c139b4c..9b9860f 100644 --- a/src/booking/views.py +++ b/src/booking/views.py @@ -19,7 +19,6 @@ from django.views.generic import TemplateView from django.shortcuts import redirect, render import json -from booking.forms import BookingForm, BookingEditForm from resource_inventory.models import ResourceBundle from resource_inventory.resource_manager import ResourceManager from booking.models import Booking, Installer, Opsys @@ -42,132 +41,6 @@ def drop_filter(context): context.update({'installer_filter': json.dumps(installer_filter), 'scenario_filter': json.dumps(scenario_filter)}) -class BookingFormView(FormView): - template_name = "booking/booking_calendar.html" - form_class = BookingForm - - def dispatch(self, request, *args, **kwargs): - self.resource = get_object_or_404(ResourceBundle, id=self.kwargs['resource_id']) - return super(BookingFormView, self).dispatch(request, *args, **kwargs) - - def get_context_data(self, **kwargs): - title = 'Booking: ' + str(self.resource.id) - context = super(BookingFormView, self).get_context_data(**kwargs) - context.update({'title': title, 'resource': self.resource}) - - drop_filter(context) - - return context - - def get_success_url(self): - return reverse('booking:create', kwargs=self.kwargs) - - def form_valid(self, form): - if not self.request.user.is_authenticated: - messages.add_message(self.request, messages.ERROR, - 'You need to be logged in to book a Pod.') - return super(BookingFormView, self).form_invalid(form) - - if form.cleaned_data['end'] - form.cleaned_data['start'] > timezone.timedelta(days=21): - messages.add_message(self.request, messages.ERROR, - 'Bookings can be no more than 3 weeks long.') - return super(BookingFormView, self).form_invalid(form) - - user = self.request.user - booking = Booking(start=form.cleaned_data['start'], - end=form.cleaned_data['end'], - purpose=form.cleaned_data['purpose'], - installer=form.cleaned_data['installer'], - scenario=form.cleaned_data['scenario'], - resource=self.resource, - owner=user - ) - try: - booking.save() - except ValueError as err: - messages.add_message(self.request, messages.ERROR, err) - return super(BookingFormView, self).form_invalid(form) - messages.add_message(self.request, messages.SUCCESS, 'Booking saved') - return super(BookingFormView, self).form_valid(form) - - -class BookingEditFormView(FormView): - template_name = "booking/booking_calendar.html" - form_class = BookingEditForm - - def is_valid(self): - return True - - def dispatch(self, request, *args, **kwargs): - self.resource = get_object_or_404(ResourceBundle, id=self.kwargs['resource_id']) - self.original_booking = get_object_or_404(Booking, id=self.kwargs['booking_id']) - return super(BookingEditFormView, self).dispatch(request, *args, **kwargs) - - def get_context_data(self, **kwargs): - title = 'Editing Booking on: ' + self.resource.name - context = super(BookingEditFormView, self).get_context_data(**kwargs) - context.update({'title': title, 'resource': self.resource, 'booking': self.original_booking}) - - drop_filter(context) - - return context - - def get_form_kwargs(self): - kwargs = super(BookingEditFormView, self).get_form_kwargs() - kwargs['purpose'] = self.original_booking.purpose - kwargs['start'] = self.original_booking.start - kwargs['end'] = self.original_booking.end - return kwargs - - def get_success_url(self): - return reverse('booking:create', args=(self.resource.id,)) - - def form_valid(self, form): - - if not self.request.user.is_authenticated: - messages.add_message(self.request, messages.ERROR, - 'You need to be logged in to book a Pod.') - return super(BookingEditFormView, self).form_invalid(form) - - if not self.request.user == self.original_booking.user: - messages.add_message(self.request, messages.ERROR, - 'You are not the owner of this booking.') - return super(BookingEditFormView, self).form_invalid(form) - - # Do Conflict Checks - if self.original_booking.end != form.cleaned_data['end']: - if form.cleaned_data['end'] - self.original_booking.end > timezone.timedelta(days=7): - messages.add_message(self.request, messages.ERROR, - 'Extensions can not be longer than one week.') - return super(BookingEditFormView, self).form_invalid(form) - elif self.original_booking.ext_count <= 0: - messages.add_message(self.request, messages.ERROR, - 'Cannot change end date after maximum number of extensions reached.') - return super(BookingEditFormView, self).form_invalid(form) - - else: - self.original_booking.ext_count -= 1 - - if self.original_booking.start != form.cleaned_data['start']: - if timezone.now() > form.cleaned_data['start']: - messages.add_message(self.request, messages.ERROR, - 'Cannot change start date after it has occurred.') - return super(BookingEditFormView, self).form_invalid(form) - self.original_booking.start = form.cleaned_data['start'] - self.original_booking.end = form.cleaned_data['end'] - self.original_booking.purpose = form.cleaned_data['purpose'] - self.original_booking.installer = form.cleaned_data['installer'] - self.original_booking.scenario = form.cleaned_data['scenario'] - self.original_booking.reset = form.cleaned_data['reset'] - try: - self.original_booking.save() - except ValueError as err: - messages.add_message(self.request, messages.ERROR, err) - return super(BookingEditFormView, self).form_invalid(form) - - return super(BookingEditFormView, self).form_valid(form) - - class BookingView(TemplateView): template_name = "booking/booking_detail.html" |