From fb9e1e408f31a33143413eb9a71d60e7a2385a32 Mon Sep 17 00:00:00 2001 From: emile Date: Tue, 13 Aug 2024 11:31:17 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1945600 -> 1945600 bytes osinaweb/firebase_credentials.json | 13 +++++ .../osichat/__pycache__/admin.cpython-310.pyc | Bin 590 -> 622 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 15338 -> 15294 bytes .../__pycache__/models.cpython-310.pyc | Bin 7026 -> 8698 bytes osinaweb/osichat/admin.py | 1 + osinaweb/osichat/consumers.py | 8 +-- .../migrations/0024_chatotification.py | 23 ++++++++ ...rename_chatotification_chatnotification.py | 17 ++++++ .../0024_chatotification.cpython-310.pyc | Bin 0 -> 890 bytes ...ification_chatnotification.cpython-310.pyc | Bin 0 -> 611 bytes osinaweb/osichat/models.py | 55 +++++++++++++++++- .../__pycache__/settings.cpython-310.pyc | Bin 3211 -> 3581 bytes osinaweb/osinaweb/settings.py | 17 ++++++ 14 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 osinaweb/firebase_credentials.json create mode 100644 osinaweb/osichat/migrations/0024_chatotification.py create mode 100644 osinaweb/osichat/migrations/0025_rename_chatotification_chatnotification.py create mode 100644 osinaweb/osichat/migrations/__pycache__/0024_chatotification.cpython-310.pyc create mode 100644 osinaweb/osichat/migrations/__pycache__/0025_rename_chatotification_chatnotification.cpython-310.pyc diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index c1f25419fa9b33e6765028590a52353a40a0e8ac..ccf96c7730b9fe037506452b7c7d8c463bc23eec 100644 GIT binary patch delta 4691 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 delta 17686 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 No~xd@cKY*6{~JF<`|kh% diff --git a/osinaweb/firebase_credentials.json b/osinaweb/firebase_credentials.json new file mode 100644 index 00000000..3c0ec108 --- /dev/null +++ b/osinaweb/firebase_credentials.json @@ -0,0 +1,13 @@ +{ + "type": "service_account", + "project_id": "yasour-13931", + "private_key_id": "60f5e3a2345e6d2252f0b87eec606a8cdffe4588", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCm9jffoWF8+745\nwvLH7IkxAbko2E9s8Jl72UqXlT8iv22w0mU18jjCWVz/Z35BhSrLk4oAodpV9q2a\nMHMYtT5ZCgNeV9Do98dO5xhizvRv+sqQKuYXRVyHBa39jYHoCFCuNQ8L71masVmb\nJugvmxiv4WZHjxwzLBoz/usj7VpBUxISRaG+g4W3UX+b0w6LKlNa7EJRJtOKIS4p\nUsmius9NcXuMqiKEWESY3muB1EQpWc2kmg6Xw8xSgdFFEIj3ctUVCEDs047F8ypW\nZN06XBshX56owEaGqNaSIFo3h0PFy4QckeYCueyt4H/4nyZ85YLZG4yj9kWCnsMW\nSsGQsr5tAgMBAAECggEABw+xR8I/yQUto6xAz99LYxj3T4isfUdEuoXzX2tWvv25\nIioX0TsEFwYoBn5GSveamn8MLmAqB4o2B+gmKgSaVTI098O/iGbYVVg1QhKOKIFD\nGWtTDWdn1ScSl39pX9qgLOn+D6tpDv+SslroJYFJ/0BJbtvY3bovBoVwxPV4JHyR\nKHFB8OI7V7B5SGincMzFNP6NoSekOYAOpAZRk0ZPv70CyKuyRb0COK0cZyJ8cF1K\nZFeEEiy99yShmtgqpEGfZsL8TaqfTauqevdPU2GnBxv325dy4DLAPQebHfrAn1pS\nfONqKdZDuYykBmcs50oAVS/ACZabvonKTLYA8iV+iQKBgQDcUCflPal151u5+Eie\nMgGo+pNP9vVo4NGOIqD4jBqQJKBRnZj2F0deKmV6HPSTnQuQDtftiq1XlvX7nZYC\nZ24wjm7PcLQpGXyOZDWn9dikFEaS8WSz7fDZLwmU0kB2Hdluv/hrJEqrbFepAMLq\n0gzz0GFn75dlMFGTsWMdzrUEtQKBgQDCAbbPuW4AlIUeM0JpYRr+3Jgn7NwEeX0N\nrGqBWYFfgQseL/O9KS2gwGlfdwhp7eLk4jfZuzRSVsWnA7LSEwey98BYGEPKOiWk\nLVCACe+auWtvLtIY4AJebpRAksyZ4NhCpSJyGDCJVl/NPkQ/sDYth8LftALDHz7/\n67kZP9xd2QKBgAczX3pwn39JBoh3gvgYrlE1j2cHrVG2N2Mr4pL9EUkwyUShoAQ7\nEowTWqm5FI1WjrAwrAIJjEzWlEebCPIfK0zO+vQwvNKzEI0e3VoWAPSr7PqUhTQU\nTNDsZqXEkXLK2vZxs87cqswbiGnvqm8+WkoFv4lEHXCjOadYHuM0hFoZAoGAZLC7\nDuiwnQB4boowJ71MY4ZeOiqGrpPXQaeAx42KxeSVvp8oo76hfdMfXXrMFR5wKlb2\noby1lR6QCvSydLGHx20qmQ5O8MBpFOKn6yw8/VLK3bOxO1PYJubBbxpBsoOt+jj2\nvbysRDteEYoFpgBwvgS+MZid7mNjMTRIp0ArwVECgYB8HJy0vJvyciTQ6qug5NXS\n4Q5geilYIfLNJJOdfN1s/F+2U3bfRkjjC4eQ+9klOCnGTQ3bwWfTll+BxRxgGmLj\nc0DUac45d5g1fu8W6szQDXn1rdHU2D3HFgWyCWlvVWUCEOmLzCcLEweyHqr/QCJT\nbN94GGUM4e3lU7Vhy7jMEw==\n-----END PRIVATE KEY-----\n", + "client_email": "firebase-adminsdk-f6oi5@yasour-13931.iam.gserviceaccount.com", + "client_id": "110869359640165866535", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-f6oi5%40yasour-13931.iam.gserviceaccount.com", + "universe_domain": "googleapis.com" +} diff --git a/osinaweb/osichat/__pycache__/admin.cpython-310.pyc b/osinaweb/osichat/__pycache__/admin.cpython-310.pyc index 935cc9d7a86111bd32088576c82046e84170a30d..66347c43e2799f09ea0f1d9e940d18cff2aa59dc 100644 GIT binary patch delta 86 zcmX@d@{WZ!pO=@50SFA3cBg%x$ScdZVxsnJj#S1h<^?RN0uv9ZFbYn5eop$9fOAG- piC=z6W?E))Vo7Fx-b#id5um;zk;(fQix_1l8!}0=@GuH60swaB88QF> delta 57 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 F_%{eBoOu8M diff --git a/osinaweb/osichat/__pycache__/models.cpython-310.pyc b/osinaweb/osichat/__pycache__/models.cpython-310.pyc index 636fc3c14f72c17390f016742145e729070f147c..86c48ab229b88d254631e72a343678d81e4e9421 100644 GIT binary patch literal 8698 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 SYoX<~s;v_KW?M5CO8*DAxQBTF delta 2825 zcmaJ?-H#L36`yO*mp{h#j=i?mUc&;R?EoPm0SX~4SvC+p4G9ZDZknyxJG+b-+vLnF zfn>o-77>L&5_A=*NU8F|%O)?0Dz#FgsEw+s{R8?m4^^c;?Q5H-N>n}PdITw2uyucP z?r-kLx##@Oo&QYzYiF)+S!o4-H%nj7ov7W;jkDbC&HDyPKh;XTq;Q=Z*A#BJtdm|! zwlc_=JcUduX0phnc?OwG%vi`|xrK}sGdW~(JdaF1X7b1s_y{s1F;hUs=0#+R#Jqx= zjUZLxqezX$gKT8Vyn;+6W{SvE`4}=|F;haO#_Pz`V`h{mPb$v1xWx8|udN#UotV(S z;_oS{(z5YIF)~hjffx2+WeZc3WfrBo?MpMh+nW#1t>iH@(@p|X_>9!vg72^V6-_5O zWVEw>yLTQkNUcy9V_p(qiEYOFg-8utf39WD`R)0c1@OhDq*utvp4V;9yTp~mitz=r z#V4l2s=xh%ImR+&+A!JneHat}OdZs1?864JExn7?MJK(Utr542%bT3Oc*13I|0QR$e+l#I8-0(BuXRrDT1TR#KCSNo+H?% zC<6udkoi1;3}cZj8B1F61#AKJbj+NZ80HUiILu!@&fn4g{4j+!?8UJ_vtW`Sfe@t+ z^uhJ!dq>>MGC`3sHFKjq?XC;Q#Jl$0jZtRmTsu65BE{;9jQ-hkXxGJ_E2LOhS7f-SBVH?no&ZgGO05`QiRtR;4rHfLU= znZG1>UGz(3tmo?`hn*E)mhS9$8tGOB%Pxd|zl+5pB>~UU=v@S>WRr_Kqd!`^N{VF6 zVLwefA^tu(p`Rx6S3)g6@ytOoIe|y;_;A09Lyn79xxro)tx7|DQhw>>Bgo-}cR!F# zC$p+dtm8d*x{ol-Ff9cy6a0eU1Oe3?92ZYks-s;r``7~FD6wS*UEFhU<^mEUQgEtYpG31gb+Z+JxX&|pwWEI6XuQ7YB@6Ecw(9vV~y6IRybX07s)_3-hhlgB~ zf<>jaXG6TVqSUl|DIDtA;BMIV{6IWi8EufaA+~_-byHE9treKffcV+lBV*z()kAwo zX-y~l!+nvFbupQPOqn`+PI-$v>hO?r#qZQ<7zOC;D~XyFX86h-k}x`tns zy;B|RIL1S_)iAmLe^WhDzaNQT*PX#?`jzT58GGx6WXQbk!#d_d!62xat0wwB0m*PLI-*41xTnHqmN2xkoGek$Y3Ax3u{M7q86IqBF5!%`Id;#}=1T z0n<@Jr33L!S$r|EL4OBLcu)LoV#{Qtb^@$R?O30?{_qYtOmC%LXmMGBvPghb4bl^e tD$rTs79P7IzFC+5$rISkDimH*enL!UtM*pAY){ylowjxS=j}{c{~wQPP>=us diff --git a/osinaweb/osichat/admin.py b/osinaweb/osichat/admin.py index 5d0fe1d5..c5adceef 100644 --- a/osinaweb/osichat/admin.py +++ b/osinaweb/osichat/admin.py @@ -12,3 +12,4 @@ admin.site.register(ChatMessageAttachment) admin.site.register(ChatMessageReaction) admin.site.register(ChatMessageSeen) admin.site.register(ChatRoomReview) +admin.site.register(ChatNotification) diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py index 8b7c35d1..d68a3f54 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -87,17 +87,13 @@ class Osichat(WebsocketConsumer): event = { 'type': 'get_chats_handler', } - async_to_sync(self.channel_layer.group_send)( - 'osichat', event - ) + self.get_chats_handler(event) if event_type == 'get_visitors': event = { 'type': 'get_visitors_handler', } - async_to_sync(self.channel_layer.group_send)( - 'osichat', event - ) + self.get_visitors_handler(event) def get_chats_handler(self, event): diff --git a/osinaweb/osichat/migrations/0024_chatotification.py b/osinaweb/osichat/migrations/0024_chatotification.py new file mode 100644 index 00000000..42ec0d60 --- /dev/null +++ b/osinaweb/osichat/migrations/0024_chatotification.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.5 on 2024-08-13 06:49 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('osichat', '0023_visitor_browser_name_visitor_os_name'), + ] + + operations = [ + migrations.CreateModel( + name='Chatotification', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('title', models.CharField(max_length=255)), + ('message', models.TextField()), + ('image', models.TextField(blank=True, null=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + ), + ] diff --git a/osinaweb/osichat/migrations/0025_rename_chatotification_chatnotification.py b/osinaweb/osichat/migrations/0025_rename_chatotification_chatnotification.py new file mode 100644 index 00000000..40228beb --- /dev/null +++ b/osinaweb/osichat/migrations/0025_rename_chatotification_chatnotification.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.5 on 2024-08-13 06:49 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('osichat', '0024_chatotification'), + ] + + operations = [ + migrations.RenameModel( + old_name='Chatotification', + new_name='ChatNotification', + ), + ] diff --git a/osinaweb/osichat/migrations/__pycache__/0024_chatotification.cpython-310.pyc b/osinaweb/osichat/migrations/__pycache__/0024_chatotification.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4cee47aceece8387e61589f4a36698c2b5977f48 GIT binary patch literal 890 zcmYjP&2G~`5Z+zeN$ezTL5Kq<1QJp%H3E(Z6C^gDR1 zMgb(Fl4MNMoMr)pv&bia&a5j#{36+r-E}x+vWK>wjAgQ>i2Bg^5`QJA4bUDpzQZ*` zyn#4Dyy^Y&NN%keM()d7SmtdPAN;Eii|rb#CMTkHqsNb*JmqJ~s@hb1T$!bXikG5* z|3+gQoNeyn52jXAHEG&(Ov&SY$KLFXLN^eL+VDvQq6X>u^GX$>TJcj@xfmlVq18ul zgEOec#zGU&MYXCmTwEd-BZ~ZqbFQJx>l4>4z*>=mi!e+MSa3AfqC9nBxzO4rS9!Ro z@y9lGX_j0_iLRlq-gTx5w6uq#f$Q1?e8x)7s3_BP6T1|5nUBc!!gjm?Fi2l_D)+*(h=*%G|WZC5*k| z$C+O5V2Xo%#=Y^z$hPOJ$}f2buf2z&M_3SEh7qH8*al7L7Tuuiclf7w+4vpeWaBp1 gwj4LKG)y#)*WI+*LyYHo&s&0DP@lr*+G2NuzeWrQQ~&?~ literal 0 HcmV?d00001 diff --git a/osinaweb/osichat/migrations/__pycache__/0025_rename_chatotification_chatnotification.cpython-310.pyc b/osinaweb/osichat/migrations/__pycache__/0025_rename_chatotification_chatnotification.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adb129984840805df880c631d9e0d21d563e1add GIT binary patch literal 611 zcmZ8fy-ve05VoDPgz_tam=Rl+1|irGLIQ~eiUeZGVx{p>T%0(>sjAMfBJmnL18?G$ ziC16%&Mt_;Nj`nw-Q|4W#d>L}L(taP%XLZ#d39vgLL`TH%oaL91XZMTIlmia%9T4Npn_6BnM*J=Lt%E|0$lP;3sAPBEBIFaOzLIK zd-wj7Tp6fM0)FAnVd^yaSU dd$B(LD{G2Yuz`*CryD!KheV9~$%||w_yU|ws@4Di literal 0 HcmV?d00001 diff --git a/osinaweb/osichat/models.py b/osinaweb/osichat/models.py index b8e0a152..fdc5c24e 100644 --- a/osinaweb/osichat/models.py +++ b/osinaweb/osichat/models.py @@ -4,10 +4,46 @@ import mimetypes import os from channels.layers import get_channel_layer from asgiref.sync import async_to_sync -import json +from fcm_django.models import FCMDevice +from firebase_admin.messaging import Message, Notification as NotificationFB +from django.utils.safestring import mark_safe + + +def send_notification(notification): + notification_data = { + 'title': notification.title, + 'body': mark_safe(notification.message), + } + 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}) + ) + else: + FCMDevice.objects.send_message( + Message(notification=NotificationFB( + title=notification_data['title'], + body=notification_data['body'] + )) + ) # Create your models here. +class ChatNotification(models.Model): + title = models.CharField(max_length=255) + message = models.TextField() + image = models.TextField(blank=True,null=True) + created_at = models.DateTimeField(auto_now_add=True) + def save(self, *args, **kwargs): + is_new = not self.pk + super().save(*args, **kwargs) + if is_new: + send_notification(self) + + class Visitor(models.Model): session_id = models.CharField(max_length=300) ip_address = models.CharField(max_length=300) @@ -42,6 +78,7 @@ class Visitor(models.Model): return f"{int(hours):02}:{int(minutes):02}:{int(seconds):02}" else: return f"{int(minutes):02}:{int(seconds):02}" + def save(self, *args, **kwargs): super().save(*args, **kwargs) channel_layer = get_channel_layer() @@ -51,6 +88,13 @@ class Visitor(models.Model): 'action': 'new_visitor' } async_to_sync(channel_layer.group_send)("osichat", event) + self.send_visitor_notification() + + def send_visitor_notification(self): + notification = ChatNotification.objects.create( + title="New visitor on Ositcom!", + image = self.flag_image_url + ) @@ -62,6 +106,7 @@ class VisitorLog(models.Model): visit_date = models.DateTimeField(null=True) left_date = models.DateTimeField(null=True) def save(self, *args, **kwargs): + is_new = not self.pk if self.left_date: action = 'end_log' else: @@ -74,6 +119,14 @@ 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 = ChatMessage.objects.create( + title=f"Visitor navigated to: {self.title}.", + image=self.visitor.flag_image_url + ) class ChatRoom(models.Model): diff --git a/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc b/osinaweb/osinaweb/__pycache__/settings.cpython-310.pyc index d3062be3b1a5982c3518c9f5a56c1edb323ab013..e598d4db773547f0407dc234d25b81328cf5db48 100644 GIT binary patch delta 829 zcmY*XOK;jh5cV3|U@(MN9)!FfB#=j&R?4BuAp|eT5dp*_hv~th8AFVML4Z=JmmG3y zPLXeIq=pP`WN~Sa_)bqR4Gz7L`Ch6W@hJ`-EU@Adlh+z`dVJEn`7(s!}r>^ z;I(gt!1YG-0tpIdLQ@2ha0YKkm*m#j=Nhht3uHsQd&8RqrWrQJh~}dlE)0<Co9>q zp4N)=AX%b%vQPj&Gx{+t9^@I2OCC`O<#SY5>9LlgdVv=8N{JR>Ql(j1rn;6(rpns! z-vcF>t`yWHOXPz&U9A+dTIw+>(u}UD_6NSC};~9wu{{yk4T^vX;w~20!E)nTN1ty#2QYyfnrx}YPGP_!i} z;xtGU2x z#S(`wPmT7|@{@Qjiq~c@d^HsvvWIzgnP0Y};x#N&PL}K`I~{9^~(OR`02Jv&r3z|*@u0? o=-{OI<6kG&{8fhUYY~~sQnr%Hw55{T(zW7CaO#;#{5LKB0d?(if&c&j diff --git a/osinaweb/osinaweb/settings.py b/osinaweb/osinaweb/settings.py index 88d5f350..be45d255 100644 --- a/osinaweb/osinaweb/settings.py +++ b/osinaweb/osinaweb/settings.py @@ -12,10 +12,22 @@ https://docs.djangoproject.com/en/4.1/ref/settings/ from pathlib import Path import os +from firebase_admin import initialize_app # Build paths inside the project like this: BASE_DIR / 'subdir'. BASE_DIR = Path(__file__).resolve().parent.parent +FIREBASE_APP = initialize_app() + +FCM_DJANGO_SETTINGS = { + + "DEFAULT_FIREBASE_APP": None, + "APP_VERBOSE_NAME": "Osichat", + "ONE_DEVICE_PER_USER": True, + "DELETE_INACTIVE_DEVICES": True, + "UPDATE_ON_DUPLICATE_REG_ID": False, +} + # settings.py @@ -44,6 +56,7 @@ INSTALLED_APPS = [ 'daphne', 'support', 'rest_framework', + 'fcm_django', 'osinacore', 'customercore', 'addressbook', @@ -167,6 +180,10 @@ MEDIA_ROOT = os.path.join(BASE_DIR, 'static/images') DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' +new_credentials_path = "firebase_credentials.json" + +os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = new_credentials_path + EMAIL_HOST = 'osinamail.ositcom.com' EMAIL_PORT = 587