diff options
author | Parker Berberian <pberberian@iol.unh.edu> | 2018-10-24 15:12:32 -0400 |
---|---|---|
committer | Parker Berberian <pberberian@iol.unh.edu> | 2018-11-07 10:32:56 -0500 |
commit | 7b15aed77c6675286fd75b8832af58c992717ef9 (patch) | |
tree | f4597f72433ce75ab46a1fd80f3635c987b38205 /src/api | |
parent | ebc42347105caa2be52a8337372ae4793fe9182c (diff) |
Rewrite Notification subsystem
In this commit:
- delete a lot of really bad and / or unused code
- redesign a much simpler Notification model
- create and send notifications to the user's inbox on booking start & end
- migrations
- emails user when booking is ready and when it ends
Not in this commit:
- Creating notifications from lab messages
- warning messages when a booking is about to end
- creating "summary" notifications when e.g. a booking has been fulfilled by a lab
Change-Id: I69b4dc36c3f2bce76d810106baadeef5a562cc7d
Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/models.py | 12 | ||||
-rw-r--r-- | src/api/serializers/old_serializers.py | 7 | ||||
-rw-r--r-- | src/api/urls.py | 1 | ||||
-rw-r--r-- | src/api/views.py | 10 |
4 files changed, 15 insertions, 15 deletions
diff --git a/src/api/models.py b/src/api/models.py index 7448ac4..9a7f775 100644 --- a/src/api/models.py +++ b/src/api/models.py @@ -217,6 +217,18 @@ class Job(models.Model): tasklist += list(cls.objects.filter(job=self).filter(status=status)) return tasklist + def is_fulfilled(self): + """ + This method should return true if all of the job's tasks are done, + and false otherwise + """ + my_tasks = self.get_tasklist() + for task in my_tasks: + if task.status != JobStatus.DONE: + return False + return True + + def get_delta(self, status): d = {} j = {} diff --git a/src/api/serializers/old_serializers.py b/src/api/serializers/old_serializers.py index f50b90b..0944881 100644 --- a/src/api/serializers/old_serializers.py +++ b/src/api/serializers/old_serializers.py @@ -11,13 +11,6 @@ from rest_framework import serializers from account.models import UserProfile -from notifier.models import Notifier - - -class NotifierSerializer(serializers.ModelSerializer): - class Meta: - model = Notifier - fields = ('id', 'title', 'content', 'user', 'sender', 'message_type', 'msg_sent') class UserSerializer(serializers.ModelSerializer): diff --git a/src/api/urls.py b/src/api/urls.py index 94f8279..4b1fe40 100644 --- a/src/api/urls.py +++ b/src/api/urls.py @@ -32,7 +32,6 @@ from api.views import * router = routers.DefaultRouter() router.register(r'bookings', BookingViewSet) -router.register(r'notifier', NotifierViewSet) router.register(r'user', UserViewSet) urlpatterns = [ diff --git a/src/api/views.py b/src/api/views.py index 072354f..cc3a668 100644 --- a/src/api/views.py +++ b/src/api/views.py @@ -21,11 +21,11 @@ from django.views.decorators.csrf import csrf_exempt import json from api.serializers.booking_serializer import * -from api.serializers.old_serializers import NotifierSerializer, UserSerializer +from api.serializers.old_serializers import UserSerializer from account.models import UserProfile from booking.models import Booking -from notifier.models import Notifier from api.models import * +from notifier.manager import NotificationHandler class BookingViewSet(viewsets.ModelViewSet): @@ -34,11 +34,6 @@ class BookingViewSet(viewsets.ModelViewSet): filter_fields = ('resource', 'id') -class NotifierViewSet(viewsets.ModelViewSet): - queryset = Notifier.objects.none() - serializer_class = NotifierSerializer - - class UserViewSet(viewsets.ModelViewSet): queryset = UserProfile.objects.all() serializer_class = UserSerializer @@ -87,6 +82,7 @@ def specific_task(request, lab_name="", job_id="", task_id=""): if 'message' in request.POST: task.message = request.POST.get('message') task.save() + NotificationHandler.task_updated(task) d = {} d['task'] = task.config.get_delta() m = {} |