From 855584aca5161707dfa5c3bcf7bc6b830b84013d Mon Sep 17 00:00:00 2001 From: emile Date: Sat, 17 Aug 2024 14:53:26 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1957888 -> 1957888 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 16634 -> 16634 bytes .../__pycache__/models.cpython-310.pyc | Bin 9714 -> 9770 bytes .../migrations/0027_chatnotification_type.py | 18 +++++ ...0027_chatnotification_type.cpython-310.pyc | Bin 0 -> 700 bytes osinaweb/osichat/models.py | 70 +++++++++++------- 6 files changed, 63 insertions(+), 25 deletions(-) create mode 100644 osinaweb/osichat/migrations/0027_chatnotification_type.py create mode 100644 osinaweb/osichat/migrations/__pycache__/0027_chatnotification_type.cpython-310.pyc diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 506d9c6c8a7df9ef6a9b4f7a7ef996969e580a23..766342e0f7772782cd836bb2c3f155ee49025735 100644 GIT binary patch delta 379 zcmZoTP~LE$e1f##7X}8#dkk>EqCZi`nDNWTglru~q2@C>?PqitftU%1nSq!Eh*^P{ z4T#x+m;;D8ftU-3xq+AmhnSYrDb9ZAz- zea6EKf($_n+|#(8ah7l#;*eqc!nTx^kL56n1amRdNuIfUFBpP&cQZ=x)B~OBInhyO zyUzm2az+*&Uq-g=#}`U=a4|6iOb=Wm>BHS5)sn|9Zfncb>^lA2Ldjo}Itof9l?ACv z3T25!$r*`78Wx%gexW`-n(e#SN&>MI5KC|0y;jCkNPvycl7W9ce-__Az8!oue3qL9 z8&vt69h!t#8KfN@^NTZq29y{W7@5a|7-caV%6<@l4`@-*C2nIQ7G+KdMU8;daO6;{pE|?T zp&)?_3aF5QENGAe9r9p60T`H21Pe;A0;^DlHK;%}P946}-7rji6$ZnLF$^v3Om>u@R To>}l@g&j5w=5`#+HwM-(=5KKt diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc index 3506914b84b292a0fbba74569cabea2192399c29..2e59f5e2c9b409012e1757570ef8de1a2cc52b28 100644 GIT binary patch delta 48 zcmey>$oQ*~kt?5$oQ*~kt?5FXO>8tECDS?C$+85)>bSr`}?Y&KFjp#T6K C1`9?2 diff --git a/osinaweb/osichat/__pycache__/models.cpython-310.pyc b/osinaweb/osichat/__pycache__/models.cpython-310.pyc index 668ae231ae2fcccc7ad7c68441d8e9e82d6b7e88..a9783a52fc04affc95539a471d873c1797234813 100644 GIT binary patch delta 4175 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 L<|D_pxGw(y(`Li! literal 0 HcmV?d00001 diff --git a/osinaweb/osichat/models.py b/osinaweb/osichat/models.py index f0627eec..d1d01a38 100644 --- a/osinaweb/osichat/models.py +++ b/osinaweb/osichat/models.py @@ -9,57 +9,74 @@ from firebase_admin.messaging import Message,AndroidConfig,APNSConfig,APNSPayloa from django.utils.safestring import mark_safe + def send_notification(notification): notification_data = { 'title': notification.title, - 'body': mark_safe(notification.message), + 'body': mark_safe(notification.message), } + sound = 'default' + if notification.type == 'Visitor': + sound = 'https://osina.ositcom.com/static/notifications/new-visitor.mp3' + android_config = AndroidConfig( notification=AndroidNotification( title=notification_data['title'], body=notification_data['body'], - sound='default' - ) + sound=sound + ) ) apns_config = APNSConfig( - payload= APNSPayload( + payload=APNSPayload( aps=Aps( alert=ApsAlert( title=notification_data['title'], body=notification_data['body'], ), - sound='default', + sound=sound, ) ) ) if notification.image: FCMDevice.objects.send_message( - Message(notification=NotificationFB( - title=notification_data['title'], - body=notification_data['body'], - image= notification.image, - ), data={"image": notification.image},android=android_config,apns=apns_config) + Message( + notification=NotificationFB( + title=notification_data['title'], + body=notification_data['body'], + image=notification.image, + ), + data={"image": notification.image}, + android=android_config, + apns=apns_config ) + ) else: FCMDevice.objects.send_message( - Message(notification=NotificationFB( - title=notification_data['title'], - body=notification_data['body'], - ), - android=android_config, - apns=apns_config) + Message( + notification=NotificationFB( + title=notification_data['title'], + body=notification_data['body'], + ), + android=android_config, + apns=apns_config + ) ) # Create your models here. class ChatNotification(models.Model): + TYPES = ( + ('Visitor', 'Visitor'), + ('Chat', 'Chat') + ) title = models.CharField(max_length=255) message = models.TextField() image = models.TextField(blank=True,null=True) created_at = models.DateTimeField(auto_now_add=True) + type = models.CharField(max_length=8, choices=TYPES, null=True) def save(self, *args, **kwargs): is_new = not self.pk super().save(*args, **kwargs) @@ -119,9 +136,18 @@ class Visitor(models.Model): self.send_visitor_notification() def send_visitor_notification(self): + first_log = self.visitorlog_set.order_by('visit_date').first() + body = "" + if first_log: + if first_log.title: + body = f"New visitor navigated to {first_log.title}" + elif first_log.url: + body = f"New visitor navigated to {first_log.url}" notification = ChatNotification.objects.create( title="New visitor on Ositcom!", - image = self.notification_flag_image_url + body = body, + image = self.notification_flag_image_url, + type = "Visitor" ) @@ -148,7 +174,6 @@ class VisitorLog(models.Model): return f"{int(minutes):02}:{int(seconds):02}" def save(self, *args, **kwargs): - is_new = not self.pk if self.left_date: action = 'end_log' else: @@ -161,14 +186,9 @@ class VisitorLog(models.Model): 'action': action } async_to_sync(channel_layer.group_send)("osichat", event) - if is_new: - self.send_visitorlog_notification() - def send_visitorlog_notification(self): - notification = ChatNotification.objects.create( - title=f"Visitor navigated to: {self.title}.", - image=self.visitor.notification_flag_image_url - ) + + class ChatRoom(models.Model):