summaryrefslogtreecommitdiffstats
path: root/pharos-dashboard/src/notification
diff options
context:
space:
mode:
Diffstat (limited to 'pharos-dashboard/src/notification')
-rw-r--r--pharos-dashboard/src/notification/models.py5
-rw-r--r--pharos-dashboard/src/notification/tasks.py2
-rw-r--r--pharos-dashboard/src/notification/tests.py41
3 files changed, 45 insertions, 3 deletions
diff --git a/pharos-dashboard/src/notification/models.py b/pharos-dashboard/src/notification/models.py
index 2d19918..0ee275d 100644
--- a/pharos-dashboard/src/notification/models.py
+++ b/pharos-dashboard/src/notification/models.py
@@ -26,7 +26,8 @@ class BookingNotification(models.Model):
}
def save(self, *args, **kwargs):
- notifications = self.booking.bookingnotification_set.filter(type=self.type)
- if notifications.count() > 1:
+ notifications = self.booking.bookingnotification_set.filter(type=self.type).exclude(
+ id=self.id)
+ if notifications.count() > 0:
raise ValueError('Doubled Notification')
return super(BookingNotification, self).save(*args, **kwargs) \ No newline at end of file
diff --git a/pharos-dashboard/src/notification/tasks.py b/pharos-dashboard/src/notification/tasks.py
index 61ab14a..4173433 100644
--- a/pharos-dashboard/src/notification/tasks.py
+++ b/pharos-dashboard/src/notification/tasks.py
@@ -8,9 +8,9 @@
##############################################################################
-from celery import shared_task
from datetime import timedelta
+from celery import shared_task
from django.conf import settings
from django.utils import timezone
diff --git a/pharos-dashboard/src/notification/tests.py b/pharos-dashboard/src/notification/tests.py
new file mode 100644
index 0000000..9df9aa6
--- /dev/null
+++ b/pharos-dashboard/src/notification/tests.py
@@ -0,0 +1,41 @@
+##############################################################################
+# 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 datetime import timedelta
+from unittest import TestCase
+
+from django.contrib.auth.models import User
+from django.utils import timezone
+
+from booking.models import Booking
+from dashboard.models import Resource
+from jenkins.models import JenkinsSlave
+from notification.models import *
+
+
+class JenkinsModelTestCase(TestCase):
+ def setUp(self):
+ self.slave = JenkinsSlave.objects.create(name='test1', url='test')
+ self.res1 = Resource.objects.create(name='res1', slave=self.slave, description='x',
+ url='x')
+ self.user1 = User.objects.create(username='user1')
+
+ start = timezone.now()
+ end = start + timedelta(days=1)
+ self.booking = Booking.objects.create(start=start, end=end, purpose='test',
+ resource=self.res1, user=self.user1)
+
+ def test_booking_notification(self):
+ BookingNotification.objects.create(type='test', booking=self.booking,
+ submit_time=timezone.now())
+
+ self.assertRaises(ValueError, BookingNotification.objects.create, type='test',
+ booking=self.booking,
+ submit_time=timezone.now())