From e51170c7500234ed218e791128fecff537a352a9 Mon Sep 17 00:00:00 2001 From: emile Date: Mon, 12 Aug 2024 16:57:57 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1945600 -> 1945600 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 15067 -> 15338 bytes .../__pycache__/models.cpython-310.pyc | Bin 7026 -> 7026 bytes osinaweb/osichat/consumers.py | 34 +++++++++++++----- .../api/__pycache__/views.cpython-310.pyc | Bin 1519 -> 1519 bytes osinaweb/osinacore/api/views.py | 1 + .../__pycache__/models.cpython-310.pyc | Bin 8648 -> 8662 bytes osinaweb/support/models.py | 13 +++---- 8 files changed, 33 insertions(+), 15 deletions(-) diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index feeaf72ea124584baea1463d57b6bbed95daffeb..c1f25419fa9b33e6765028590a52353a40a0e8ac 100644 GIT binary patch delta 8251 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 BErtL9 delta 3494 zcmai0eQaA-759C9e*S*`iW4VonlC%E(~z`j+O2JdKrNj%N>{ehmh{8&dfmj2CT_1^ zS}lE6Q0+#bUv(#+RQVkt`L&uWbXDJ0X=dv6|nESt^i0398bDE`WbsShf=Qbmj z`!t*LSnj&7hX=+SmK(f1JUHesqn4ZNrxh^`vY64b_&evdyha?JR(RShZ`nuy(+*Du z4=rfm9ELDjWrgKA&zR%bCt>-OW~Z@=M=Xs;7ZkIL$L1B@G7nnrc+z2Z^SI^Wt@Fy9 z&$g|gt&g`YDCgOdT_&-k)_Q0%XHMlyrQAe5o8>t(pOr&_m*vgC`>aR48az0-7l5e+ zj^s*acIGG=aPdVD2?R`dQR$w{m2##j#JEiBX>C6$4#?eln)zi}kC$tzC>E#0A(S6P z2QMy~Md7#?DXyCnt*FlX7YYxJ%kzfeTFiqLT?BpAWD0 zm*7nxuwswA5gznsk<9^_9gqiu33<6qm5E5`;io{9QAG;XCX!=F5Ti^?xRF1Mq<~~A zkeYuBtob?nIOYDxfWL^UwMdT2*CNR-TA8BI@^q4PFtccrm$xFTwO4>G4a!h7E(fDu zV7KJ6(NC54L8-eeCzSdFQ1Y&d&(aJ(JOS>;s$vc^XlV$osT-={0`NTZ&Z8!LA&gykvj#Xrkh1GcO<*G3N?h-i0WqKjd+h%M&Tj( zwfN}6%N6;fpuP-GX#$c0;iRBEX4*#Az9#v<$@>1((q<3Ag{4Cg+4wG4ovvvnp z03L-qX+SvvQ-!NApwcEt0C^Q8s_8N`?y^+y(7?mJ;56NEN(%Qju=c=+b3z#_G~~de zf*y+DwSC}(0#xYU`BZ(_WP&?tzB+>0dZF8`yay7LyW2*>^T3Fu5>MAlJTlf?-d{l@ zvZV6%+2uWo(#E8@2h-cbU11s-RK72uVP5V^48=bHw$u+KT*nXxf_yWP_dkP12(~Hc}8e@m$(Nu4ShH^Km4<4E2HQqvcKdLn)yOSAM>D5Db$EZ(nl%~8fEKgOdRy~s5s zDsK-b`zWQ~qGq|g&V!<-x^>NNw({F(LkKG3r^qjX_olqEcGc1)Aa2S(t{u<_w-01! zq_>NT<=&dOCy|{a$uz~JY<_pYY`z7GN2?1XBdq^>i`fY5eK^#gp@8PVQeGG3Ki4J0 zgbHcuHJu*q|12ekHMsaOK=o(?h|-{a)bC={`zMat3-a7(GEK`<_P5~Prr{4WJ3YN0RyKAu|Nxzu>hQ2kFK1TzeSch)(>GCm{n~(bBhK@9? zN{djU%jNhs#CoRs?uIZc&tO;@9`%l)mZbFFLlvel?#oZ}JkR1Zq8pw*xiS$u9jd{V zXxoW|s_}i`YC$tErV7*e<(qx#Y0-_^kIxhA8XF83a!q@I*XGuufoOjUFSnyBVE&3c z`_QH6HH=d);2X%7! delta 20 acmexl_Q{MppO=@50SF#`+`5rFT^ayK#0Ing diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py index c43c6e8a..8b7c35d1 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -78,7 +78,6 @@ class Osichat(WebsocketConsumer): event = { 'type': 'get_chats_handler', } - if data.get('whereAmI') == 'Chats': self.get_chats_handler(event) else: @@ -112,7 +111,6 @@ class Osichat(WebsocketConsumer): for room in chat_rooms: room.number_of_unread = room.unread_messages(user) - room.last_message = room.last_updated context = { 'chat_rooms': chat_rooms, } @@ -120,9 +118,13 @@ class Osichat(WebsocketConsumer): if self.client_type == 'mobile_admin': chat_rooms_data = [] for chat_room in chat_rooms: + last_message = ChatMessage.objects.filter(room=chat_room).last() room_data = model_to_dict(chat_room) room_data['number_of_unread'] = chat_room.unread_messages(user) - room_data['last_message'] = chat_room.last_updated + if last_message: + room_data['last_message'] = model_to_dict(last_message) + else: + room_data['last_message'] = None if hasattr(chat_room, 'chatroomguest') and chat_room.chatroomguest.visitor: visitor = chat_room.chatroomguest.visitor room_data['visitor'] = { @@ -159,6 +161,11 @@ class Osichat(WebsocketConsumer): } if self.client_type == 'mobile_admin': chat_room_data = model_to_dict(chat_room) + chat_room_data['visitor'] = model_to_dict(chat_room.chatroomguest.visitor) + if last_message: + chat_room_data['last_message'] = model_to_dict(last_message) + else: + chat_room_data['last_message'] = None self.send(text_data=json.dumps({ 'event_type': 'new_chat_update', 'chat_room_data': chat_room_data, @@ -182,16 +189,16 @@ class Osichat(WebsocketConsumer): if self.client_type == 'mobile_admin': visitors_data = [] for visitor in visitors: - visitors_data.append({ - 'is_online': visitor.is_online, - 'duration': visitor.total_duration, - }) visitor_dict = model_to_dict(visitor) - visitor_logs = VisitorLog.objects.filter(visitor=visitor) + visitor_dict['is_online'] = visitor.is_online + visitor_dict['duration'] = visitor.total_duration + visitor_dict['flag'] = visitor.flag_image_url + + visitor_logs = VisitorLog.objects.filter(visitor=visitor) visitor_logs_data = [model_to_dict(log) for log in visitor_logs] visitor_dict['visitor_logs'] = visitor_logs_data - + visitors_data.append(visitor_dict) self.send(text_data=json.dumps({ @@ -209,11 +216,20 @@ class Osichat(WebsocketConsumer): def new_visitor_update_handler(self, event): visitor = get_object_or_404(Visitor, id=event['visitor_id']) + latest_log = VisitorLog.objects.filter(visitor=visitor).last() context = { 'visitor': visitor, } if self.client_type == 'mobile_admin': visitor_data = model_to_dict(visitor) + visitor_data['is_online'] = visitor.is_online + visitor_data['duration'] = visitor.total_duration + visitor_data['flag'] = visitor.flag_image_url + if latest_log: + visitor_data['latest_log'] = model_to_dict(latest_log) + + + self.send(text_data=json.dumps({ 'event_type': 'new_visitor_update', 'visitor_data': visitor_data, diff --git a/osinaweb/osinacore/api/__pycache__/views.cpython-310.pyc b/osinaweb/osinacore/api/__pycache__/views.cpython-310.pyc index 7f0d429fcb2dfebbe1d1f62ecc3ce13e6407de90..1e267ae0c6d7e27d32a3cb152af6b78bb7031ddc 100644 GIT binary patch delta 29 jcmaFQ{hpgIpO=@50SH!#>`Iem+sMbm%E&ZXn)M0*ZNdid delta 29 jcmaFQ{hpgIpO=@50SNLWwx>N}-N?to%E&lbn)M0*b5I9) diff --git a/osinaweb/osinacore/api/views.py b/osinaweb/osinacore/api/views.py index 5fcfcc59..cdc175f5 100644 --- a/osinaweb/osinacore/api/views.py +++ b/osinaweb/osinacore/api/views.py @@ -22,6 +22,7 @@ def login_user(request): future = datetime.utcnow() + datetime2.timedelta(days=183) futuretime = calendar.timegm(future.timetuple()) encoded_jwt = jwt.encode({"username": username, "exp": futuretime, "is_superuser": serial.data['is_superuser'], "userid":serial.instance.id}, "ibiye4700", algorithm="HS256") + #encoded_jwt = encoded_jwt.decode('utf-8') return successRes(msg={"token": encoded_jwt,"first_name":user.first_name,"last_name":user.last_name,"email":user.email, "id":user.id}) else: raise ValueError("Incorrect password!") diff --git a/osinaweb/support/__pycache__/models.cpython-310.pyc b/osinaweb/support/__pycache__/models.cpython-310.pyc index 49c194bc63c5338d0ede1a5dc4418df9dfa7fbba..f1780e0096316072ab25cd2f6d23745e822b05bc 100644 GIT binary patch delta 1751 zcma)+YfKzf6oBW>&MwQofPJtJSRPGNI);ZOXpE_k?b2FOvuGA$f|7O0%)$aYyFD|s z78j+W*0!-Ny_(iWDJ{{Iphi;@t^PB{_|sqhnE1oLCMHIWF(JOrnZ-rXMj`Xl`>L?W<|W->x)z0b zsUoh_SEQ?K-f4O&&PB$5^55p46e_})bDmY$lyHG}2YRFRdkxJTFBQx8E}(BiL(LXJ7-X2vkwVa}=nkswwyMcin4m4UGRVyoC7B$_p>L)ZaXP8PpZ#if6LP_Tv zfr>|zSR-?Z9?^Ycp<%bk&hxdV;m42QE^riK)s2IOu2mQ$)iF{z%|cNF=pe-`p_8;B zL(|oqQJBz`nOsTF8Ol-ZB{cj0t@`xmR4R4p7ho>fv33`O2seI>VUo4 z#Y7Cu^;=kyHsBP0I1%RMP_|D&BOE4-6DSujfv`M-Tj#7xr?TnP;C>k6KZH_jl@Ejq zY>_XA`#Yb8J90h`F;pW`NE6_ln!Vigb9s=vxIYmS9nJv<{U-wef~-FEb$HcQS+4X<$-pbQOrM=0^dd%}kHmgNMs9?^$7BVvBdL)`vbprZ;i2^Y z>{jlovDl&60jc=C9A%Z>~z;_qls*N#yEqTk%4qN|t@SV99_;74LT-mge}nXp_-^k=dAy6Auz z*|Y6H|2P2ej?0lNxb_=-3>U&JG_o**D>ZL7+kAX35#p6dgnt}Qq{#CKbR#pe|G)g> zs_Ko|DQTkDv%ER6i+#uMNt_tn^0j#b4gcGrM!xcdTDIYJ+dttPC7R#fBC((O9W8qt zAP9VKQ!)<*Sxtm2LKn#mgbsq;m9|8!X?Lx_PS8C=H`CHc*^sR!ReyDVDXAzdxx^BUk_ zg}19ZM^;hc9h67x3b1>!+LF}@-dN zG`CTBG*qeIg4l0ZXcLf delta 1641 zcma)6-EUK67(egX>Bri&>$+}jx0Y=}9EZpTlXw9}Q#uGR(~-1>WMXQ!o-SRtwm#M`o3V^^CYv>~dLw@0-Pi8Q8s!XFQ%2FMHjW!s+O#sc96FmTE}@Agp{YJqTff-6 zQx%u+Zp-kl63K%_P<4!fL2_9bffp?j`hns=t!ncXm&CpbB z)7cOZWX2MiVTg11ZQGK#i-+5L4?oeIrX&ShHp zkv_ADz^Q1$XY&a^6$~unfl##ZB2DWJ37E%BC}h7xBe;y^NEhA=dELMA@Cw6qnb@C0 zFZQxG3ElOW_5ZRK_lNbi8?^U#`b;~4Q}Ky_fE!Y2Ih=^GQVO0SOz58f(xY9qbVz?& zcz7OnbUZEY;ZVo?$d=ZF@HYQ%!7Cc_NFTMXR{@{~LNrbO*AjR< z5@<9|(E~s?&f|edzx{3A^bVzKx7#L&zR%+o8Q||CL(~8*(bi`lEwhIb#ZJkJuX?Qf zSb^S@=`z1NP{0$>y}?yl_LHjVB*Mw#Kdj=X(VI`!lx?$Bs`84@`JPcMZ`&TcMKrjj z8K8pj3%G^pjwpV=ZQ`XbXkAyU?xV$QK9@6qoP{rIa}CK%7VZ#F$qdVes`XQ?A|J1y z5uEJ`>ip!?@+yrA^HBDWlitKJD_<%?%|=dhc#W2$Y#u*^+$?@-7OL5`^?O|d;vnY* s78zb)SYqJU0JzEEIs;cc3^7RA6=obrV9#NVZVBQ{&pr{uuX=X=1AB{WkN^Mx diff --git a/osinaweb/support/models.py b/osinaweb/support/models.py index eda0dfa9..0c8172a2 100644 --- a/osinaweb/support/models.py +++ b/osinaweb/support/models.py @@ -125,16 +125,17 @@ class Ticket(models.Model): def get_all_ticket_staff(self): ticket_staff = TicketStaff.objects.filter(ticket=self) - staff_members = [entry.staff for entry in ticket_staff] + staff_members = {entry.staff for entry in ticket_staff} + latest_department = TicketDepartment.objects.filter(ticket=self).order_by('-date_added').first() if latest_department: - department_staff = latest_department.department.get_staff() + department_staff = set(latest_department.department.get_staff()) else: - department_staff = [] + department_staff = set() - all_staff = list(staff_members) + list(department_staff) - - return all_staff + all_staff = staff_members.union(department_staff) + + return list(all_staff) @receiver(post_save, sender=Ticket)