From ae79fb555fe88967017a5d90e7e03acf4908a579 Mon Sep 17 00:00:00 2001 From: emile Date: Thu, 11 Jul 2024 20:51:02 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1560576 -> 1560576 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 4599 -> 5207 bytes osinaweb/osinacore/consumers.py | 21 ++++++++++++++---- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 6b245f4bb7b2f19904f3f9be80577dfacf23ed54..9ef5d001360ac9a2a0b97718c6cf19bc38a12c71 100644 GIT binary patch delta 103 zcmWN=ISqh76a~O6_j2D2xS>J-HBSl@FSOtQ6J&MZ00(P3(qA7qPlbaWV-$y^q)l$ESyBU{-SWBd900Tz-hYybcN delta 103 zcmWN=ISqh76a~O6_j2D2xS>J-HBSl@FSOtQ6J%vz0S9Y=Kgn$Oy4~wJsP`Ht_3j`P s;Set25k3(RArTRph>3(qA7qPlB7GQ}$y^q)l$ESyBU{-SWBd900Tm-GXaE2J diff --git a/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc b/osinaweb/osinacore/__pycache__/consumers.cpython-310.pyc index 26ed036c0ed023056fbb54fa3d7f456814b02f26..f066c1f1f3fb98d7ac3001109b156abd0ea2f01a 100644 GIT binary patch delta 2375 zcmZ`)-ES0C6rX$Nb7!a9F0BPDEx}U5q7)QR!BPs8@}ZPsi@{c0*1gkZH`ASZXIh}y z%_deKn_#YwkhI2V`XVv@2|nSA;mPFs7x-kN4<;rA&$+woZmaHOeskvBbIv_;&+nZ5 zYw(u?sj#EN)!?_%cYi+U{yue$)F`|faG!%a`V^p|l{7|n!!t`_TGC4fXb7WgWZm4* zs-!~rV1>Y{#dKJ)vNl5tE9)SxCpI*qm0jiODo>r6YZUF{B)og2j#a`ekW#CZXxA#* zdMCQTvkRY0o7OV+q%@WypKlWGKuR+cn^XzX3d=#U>`Sly%%V}0NlP=zhl{?l5e1|F zs5F9H6iYWBmdk!VE{0{Egh0|`MX*#lpGhOiE&I~Sb3YgR;xW0jFGE4;2lKMqzgvvr zV!4oQh1k@1zZjr*dS8T49_b+lv4{f~$ke6cA${1%cfcC&M(6<$v-)w;C+_P5ef_9Y zFaVNtTbb+;kM%Ea@dT(RGD)67!%l=Q1UvwqMo>`)QBs@W2dPas=98hkuer2!Fa9zt z42mblm6{Dwv)YUB5<_j*X}zu`ovAukX@!7{m$63I4Q6f-rZMYtx?8L2v00(31W;ck zJGH98Z03BXRp_|3N~$JHR7~bRpj9iz8rvlYs-3J@SZk)8fZBSKGf-AcegbmF=WH5_ zm5qGAoXr-a@=_42xQCj$-%PL(Y4e3!(;)nb$65fo+_aF3CCL8^`U#z`pY3y=&?4KU zk`5oKAJx|LknTtT#m$Eci=#&{B=$g$wsJ!JWDfNXj|5>p7eu2VJhzeqqR$?vK}aLM zx9H2RcKT(DEaD!7$Rt{|lX@-)Q~{+Ea^~~w$M=Ag5RhA7%6kE%Tj1f+B7At6Wo%VG znQYN5n%&XZrlG3=jicG_aDEG$TW$3DEwd>Gf=V0HZ1z-GX4l!h@niZoUFsJ~|iXy4fSYxz8 znZ8D=I2T}ctOI{4dW9f^3fcx`)&m`wWUrA%n>&-UJ^7_54j15j+CE&2SW|~o{+qgV z)fZ&dxf{3Rg`mDbWFq$O##xq&a~V@SvUXjRdclt~M!gS4AU%ExVGLm_1Nc$Up+$r( z=1}9Ar#png<&v(a!m{Tk_M%q?0lPMxBm2b#RE}I8%{;`zpu*jJhon ze#m=bCh^@)j(N&N6zAfl2&kJOd>AxhuRB+RemsrNV+dyewoIcpQH$r*7{${n1fM_+ zwkSth@NtCm01ZZSRfrp?y^ioc!YPC?g!VkeA8rr1A?)PYOBZnMBEltvRxxI`Iw^OY zr~EPi+D3TLssxT_@ylY) z>KX#hp6yO}s%6yAh$r6HCO-%=4yt3y_|>MzA(Rd`Ut3AP2D)X`zYdPScbp`r#lh6^ z8b5|Q+#5y;9;h^fFb7j++h2n^`WB~7qJvc@!CCY&usQhKAgZ3JmtyOOOPl+7zqss2 zVAU80Km46ak=o6s8+Lk~4j$i!@=E|JxX(Yp_tu})Tlo4PWKb-5o*ObknsLZ-_jn#1 zP9cmTw32gGRX+k{O?=gLed>Q1kwZVUYjaj%RDd~Hn1?$;+ACVvj_G-PPFzSICgb8x a`q=*c=!`9_NW{_QU$Ml`=^_1ePyau1xb2Jp delta 1749 zcmZ`(&u<$=6yBL#+w1k(v759FB#zpo30+E)G$btrmz1IaX;l*xKtKuB;+-TLx!y3l zNlE3%LWN_6s_6-V)SQres6ZUJa6sZOh*YW4TzclprMJR+vrZhM#MXS8nfG(w_uf1? z{cI=~WV4nAzvKUWzxYenuelFMj=)ie^){?_n5!+ASiDkkuAj8b2cbrngKRBsQ^hv9AAgLR!_JUT4+F z59-qPd@xo==7E*F&cvWGMGE2*W1#N{*l`8ju#;9t`KY*O+_xN}g1+Nq#277JR|jd- z+%V!VqG>O}3uu~*Q|5hm(*@vAUf7YwA$H^N0TA?y?-JL=4;gzj#G^+%>XS_pX$@_K ztk65e(;MUtZI{M?(nK4pOb&?c^gx-XF@nyM7$E~7ttB3;tyV%-_u7$Vf~~W9v_CfH zb_!OA>=+5-U#Qx&St_9`Ma(O(@wH7FK~4?o(Yth0$DAViK!==k&-jsU5ifC0rQ1;){$wa}jneqhl?zapkdfT<$49tv2^34)BCo&j{OoR0N)|qxlGc zOox#ht%ViebBLtAC${YyO^#e}EQ6EbgSa0;UEQtKIC2>GV{%@ZN_~k%Jb~Be5GD{_ z1#nV(3O<9kZy_Mrht^-_>+Dvp(oRazdQJS9y)rwAR#OP)5jsT7;;~b;xcqo`0iXmc z#E&&KlK>YQq2#eYH)M)O&>Hv3ecn7J`dpr#a8|(IV*n8Pc^~YOCXW?y^kC4 z9jcFT(uy#ds0A)u?UEhy{2mx~T8=w#bdoWv(|gXjN!6bst@(cGaO_aUk%y$sol|X>G84AV kuZo|$$H;_u(mi>qA3dZHut}B49&%$}VytIapXe$62ZBOX$^ZZW diff --git a/osinaweb/osinacore/consumers.py b/osinaweb/osinacore/consumers.py index db47e615..3451ba66 100644 --- a/osinaweb/osinacore/consumers.py +++ b/osinaweb/osinacore/consumers.py @@ -10,7 +10,14 @@ import threading class OnlineUserConsumer(WebsocketConsumer): def connect(self): self.user = self.scope['user'] - + existing_connection = Connection.objects.filter(user=self.user).last() + if existing_connection: + self.connection = existing_connection + self.connection.online = True + self.connection.disconnected = False + self.connection.save() + else: + self.connection = Connection.objects.create(user=self.user, online=True) async_to_sync(self.channel_layer.group_add)( 'online_users', self.channel_name @@ -34,11 +41,17 @@ class OnlineUserConsumer(WebsocketConsumer): self.modify_online_user() def modify_online_user(self): - + connections = Connection.objects.all() + online_connections = connections.filter(online=True) + offline_connections = connections.filter(online=False, last_seen__isnull=False).order_by('-last_seen')[:5] + sorted_connections = list(online_connections) + list(offline_connections) + online_users_ids = [connection.user.id for connection in online_connections] event = { 'type': 'online_user_connection_handler', + + 'online_users_ids': online_users_ids } async_to_sync(self.channel_layer.group_send)( 'online_users', event @@ -46,13 +59,13 @@ class OnlineUserConsumer(WebsocketConsumer): def online_user_connection_handler(self, event): context = { - + 'customer_connections': event['customer_connections'], } html = render_to_string("details_templates/partials/recently-online.html", context=context) self.send(text_data=json.dumps({ 'event_type': 'online_user_status', 'html': html, - + 'online_users_ids': event.get('online_users_ids', []) }))