diff options
Diffstat (limited to 'pharos-dashboard/booking')
-rw-r--r-- | pharos-dashboard/booking/models.py | 15 | ||||
-rw-r--r-- | pharos-dashboard/booking/urls.py | 1 | ||||
-rw-r--r-- | pharos-dashboard/booking/views.py | 12 |
3 files changed, 20 insertions, 8 deletions
diff --git a/pharos-dashboard/booking/models.py b/pharos-dashboard/booking/models.py index 4be8cca..e772fb5 100644 --- a/pharos-dashboard/booking/models.py +++ b/pharos-dashboard/booking/models.py @@ -1,10 +1,10 @@ from django.contrib.auth.models import User from django.db import models from jira import JIRA +from jira import JIRAError from dashboard.models import Resource -from pharos_dashboard import settings - +from django.conf import settings class Booking(models.Model): id = models.AutoField(primary_key=True) @@ -13,6 +13,7 @@ class Booking(models.Model): start = models.DateTimeField() end = models.DateTimeField() jira_issue_id = models.IntegerField(null=True) + jira_issue_status = models.CharField(max_length=50) purpose = models.CharField(max_length=300, blank=False) @@ -20,9 +21,13 @@ class Booking(models.Model): db_table = 'booking' def get_jira_issue(self): - jira = JIRA(server=settings.JIRA_URL, basic_auth=(settings.JIRA_USER_NAME, settings.JIRA_USER_PASSWORD)) - issue = jira.issue(self.jira_issue_id) - return issue + try: + jira = JIRA(server=settings.JIRA_URL, + basic_auth=(settings.JIRA_USER_NAME, settings.JIRA_USER_PASSWORD)) + issue = jira.issue(self.jira_issue_id) + return issue + except JIRAError: + return None def authorization_test(self): """ diff --git a/pharos-dashboard/booking/urls.py b/pharos-dashboard/booking/urls.py index f6429da..bdcd52d 100644 --- a/pharos-dashboard/booking/urls.py +++ b/pharos-dashboard/booking/urls.py @@ -21,6 +21,7 @@ urlpatterns = [ url(r'^(?P<resource_id>[0-9]+)/$', BookingFormView.as_view(), name='create'), 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'), ] diff --git a/pharos-dashboard/booking/views.py b/pharos-dashboard/booking/views.py index fde8d81..d0b2aef 100644 --- a/pharos-dashboard/booking/views.py +++ b/pharos-dashboard/booking/views.py @@ -1,9 +1,13 @@ +from datetime import timedelta + +from django.conf import settings from django.contrib import messages from django.contrib.auth.mixins import LoginRequiredMixin from django.http import JsonResponse from django.shortcuts import get_object_or_404 from django.shortcuts import redirect from django.urls import reverse +from django.utils import timezone from django.views import View from django.views.generic import FormView from django.views.generic import TemplateView @@ -67,7 +71,8 @@ class BookingFormView(LoginRequiredMixin, FormView): messages.add_message(self.request, messages.ERROR, err) return super(BookingFormView, self).form_invalid(form) try: - create_jira_ticket(user, booking) + if settings.CREATE_JIRA_TICKET: + create_jira_ticket(user, booking) except JIRAError: messages.add_message(self.request, messages.ERROR, 'Failed to create Jira Ticket. ' 'Please check your Jira ' @@ -93,5 +98,6 @@ class BookingView(TemplateView): class ResourceBookingsJSON(View): def get(self, request, *args, **kwargs): resource = get_object_or_404(Resource, id=self.kwargs['resource_id']) - bookings = resource.booking_set.get_queryset().values('id', 'start', 'end', 'purpose') - return JsonResponse({'bookings': list(bookings)}) + bookings = resource.booking_set.get_queryset().values('id', 'start', 'end', 'purpose', + 'jira_issue_status') + return JsonResponse({'bookings': list(bookings)})
\ No newline at end of file |