summaryrefslogtreecommitdiffstats
path: root/pharos-dashboard/booking
diff options
context:
space:
mode:
Diffstat (limited to 'pharos-dashboard/booking')
-rw-r--r--pharos-dashboard/booking/models.py15
-rw-r--r--pharos-dashboard/booking/urls.py1
-rw-r--r--pharos-dashboard/booking/views.py12
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