Commit 6937f6790c158190e7d3cad3d0b45675b167f79a
1 parent
4c93f8fa
Exists in
master
and in
2 other branches
Start sending 'beta' notifications from chat to app
Showing
2 changed files
with
40 additions
and
0 deletions
Show diff stats
api/views.py
| @@ -33,6 +33,8 @@ from oauth2_provider.views.generic import ProtectedResourceView | @@ -33,6 +33,8 @@ from oauth2_provider.views.generic import ProtectedResourceView | ||
| 33 | from oauth2_provider.models import Application | 33 | from oauth2_provider.models import Application |
| 34 | from django.http import HttpResponse | 34 | from django.http import HttpResponse |
| 35 | 35 | ||
| 36 | +from fcm_django.models import FCMDevice | ||
| 37 | + | ||
| 36 | @csrf_exempt | 38 | @csrf_exempt |
| 37 | def getToken(request): | 39 | def getToken(request): |
| 38 | oauth = Application.objects.filter(name = "amadeus-droid") | 40 | oauth = Application.objects.filter(name = "amadeus-droid") |
| @@ -111,6 +113,37 @@ class LoginViewset(viewsets.ReadOnlyModelViewSet): | @@ -111,6 +113,37 @@ class LoginViewset(viewsets.ReadOnlyModelViewSet): | ||
| 111 | 113 | ||
| 112 | return HttpResponse(response) | 114 | return HttpResponse(response) |
| 113 | 115 | ||
| 116 | + @csrf_exempt | ||
| 117 | + @list_route(methods = ['POST'], permissions_classes = [IsAuthenticated]) | ||
| 118 | + def register_device(self, request): | ||
| 119 | + username = request.data['email'] | ||
| 120 | + device = request.data['device'] | ||
| 121 | + | ||
| 122 | + user = self.queryset.get(email = username) | ||
| 123 | + response = "" | ||
| 124 | + json_r = {} | ||
| 125 | + | ||
| 126 | + if not user is None: | ||
| 127 | + fcm_d = FCMDevice() | ||
| 128 | + fcm_d.name = "phone" | ||
| 129 | + fcm_d.registration_id = device | ||
| 130 | + fcm_d.type = 'android' | ||
| 131 | + fcm_d.user = user | ||
| 132 | + | ||
| 133 | + fcm_d.save() | ||
| 134 | + | ||
| 135 | + if not fcm_d.pk is None: | ||
| 136 | + json_r["message"] = "" | ||
| 137 | + json_r["type"] = "" | ||
| 138 | + json_r["title"] = "" | ||
| 139 | + json_r["success"] = True | ||
| 140 | + json_r["number"] = 1 | ||
| 141 | + json_r['extra'] = 0 | ||
| 142 | + | ||
| 143 | + response = json.dumps(json_r) | ||
| 144 | + | ||
| 145 | + return HttpResponse(response) | ||
| 146 | + | ||
| 114 | class SubjectViewset(viewsets.ReadOnlyModelViewSet): | 147 | class SubjectViewset(viewsets.ReadOnlyModelViewSet): |
| 115 | queryset = Subject.objects.all() | 148 | queryset = Subject.objects.all() |
| 116 | permissions_classes = (IsAuthenticated, ) | 149 | permissions_classes = (IsAuthenticated, ) |
chat/views.py
| @@ -24,6 +24,8 @@ from log.models import Log | @@ -24,6 +24,8 @@ from log.models import Log | ||
| 24 | from log.mixins import LogMixin | 24 | from log.mixins import LogMixin |
| 25 | import time | 25 | import time |
| 26 | 26 | ||
| 27 | +from fcm_django.models import FCMDevice | ||
| 28 | + | ||
| 27 | from categories.models import Category | 29 | from categories.models import Category |
| 28 | from subjects.models import Subject | 30 | from subjects.models import Subject |
| 29 | from users.models import User | 31 | from users.models import User |
| @@ -369,6 +371,11 @@ class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | @@ -369,6 +371,11 @@ class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | ||
| 369 | 371 | ||
| 370 | Group("user-%s" % user.id).send({'text': notification}) | 372 | Group("user-%s" % user.id).send({'text': notification}) |
| 371 | 373 | ||
| 374 | + device = FCMDevice.objects.filter(user = user).first() | ||
| 375 | + | ||
| 376 | + if not device is None: | ||
| 377 | + device.send_message(title = "Message", body = self.object.text) | ||
| 378 | + | ||
| 372 | ChatVisualizations.objects.create(viewed = False, message = self.object, user = user) | 379 | ChatVisualizations.objects.create(viewed = False, message = self.object, user = user) |
| 373 | 380 | ||
| 374 | return super(SendMessage, self).form_valid(form) | 381 | return super(SendMessage, self).form_valid(form) |