summaryrefslogtreecommitdiffstats
path: root/tools/pharos-dashboard/src/notification
diff options
context:
space:
mode:
authormaxbr <maxbr@mi.fu-berlin.de>2017-01-05 12:36:54 +0100
committermaxbr <maxbr@mi.fu-berlin.de>2017-01-05 12:36:54 +0100
commit85623f2e6a4e4bee61ac5c28ce04bf9532980094 (patch)
tree61327148ccb024cf55bcffa1cdf4d16d7c848e37 /tools/pharos-dashboard/src/notification
parent55c3b53ba08b2c6cf3c392b10a065a3076525951 (diff)
Add library for dashboard notification System
JIRA: PHAROS-265 Change-Id: Ia33235c5160ef6b36b27a6fe1a2eb97a45e72367 Signed-off-by: maxbr <maxbr@mi.fu-berlin.de>
Diffstat (limited to 'tools/pharos-dashboard/src/notification')
-rw-r--r--tools/pharos-dashboard/src/notification/migrations/0001_initial.py2
-rw-r--r--tools/pharos-dashboard/src/notification/models.py12
-rw-r--r--tools/pharos-dashboard/src/notification/tasks.py40
3 files changed, 35 insertions, 19 deletions
diff --git a/tools/pharos-dashboard/src/notification/migrations/0001_initial.py b/tools/pharos-dashboard/src/notification/migrations/0001_initial.py
index d4af7519..8b8414e6 100644
--- a/tools/pharos-dashboard/src/notification/migrations/0001_initial.py
+++ b/tools/pharos-dashboard/src/notification/migrations/0001_initial.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-# Generated by Django 1.10 on 2016-09-23 11:36
+# Generated by Django 1.10 on 2016-11-03 13:33
from __future__ import unicode_literals
from django.db import migrations, models
diff --git a/tools/pharos-dashboard/src/notification/models.py b/tools/pharos-dashboard/src/notification/models.py
index 0ee275dd..89b30234 100644
--- a/tools/pharos-dashboard/src/notification/models.py
+++ b/tools/pharos-dashboard/src/notification/models.py
@@ -19,15 +19,15 @@ class BookingNotification(models.Model):
def get_content(self):
return {
- 'start': self.booking.start.isoformat(),
- 'end': self.booking.end.isoformat(),
+ 'resource_id': self.booking.resource.id,
+ 'booking_id': self.booking.id,
'user': self.booking.user.username,
- 'purpose': self.booking.purpose
+ 'user_id': self.booking.user.id,
}
def save(self, *args, **kwargs):
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
+ #if notifications.count() > 0:
+ # raise ValueError('Doubled Notification')
+ return super(BookingNotification, self).save(*args, **kwargs)
diff --git a/tools/pharos-dashboard/src/notification/tasks.py b/tools/pharos-dashboard/src/notification/tasks.py
index 4173433c..e2b34ca9 100644
--- a/tools/pharos-dashboard/src/notification/tasks.py
+++ b/tools/pharos-dashboard/src/notification/tasks.py
@@ -8,6 +8,8 @@
##############################################################################
+import os
+import sys
from datetime import timedelta
from celery import shared_task
@@ -15,19 +17,33 @@ from django.conf import settings
from django.utils import timezone
from notification.models import BookingNotification
-from notification_framework.notification import Notification
+
+# this adds the top level directory to the python path, this is needed so that we can access the
+# notification library
+sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..'))
+
+from dashboard_notification.notification import Notification, Message
@shared_task
def send_booking_notifications():
- messaging = Notification(dashboard_url=settings.RABBITMQ_URL)
-
- now = timezone.now()
- notifications = BookingNotification.objects.filter(submitted=False,
- submit_time__gt=now,
- submit_time__lt=now + timedelta(minutes=5))
- for notification in notifications:
- messaging.send(notification.type, notification.booking.resource.name,
- notification.get_content())
- notification.submitted = True
- notification.save()
+ with Notification(dashboard_url=settings.RABBITMQ_URL) as messaging:
+ now = timezone.now()
+ notifications = BookingNotification.objects.filter(submitted=False,
+ submit_time__gt=now - timedelta(minutes=1),
+ submit_time__lt=now + timedelta(minutes=5))
+ for notification in notifications:
+ message = Message(type=notification.type, topic=notification.booking.resource.name,
+ content=notification.get_content())
+ messaging.send(message)
+ notification.submitted = True
+ notification.save()
+
+@shared_task
+def notification_debug():
+ with Notification(dashboard_url=settings.RABBITMQ_URL) as messaging:
+ notifications = BookingNotification.objects.all()
+ for notification in notifications:
+ message = Message(type=notification.type, topic=notification.booking.resource.name,
+ content=notification.get_content())
+ messaging.send(message)