From ff30b14a212f38cf59084d30e9f13f9f92d2be3b Mon Sep 17 00:00:00 2001 From: maxbr Date: Mon, 26 Sep 2016 16:36:11 +0200 Subject: Restructure dashboard project for docker deploying Change-Id: I13cad51270504ee4bed8558598a8891af58a26ab Signed-off-by: maxbr --- tools/pharos-dashboard/booking/models.py | 75 -------------------------------- 1 file changed, 75 deletions(-) delete mode 100644 tools/pharos-dashboard/booking/models.py (limited to 'tools/pharos-dashboard/booking/models.py') diff --git a/tools/pharos-dashboard/booking/models.py b/tools/pharos-dashboard/booking/models.py deleted file mode 100644 index 200dc830..00000000 --- a/tools/pharos-dashboard/booking/models.py +++ /dev/null @@ -1,75 +0,0 @@ -############################################################################## -# Copyright (c) 2016 Max Breitenfeldt and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - - -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 django.conf import settings - - -class Booking(models.Model): - id = models.AutoField(primary_key=True) - user = models.ForeignKey(User, models.CASCADE) # delete if user is deleted - resource = models.ForeignKey(Resource, models.PROTECT) - 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) - - class Meta: - db_table = 'booking' - - def get_jira_issue(self): - 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): - """ - Return True if self.user is authorized to make this booking. - """ - user = self.user - # Check if User is troubleshooter / admin - if user.has_perm('booking.add_booking'): - return True - # Check if User owns this resource - if user == self.resource.owner: - return True - return False - - def save(self, *args, **kwargs): - """ - Save the booking if self.user is authorized and there is no overlapping booking. - Raise PermissionError if the user is not authorized - Raise ValueError if there is an overlapping booking - """ - if not self.authorization_test(): - raise PermissionError('Insufficient permissions to save this booking.') - if self.start >= self.end: - raise ValueError('Start date is after end date') - # conflicts end after booking starts, and start before booking ends - conflicting_dates = Booking.objects.filter(resource=self.resource).exclude(id=self.id) - conflicting_dates = conflicting_dates.filter(end__gt=self.start) - conflicting_dates = conflicting_dates.filter(start__lt=self.end) - if conflicting_dates.count() > 0: - raise ValueError('This booking overlaps with another booking') - return super(Booking, self).save(*args, **kwargs) - - def __str__(self): - return str(self.resource) + ' from ' + str(self.start) + ' until ' + str(self.end) -- cgit 1.2.3-korg