diff options
Diffstat (limited to 'tools/pharos-dashboard/src/notification')
-rw-r--r-- | tools/pharos-dashboard/src/notification/models.py | 5 | ||||
-rw-r--r-- | tools/pharos-dashboard/src/notification/tasks.py | 2 | ||||
-rw-r--r-- | tools/pharos-dashboard/src/notification/tests.py | 41 |
3 files changed, 45 insertions, 3 deletions
diff --git a/tools/pharos-dashboard/src/notification/models.py b/tools/pharos-dashboard/src/notification/models.py index 2d199181..0ee275dd 100644 --- a/tools/pharos-dashboard/src/notification/models.py +++ b/tools/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/tools/pharos-dashboard/src/notification/tasks.py b/tools/pharos-dashboard/src/notification/tasks.py index 61ab14af..4173433c 100644 --- a/tools/pharos-dashboard/src/notification/tasks.py +++ b/tools/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/tools/pharos-dashboard/src/notification/tests.py b/tools/pharos-dashboard/src/notification/tests.py new file mode 100644 index 00000000..9df9aa60 --- /dev/null +++ b/tools/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()) |