Commit 4624161eb52843ab1bfabf618ef9b182061deb73
1 parent
1c837b10
Exists in
master
and in
2 other branches
Creating function to send chat notifications to app
Showing
5 changed files
with
56 additions
and
46 deletions
Show diff stats
| @@ -0,0 +1,42 @@ | @@ -0,0 +1,42 @@ | ||
| 1 | +import json | ||
| 2 | +import textwrap | ||
| 3 | +from django.utils.html import strip_tags | ||
| 4 | +from django.utils.translation import ugettext as _ | ||
| 5 | + | ||
| 6 | +from fcm_django.models import FCMDevice | ||
| 7 | +from fcm_django.fcm import fcm_send_message | ||
| 8 | + | ||
| 9 | +from chat.serializers import ChatSerializer | ||
| 10 | + | ||
| 11 | +def sendChatPushNotification(user, message): | ||
| 12 | + device = FCMDevice.objects.filter(user = user, active = True).first() | ||
| 13 | + | ||
| 14 | + if not device is None: | ||
| 15 | + serializer = ChatSerializer(message) | ||
| 16 | + | ||
| 17 | + json_r = json.dumps(serializer.data) | ||
| 18 | + json_r = json.loads(json_r) | ||
| 19 | + | ||
| 20 | + info = {} | ||
| 21 | + | ||
| 22 | + info["data"] = {} | ||
| 23 | + info["data"]["messages"] = [] | ||
| 24 | + info["data"]["message_sent"] = json_r | ||
| 25 | + | ||
| 26 | + info["message"] = "" | ||
| 27 | + info["type"] = "" | ||
| 28 | + info["title"] = "" | ||
| 29 | + info["success"] = True | ||
| 30 | + info["number"] = 1 | ||
| 31 | + info['extra'] = 0 | ||
| 32 | + | ||
| 33 | + response = json.dumps(info) | ||
| 34 | + | ||
| 35 | + title = str(user).join(_(" sent a message")) | ||
| 36 | + | ||
| 37 | + simple_notify = textwrap.shorten(strip_tags(message.text), width = 30, placeholder = "...") | ||
| 38 | + | ||
| 39 | + if message.image: | ||
| 40 | + simple_notify += " ".join(_("[Photo]")) | ||
| 41 | + | ||
| 42 | + device.send_message(title = title, body = simple_notify, data = {"response": response}) | ||
| 0 | \ No newline at end of file | 43 | \ No newline at end of file |
api/views.py
| @@ -35,6 +35,8 @@ from django.http import HttpResponse | @@ -35,6 +35,8 @@ from django.http import HttpResponse | ||
| 35 | 35 | ||
| 36 | from fcm_django.models import FCMDevice | 36 | from fcm_django.models import FCMDevice |
| 37 | 37 | ||
| 38 | +from .utils import sendChatPushNotification | ||
| 39 | + | ||
| 38 | @csrf_exempt | 40 | @csrf_exempt |
| 39 | def getToken(request): | 41 | def getToken(request): |
| 40 | oauth = Application.objects.filter(name = "amadeus-droid") | 42 | oauth = Application.objects.filter(name = "amadeus-droid") |
| @@ -349,6 +351,8 @@ class ChatViewset(viewsets.ModelViewSet): | @@ -349,6 +351,8 @@ class ChatViewset(viewsets.ModelViewSet): | ||
| 349 | info["message"] = _("Message sent successfully!") | 351 | info["message"] = _("Message sent successfully!") |
| 350 | info["success"] = True | 352 | info["success"] = True |
| 351 | info["number"] = 1 | 353 | info["number"] = 1 |
| 354 | + | ||
| 355 | + sendChatPushNotification(user_to, message) | ||
| 352 | else: | 356 | else: |
| 353 | info["message"] = _("Error while sending message!") | 357 | info["message"] = _("Error while sending message!") |
| 354 | info["success"] = False | 358 | info["success"] = False |
bulletin/utils.py
| @@ -11,14 +11,11 @@ from django.utils.translation import ugettext_lazy as _ | @@ -11,14 +11,11 @@ from django.utils.translation import ugettext_lazy as _ | ||
| 11 | 11 | ||
| 12 | from channels import Group | 12 | from channels import Group |
| 13 | 13 | ||
| 14 | +from api.utils import sendChatPushNotification | ||
| 14 | 15 | ||
| 15 | from chat.models import Conversation, TalkMessages, ChatVisualizations | 16 | from chat.models import Conversation, TalkMessages, ChatVisualizations |
| 16 | from users.models import User | 17 | from users.models import User |
| 17 | 18 | ||
| 18 | - | ||
| 19 | - | ||
| 20 | - | ||
| 21 | - | ||
| 22 | def brodcast_dificulties(request, message, subject): | 19 | def brodcast_dificulties(request, message, subject): |
| 23 | msg = TalkMessages() | 20 | msg = TalkMessages() |
| 24 | msg.text = message | 21 | msg.text = message |
| @@ -54,4 +51,6 @@ def brodcast_dificulties(request, message, subject): | @@ -54,4 +51,6 @@ def brodcast_dificulties(request, message, subject): | ||
| 54 | 51 | ||
| 55 | Group("user-%s" % p.id).send({'text': notification}) | 52 | Group("user-%s" % p.id).send({'text': notification}) |
| 56 | 53 | ||
| 54 | + sendChatPushNotification(p, msg) | ||
| 55 | + | ||
| 57 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) | 56 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) |
chat/views.py
| @@ -24,15 +24,13 @@ from log.models import Log | @@ -24,15 +24,13 @@ 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 | -from fcm_django.fcm import fcm_send_message | ||
| 29 | - | ||
| 30 | from categories.models import Category | 27 | from categories.models import Category |
| 31 | from subjects.models import Subject | 28 | from subjects.models import Subject |
| 32 | from users.models import User | 29 | from users.models import User |
| 33 | 30 | ||
| 31 | +from api.utils import sendChatPushNotification | ||
| 32 | + | ||
| 34 | from .models import Conversation, TalkMessages, ChatVisualizations, ChatFavorites | 33 | from .models import Conversation, TalkMessages, ChatVisualizations, ChatFavorites |
| 35 | -from .serializers import ChatSerializer | ||
| 36 | from .forms import ChatMessageForm | 34 | from .forms import ChatMessageForm |
| 37 | 35 | ||
| 38 | class GeneralIndex(LoginRequiredMixin, LogMixin, generic.ListView): | 36 | class GeneralIndex(LoginRequiredMixin, LogMixin, generic.ListView): |
| @@ -373,44 +371,7 @@ class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | @@ -373,44 +371,7 @@ class SendMessage(LoginRequiredMixin, LogMixin, generic.edit.CreateView): | ||
| 373 | 371 | ||
| 374 | Group("user-%s" % user.id).send({'text': notification}) | 372 | Group("user-%s" % user.id).send({'text': notification}) |
| 375 | 373 | ||
| 376 | - device = FCMDevice.objects.filter(user = user, active = True).first() | ||
| 377 | - | ||
| 378 | - if not device is None: | ||
| 379 | - data = { | ||
| 380 | - "user_icon": self.object.user.image_url, | ||
| 381 | - "notify_title": str(self.object.user), | ||
| 382 | - "text_notify": simple_notify, | ||
| 383 | - "image_url": "", | ||
| 384 | - "message": strip_tags(self.object.text), | ||
| 385 | - "datetime": str(self.object.create_date) | ||
| 386 | - } | ||
| 387 | - | ||
| 388 | - if self.object.image: | ||
| 389 | - data['image_url'] = self.object.image.url | ||
| 390 | - | ||
| 391 | - data = ChatSerializer(self.object) | ||
| 392 | - | ||
| 393 | - json_r = json.dumps(data.data) | ||
| 394 | - json_r = json.loads(json_r) | ||
| 395 | - | ||
| 396 | - info = {} | ||
| 397 | - | ||
| 398 | - info["data"] = {} | ||
| 399 | - info["data"]["messages"] = [] | ||
| 400 | - info["data"]["message_sent"] = json_r | ||
| 401 | - | ||
| 402 | - info["message"] = "" | ||
| 403 | - info["type"] = "" | ||
| 404 | - info["title"] = "" | ||
| 405 | - info["success"] = True | ||
| 406 | - info["number"] = 1 | ||
| 407 | - info['extra'] = 0 | ||
| 408 | - | ||
| 409 | - response = json.dumps(info) | ||
| 410 | - | ||
| 411 | - title = str(self.object.user) | ||
| 412 | - | ||
| 413 | - device.send_message(title = title, body = simple_notify, data = {"response": response}) | 374 | + sendChatPushNotification(user, self.object) |
| 414 | 375 | ||
| 415 | ChatVisualizations.objects.create(viewed = False, message = self.object, user = user) | 376 | ChatVisualizations.objects.create(viewed = False, message = self.object, user = user) |
| 416 | 377 |
goals/utils.py
| @@ -10,6 +10,8 @@ from django.utils.translation import ugettext_lazy as _ | @@ -10,6 +10,8 @@ from django.utils.translation import ugettext_lazy as _ | ||
| 10 | 10 | ||
| 11 | from channels import Group | 11 | from channels import Group |
| 12 | 12 | ||
| 13 | +from api.utils import sendChatPushNotification | ||
| 14 | + | ||
| 13 | from chat.models import Conversation, TalkMessages, ChatVisualizations | 15 | from chat.models import Conversation, TalkMessages, ChatVisualizations |
| 14 | from users.models import User | 16 | from users.models import User |
| 15 | 17 | ||
| @@ -63,5 +65,7 @@ def brodcast_dificulties(request, message, subject): | @@ -63,5 +65,7 @@ def brodcast_dificulties(request, message, subject): | ||
| 63 | 65 | ||
| 64 | Group("user-%s" % p.id).send({'text': notification}) | 66 | Group("user-%s" % p.id).send({'text': notification}) |
| 65 | 67 | ||
| 68 | + sendChatPushNotification(p, msg) | ||
| 69 | + | ||
| 66 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) | 70 | ChatVisualizations.objects.create(viewed = False, message = msg, user = p) |
| 67 | 71 |