From 80c0ddb33da668b7e355081f46b11e1307298580 Mon Sep 17 00:00:00 2001 From: emile Date: Fri, 9 Aug 2024 13:02:47 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1945600 -> 1945600 bytes osinaweb/input.css | 1 - .../__pycache__/consumers.cpython-310.pyc | Bin 14218 -> 15015 bytes .../__pycache__/models.cpython-310.pyc | Bin 5675 -> 7040 bytes .../__pycache__/routing.cpython-310.pyc | Bin 459 -> 511 bytes osinaweb/osichat/consumers.py | 38 ++++++++-- .../migrations/0022_visitorlog_title.py | 18 +++++ ...23_visitor_browser_name_visitor_os_name.py | 23 ++++++ .../0022_visitorlog_title.cpython-310.pyc | Bin 0 -> 663 bytes ...owser_name_visitor_os_name.cpython-310.pyc | Bin 0 -> 726 bytes osinaweb/osichat/models.py | 50 +++++++++++-- osinaweb/osichat/routing.py | 1 + .../chat_templates/partials/new-visitor.html | 24 +++++++ .../chat_templates/partials/rooms.html | 3 +- .../chat_templates/partials/visitors.html | 49 ++++++++----- osinaweb/static/dist/output.css | 15 ++-- osinaweb/static/js/osichat-admin/rooms.js | 66 +++++++++++++++++- .../osichat-admin/update-visitors-duration.js | 27 +++++++ osinaweb/static/js/osichat/visitors.js | 47 +++++++++++++ osinaweb/static/notifications/new-visitor.mp3 | Bin 0 -> 36096 bytes 20 files changed, 328 insertions(+), 34 deletions(-) create mode 100644 osinaweb/osichat/migrations/0022_visitorlog_title.py create mode 100644 osinaweb/osichat/migrations/0023_visitor_browser_name_visitor_os_name.py create mode 100644 osinaweb/osichat/migrations/__pycache__/0022_visitorlog_title.cpython-310.pyc create mode 100644 osinaweb/osichat/migrations/__pycache__/0023_visitor_browser_name_visitor_os_name.cpython-310.pyc create mode 100644 osinaweb/osinacore/templates/chat_templates/partials/new-visitor.html create mode 100644 osinaweb/static/js/osichat-admin/update-visitors-duration.js create mode 100644 osinaweb/static/notifications/new-visitor.mp3 diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 2491d07ff51bdd02c3e1facb2a16aacf4ca12c70..fb41427b8f806041ed7c6ac64289770295289da3 100644 GIT binary patch delta 43627 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 P;hcha?b~DR0}KBjXh9KT delta 22832 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 UvC>m~Q_2SXx?b99?|0n#e^yocDF6Tf diff --git a/osinaweb/input.css b/osinaweb/input.css index 090b9a05..51022c54 100644 --- a/osinaweb/input.css +++ b/osinaweb/input.css @@ -439,7 +439,6 @@ .onlineDot { width: 15px; height: 15px; - background-color: #1ABC9C; /* Fallback color */ border-radius: 50%; position: relative; diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc index 5bd69a3ddb7289afda4b6a7dda321488d0510f3a..45dbe34087d9a0f43e651c48899146ec8a55f48b 100644 GIT binary patch delta 4866 zcma)9dvH`|6~EuzyLa#I-rc+(guDnOWCIC=@GPOc5)i}`X`wU}cb42svN73Bzk3%- zx?$-<7@bCekB(NOByF`aR%i{awXHL>jt;Hbj*ox5e>jf%hvFZ0^dDzH@tkw_5zJ*>Fgq|EoRN$W?bi+I zehHsQSo}%ZwZPGj@Z@pJ<-ib!9Lehl_DO- zDFxyL26-|y7PZWT0Zv!r`aQU=7%@A>o00XJ$IOJy7f9lUKNRSOrJe9tZGr_B>58n} z4tT)t+sdukm4Oc!+k0M5vE|~JzMSn8&+E9B~QPZ+w zgQmp~;;KFpv+QVU3_ffc{2^F!t@fkPHx#pCw#|7zu2XJWkXwdiIqnD_9f=J_gPl#+`vq6PA&6d5RKX1@Os8Hak6M(Yj{cl=msYlb3s_t=L83aVm2O+#tr@e9Js_d z7jG9WtF}-b`ph2$(qEJ?k4JH{xLwo`jN*C>$atH0U#}Khi_0=c;5DL9Hn@%QN06Af zTE>0IA4L*JLJ(E{&wO-XBxRV6cOaR9l&(VwK?8%#lSl|SW60%$ zvzG72_v1hSS%eXa6Zt`=kTaAr3e`AnH$_d!GQjhWk|UWQEFk9aTh{M^*wQqck*4Jt zX+pL=aMQhM* zBk_dkXhw?1?07N(Si?&)z<@}Sc)IiudrSPK^wTY$g4c-bUhGg#6WSBw1>`j&@-jJT z$B;cb!V!bqz|-Z9X2(a(@npi}b+ACS!sM%QLmq2<5MRSchL8}-63Cqb;)Ly_9UF<} z%;ki?4Jgioa0kB=g>$bc)as-WJHaz}f*^MWIdr*S&)OX|;sZ86eZIWPy|m4{K>89q z7TyJ&HL`r|Vha6f|Irk&qr6*8b<|{@fK9e!votf<0?Cje<+9;P%YZ}=q+T`@Kw_&6 zD*z_Mreb@CRluqOCsa7$oALmbHGq#l4X1acl_3yE9*sCJZM?Z}DU+6nb;03i_ZxLGd51Cu-nZq3PbD`gs#v}ctRlAS9! zPvZ$XMg=F}797epCG`_a2UU)UI;Uu0j@*=e89CIMf!+cvks9EfnvZ&wYi;j?+``gd zoJ}7#Um5;Xru!{Xk`Gb;8E{)G5> zW!ND_J$_4`6oz#{F0upjJ$UbHg>b%k@(wqJBs-BUCoP*3h@`vaBjg%C| zM2`4(=aN0hkwsre4g>G#g?*kVBMFOg(_Z5@(yMGe5z$SN)9gq(g4r5f}`nhE)3Jb`Qc8$dwb zj66;%P8FF+qgqyxHLoK&q2uNen7GYoOe}3#63jP4J|zycd^S#gKZXh^ixgUFd)IJ{ zB1;zM3#Q|Pxt#`DGU+;QBMTGA<$K_~7Rb9q@zUDvLa2X+yD1>l1koG*E)oR1qvv8x z?VUd4j<0Wl^!n_nrFATG5qD#CfryY71ipND`8QGI&I@kU#?h4j5=lM?FccQ*P2oH_ zJI@s_s>}Y)KsR*vqhvkVrhW@n{qpSA$O+bh1%po`q56?E6QSiEbIlZgXsa&H4=?;Z z5RWgW*|~9rO^IbTxoB*pHTJxT1JL^#60>W znfIH#dEOU+?VauJSjAed^-EbP4@l*MQBrh09vQ%_6{1w>31U3;{uKgU4sz)0i1F|w#i513H(_d zJ#vCKqB^%$(Y#YAR`fNzq4S_W_rkgzdX6`*!T$4N{p!o5Z{o=;%Bdz<;$N$m?4@Y_ z5M>xr*JPh-@-;4S1{?AT-R?YCb8WZPd1E{+{lb&B-bchoJg6&9|P QSBXRG+Pv*jrhMgp0Scp9T>t<8 delta 3900 zcma)8ZE#dq8NTQ4-Me=`laK^934tUem<ie9#VI!lh z$=qk(`@Ziv=RNP|eI@hEbYwal4k+}O-*o%rIrCPeSra$5`Ps{&M_a=Vi@4U#O2zY9 zbcgAi_hgm0&-SOaw2@WPzO1^annsSvUw@9-fyH1>F$41&>4i*XP{9)miaXi?HRcf` z-s)P%;K`Fo&Xe5nWcWl(<16WKz5%dNT=#yTHHx?%ExD`f8Z+o$XQ6*-ABwN&2ibO! z*s)6dQ{Te6MN@Q_MteuZr0*#beCT_OJtzi@4z^o7X>_x1!+h~a9SLuVo=Iqbk!pO~l zHb4)c7qD0S-CtGecxQNO%8q$?6wGZR5@-r+C$f(oYopi|sE-&-Q?-u*9=h8{+MRql z@H@r^#EwvgwTL%D8(E+DQ>aPbMhh-9h+JD#)P*;*4sj&hJ%^K=lFSrOCd~L`(y|ic zNsAAI8=6R1c04mbl+LXy#MM-4!>VptJ0x*R7bXnHRN3!1Z3K!F5Q_NJdhFP+p<(L_qM}&|qr2|fI>{PxX>cK_C#qp8x`%Pm2(NQa_$3d0>%N-xxu}3?qS!nyaVh`0>_s;H#U(mla6<6Ix}VS2O#MIz`uMFAX8%s z6pD#^0fPkXJVO}syD1?(C+{Flkr$EClFmDaMPuUAWgFOY!Y(^8hplva;7RKSfvu$3 zqMB0{JtoVsS=CgtYKqNLS*A79^Ldr;9amlvxqGgQV*>BMa((#Ij`If@f38bd04ElVKD6+%x>u?TMmjd(bo#KZ(YiPs*0^#4{+2o#?H{I76O{mQbGF_?v>boxb5D2ijD zf{}4EHD;^)OX6AxaUaMUow$# zcgpOEX)5J5s1_>&nd*d56i2BT_h*up&1ax8D2`Nrrs6#!EwmDyRj`%RsHwS$Th&jp zXGPqoSO2Euhim%1tVb-=b?UOG91?%1`&3YFfn)j8!dKtG_K24HmIJZ^!}j@^)YN#~ zvJ-a3ih1}Rs6oWPN#KMm>PAb=PqqffS7?PaNl=jqnHP6Z0zYc9wv{PwiPE4lkI8UBQCC}a)Hmbb2<1esN zW~}+YjUT6MVw$D_`sLD6x2ehQwFRdjKzucz7Vxliyo^R2-qGgyJV5p(9n=ayJ>XeD z1pv*Amjm_#WRi@7Ixk*otkGrtT@Y_K){cJxT$x&O;9R3uC$f}8N98s7z5BpjA$iL}v?+!?O`G*$NM9A1rcNDY_JNYW(e!~DmXSorDJf2i*PElk zx1jh8U`YJFx%R*!k&cnF+^NT}LINItj(}n+hsHUgomKK!IgOTvZk*<9g1a+EY>jmU zN3jykia#%`*uyF5%JX=aagfeAiPzfz=^JTF4_?v493Oph$RWK5)=vP^rjKoDyiIIs zS>0W9){n7HURCxs*w23oK#Dq{g8i=fi{QJH`WBI|ek3=ogEwvV)7Z84YSjpZ&q z5Pb4@kLk;XiZn!;{tK*jeft8DEYCI%v;NEAN~2Z&1JFgcev4iUZgt9*=lSwf!;*Kz zLR*VI3i6lYH*F1rGRyv7lcj}&IBU7x(iUm=uduIc_X4!?pKb48>%Rjo?B-X%^za`p z(aUb|vbfdJSSno$t)=RCzhnK-DBh9HRE@H(WM;cj05|ML;7zD~{7sO?ZkHbvqn(wN z2k|bgk>>vzudewyBKz}KI(@ABI=IsOVWP-<{O}(E(8XDs9{Dmz#OY~xAX_^H}cC13($x@c~{S2Z}f@1+1 zeo436yWIxGM;)}7z{Nf(g~1_NbZd4yRRab7o+RxWtM-B^v{T) zZ8uiDft4_vd?x$NX;InLcw`jp*8p&r{2-6{T=Q;&A&vT^Q;Yq}_18^W`LxJ&_3zn% zJ$3@R0X2Z)C)O>z3cw2hBrwkb;BXGx`AvL#weU+s|CS!Bnm~Sg)fzr!&e&=68Wl#f kvD&CIqM>qrNu;)KX077I?eFTlu>KOQ@AbAQa}_K94Gzy-Hvj+t diff --git a/osinaweb/osichat/__pycache__/models.cpython-310.pyc b/osinaweb/osichat/__pycache__/models.cpython-310.pyc index 0f665e1b276fc687970d855aaf48e26dced69c03..17168c8406ff2036cbf19cc1238df1e09b459a6f 100644 GIT binary patch delta 3371 zcmbVOU2Ggz6`ni)v;SVNf8r>KgIvR^IBf#dO;g&Wc3YCVYicK`S*6*oeaFsh)-%qT zaV)!I*5F8~00*fTAwknNmh#ZFQUM`&;f)vG;cegrBqaJw9}oh>Id|88!Qr7^-Q#o5 z{WlGi$6sC_%>~(PO2NPP|N5)BD+9mCtuvFl;jhJy*vw_Eq4N~i@#k!6)wH|6 zpK-H1%`>-@4OY#ep5-~I=TXn|g47GQl{v<{c=489?Ygb#O0_txl)Havsn;1RiBKDA z%`)=X`BU+~hHVU6IE*4z8p=J!*%rH}ZYgUlX3!P0hQ^g81-iI8t#A!@)GMp$k(*xV zMKxZJ+>0-j^&}_z0W^d8TIfcJ9RPQsHnWl#a~_0I;xyg4s3jMaRVbpjYO0B=!>ER9 zpc@TsQ9>wE4JI6_l#*}|Ip3|McA$Y z0aa#+6}q#5&qJ?}QiQoFDv*(iwWO+-sNNF18V-DXrzOzz!W2za7-epGfOSn!zigHR>5>+_m) zVe=)ZM_%A3#u|cZv`A5{U90=N=|VNVXY7HN=+VleTWv=+ zfSSh>vpy@MVg;c$d#xTlFcTwOT696Y?;P(jWIz+W4)bARUSF2~#h;v!$4BwpBXj}8 zS}8J55OmQ+>5^w5yyKFT@ zSN_-(B}CQ1YL((xIk?94PW7^7-`G^E863@G&)lTiwX5f4y|TEC^$Kej)~hZIz9W94 z9~<^QLzRaMC^mp zD9UC#Th1tRXrXk4uaNjUiRVbj;LBrZF?25Qz zKc2oy<24d*ig)a@Y)1USK6!3m6(D2|tO9$Az+H7u3D9C)Ogh8Q!6{r>O;hGV5G-Iu zOD4eA$Q{*|gFxhH4>Kr4f9mM5JqXc!`qD~3;APUL#HG}r`8ugH;;q!ssSBjKBpM_n z%^r!xWt=i8{+K$fsc^ZIl8)$2zkKXf9KnyP%o&29QcmyVN}TQ=pw%!<;tdj0Bq*QZ zHStNhzsE;4z!s8?fbM1B?>PBKdghBaaGGMAK=8#p09YEWrP1iYus9%Iv#dk7C z$0kv)l(TyeftG4v>cw+o7tc>tYGdD+JU{m0bUQ%g7als_xcE!vsY8o65@8GJ{bVaT zD;fn>WUz=Qn>*9KYUUv??LFoFnzXUJGiGJSg}nXi;`iCd`c}~RZESz1XNIj%{mU>| z!M&dq7jos3t7!h;TRi&AQ{sN^Y(BGv7as+ZyiKz8RLg=lObOq zUozy&s3jIYG$NvlWPY6n|3A|yRNuoU-4hv04!sJnWD)#JPh`DcL2<1~CEOCvF(l=Ut$qfduL{X)+bRPq}b-9s57Q)^T4z&o+J! za}3te`x$Yy%D`EG_;fib^^6Ieb&jSB?24e2YtHs!r&-zNi}mhwk9e zN7y=vSHRGhFg@Uoc%kP@=67)f-WH2J&!3neRdRrK14>v}Awg*X^4ja9(dBUUC+R-% YSR delta 2045 zcmaJ?&2Jl35Z|}9*K6x=FOY;d$Sua zJvbh1M6(B-zUr2qb5QQ|` zG7Nk1Q8>5P3%*l#>zy`u`jweW7wS&K_IxYQzrMmij1W zmc%s)bj1=nZN#K4K_9+v{45UO%jV(i0bZF?@=S0V6xOb^s!a!SxMu!(*3;WyJ5YK1 zmKT_-gWK^!ymZBNS{=`nY7HEo<>@@?)SHgyYqf7;BXU*@;TMs9@jU(>am7g-jvg~k z^J)VOgSZ?W5ij8P(Sa-%-%k=FanBR1DhrCOtSI;>v@auQRO-^SoJSxn^g1F z0On(dbDqC*Yso1awfSlX+U;hgZhOJDTjy~h=&4JKcsY1vzXp7)p1%q=Tu)oP$^T`o z?p9jP%`)B%o`_u_{}3-9B?t@rDAwDz?PSOZDgzf3o@2=4!&tv|l+`o%IF>)x%jz)0 z2m?p-B9%(5QFYy#(`ZyG+m7iqenm3x7-UFNtLG z4YC(h&sVJ4@FwXc=*K@3y<<7j>4xpdsvMsg9~~=QoSv$TO-^4N8!v9vtw?Y0%r1+Q z)|qUHJQqn^zUsQ-7giuHECD4VX$l`$Gs9c^H+QVG6<6+XnuE(-pJPoHLGJ%34kZs| zu91<~|4S#(6~5J`fNS0ONATNZVPKYA|J}{AbI)TqH4?i{v)&?s3d407v6-4rFwLn> zY&_18!*4?SO)m3xX0JW)`;7|EpBhBg7{xlV3ej5bl{mV&cLh!KZD%h1Zx3? zNd~SXNNUNWmi*!wHc6M+me7Q%YC`)vg`ez6ukS|kJcrpqC0XOw*&%Cul{7C{YqvVo z2|(V07uhNEyUd!*K*Ce5b6vPpPg+t6Po#Bmx_cBMe6Y6{m(xRH7Qae=DFBNZ5cBw3 zCNEa-apu&n*%o;DD>O%EV z=VwoignxM3pd2mEv$W2X0q(89yqYTf4?&+~2TT0EtfefYY$s*5?UvLsIo>64pAwh4 zH(Mzo{LqNv?d)U|Gn}%#_NQ!k!9c zr?W({r*H%_XmU<0kPsCqFV@d5&P>ioEYUB^EY2*+FDllb*dEWwG4Z*aBA-7{Bso7f q3?g%jJ+U}Gu{b?5iXA8c(lc3%aj6g=&^jIl4n`hk9!3!4_yYh7_bN~T delta 120 zcmey*e41H1pO=@50SI=;ZcUS8WMFs<;vfSyAjbiSiybCvn+UQlU|Gn}%#_X?#g@Vz z%%I6Ju|{IzsyIgW$()RGg6#gqnaLT6CAZiUi{lfE(=#V~FfJ9~0qW*q;9%ro=3(Sv HA8M z1Nbj!TPk`gBy`L=pxjC`nm2E>v+vpN;2>vo;QP0WFPyO-5!^lrffEYxIXf=ieQi{>Fgz>c`HiL{-O~T~O{~fe&?7UelbsrwiX2(xdEIa4w z4zCPu6kxB7^&!79-t?}st_o>ydW-MOFA_hMA)Q;@T++k!M`f|8`ejI(wY5a$g8cd*wI2#dQiw$72Fz7o$YD4xM;AOm{lMzl% zm%1Bp$X$#7ocqeULt=;Ydt1Es*!co$V-c-2TP$9nzwBLGoNH_9N3V4o!CO+eaCJe3 zG`eVTGZe7WP33mY4bEc`Ju3F!sUYKy)!raA_;b{5yZ9%JDExg&851(ONm9WDzsr+9 q+0DS8O_MO$EjfbuAaam4kb4=s>H*yovZp({o{|5|#~t^?q5KOk)4H<& literal 0 HcmV?d00001 diff --git a/osinaweb/osichat/migrations/__pycache__/0023_visitor_browser_name_visitor_os_name.cpython-310.pyc b/osinaweb/osichat/migrations/__pycache__/0023_visitor_browser_name_visitor_os_name.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7eb5ea4586d86677a058cb9d9996a9f1be7e4a83 GIT binary patch literal 726 zcmZWn&2AGh5cbb*vb$;#7Z6AsI3eZIt;!XlA`nOj!l7{4i{-@AtyAwhtT%+7;hG2O z1Mo7waNyKesDxnbBqS1+W;EaYcxFD^9v&71&-KqA=VM05uK@N>g5VUzJwc_2qJ}iI zq7ADUC2xpgihn1H1D)}2yy7Z3Bct>NbIFMLqS19Hdu?0i2aQ!=+%$ytPmbUe#l1xZ zq@s#cOwpQF9FkcY8o*#SREbJa1}mKYnvr7k^Xk`N*Zxl{7;y#@i*9er5j({l|*g_hAf9_2n0(G0g8Ks zDkF?1f0C3@M(@z%_s+_0W9E32_= 1: + 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() + event = { + 'type': 'new_visitor_update_handler', + 'visitor_id': self.id, + 'action': 'new_visitor' + } + async_to_sync(channel_layer.group_send)("osichat", event) class VisitorLog(models.Model): visitor = models.ForeignKey(Visitor, on_delete=models.CASCADE, null=True) url = models.URLField() + title = models.CharField(null=True, blank=True, max_length=500) referrer = models.URLField(null=True, blank=True) visit_date = models.DateTimeField(null=True) left_date = models.DateTimeField(null=True) + def save(self, *args, **kwargs): + if self.left_date: + action = 'end_log' + else: + action = 'new_log' + super().save(*args, **kwargs) + channel_layer = get_channel_layer() + event = { + 'type': 'new_visitor_update_handler', + 'visitor_id': self.visitor.id, + 'action': action + } + async_to_sync(channel_layer.group_send)("osichat", event) class ChatRoom(models.Model): @@ -51,10 +97,7 @@ class ChatRoom(models.Model): return last_updated_time.strftime('%d-%m-%Y') def unread_messages(self, user): return ChatMessage.objects.filter(room=self).exclude(member=user).exclude(chatmessageseen__member=user).count() - - def save(self, *args, **kwargs): - is_new = self.pk is None super().save(*args, **kwargs) channel_layer = get_channel_layer() event = { @@ -98,7 +141,6 @@ class ChatMessage(models.Model): content = models.TextField(null=True, blank=True) date_sent = models.DateTimeField() def save(self, *args, **kwargs): - is_new = self.pk is None super().save(*args, **kwargs) channel_layer = get_channel_layer() event = { diff --git a/osinaweb/osichat/routing.py b/osinaweb/osichat/routing.py index 21d897e3..dbac54b8 100644 --- a/osinaweb/osichat/routing.py +++ b/osinaweb/osichat/routing.py @@ -2,6 +2,7 @@ from django.urls import path from .consumers import * websocket_urlpatterns = [ + path("ws/osichat/visitors/", OsitcomVisitor.as_asgi()), path("ws/osichat/", Osichat.as_asgi()), path("ws/osichat//", OsitcomChatRoom.as_asgi()), path("ws/osichat-admin///", OsitcomChatRoom.as_asgi()), diff --git a/osinaweb/osinacore/templates/chat_templates/partials/new-visitor.html b/osinaweb/osinacore/templates/chat_templates/partials/new-visitor.html new file mode 100644 index 00000000..11b1c228 --- /dev/null +++ b/osinaweb/osinacore/templates/chat_templates/partials/new-visitor.html @@ -0,0 +1,24 @@ +{% load static %} +
+
+
+ {% if not visitor.country == 'Unknown' %} + + {% else %} + + {% endif %} + + {% if visitor.is_online %} +
+ {% endif %} +
+ +
+

{{visitor.ip_address}}

+

{{visitor.visitorlog_set.all.last.url}}

+
+ +
+ +

{{visitor.total_duration}}

+
\ No newline at end of file diff --git a/osinaweb/osinacore/templates/chat_templates/partials/rooms.html b/osinaweb/osinacore/templates/chat_templates/partials/rooms.html index b46c1675..7a621c7c 100644 --- a/osinaweb/osinacore/templates/chat_templates/partials/rooms.html +++ b/osinaweb/osinacore/templates/chat_templates/partials/rooms.html @@ -28,5 +28,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/osinaweb/osinacore/templates/chat_templates/partials/visitors.html b/osinaweb/osinacore/templates/chat_templates/partials/visitors.html index 4af561b1..4e82a7be 100644 --- a/osinaweb/osinacore/templates/chat_templates/partials/visitors.html +++ b/osinaweb/osinacore/templates/chat_templates/partials/visitors.html @@ -1,30 +1,47 @@ +{% load static %} -
+
-

Active

+

Visitors today

- {% for visitor in visitors %} -
-
-
- -
+
+ {% for visitor in visitors %} +
+
+
+ {% if not visitor.country == 'Unknown' %} + + {% else %} + + {% endif %} + + {% if visitor.is_online %} +
+ {% endif %} +
-
-

{{visitor.ip_address}}

-

{{visitor.visitorlog_set.all.last.url}}

+
+

{{visitor.ip_address}}

+

+ {% if not visitor.visitorlog_set.all.last.title %} + {{ visitor.visitorlog_set.all.last.url|slice:":26" }}{% if visitor.visitorlog_set.all.last.url|length > 26 %}…{% endif %} + {% else %} + {{ visitor.visitorlog_set.all.last.title|slice:":26" }}{% if visitor.visitorlog_set.all.last.title|length > 26 %}…{% endif %} + {% endif %} +

+
+
- -
-

00:00

+

{{visitor.total_duration}}

+
+ {% endfor %}
- {% endfor %}
- \ No newline at end of file + \ No newline at end of file diff --git a/osinaweb/static/dist/output.css b/osinaweb/static/dist/output.css index ac0ba418..3e386ca7 100644 --- a/osinaweb/static/dist/output.css +++ b/osinaweb/static/dist/output.css @@ -1453,10 +1453,6 @@ video { width: 100%; } -.w-\[\] { - width: ; -} - .min-w-full { min-width: 100%; } @@ -2264,11 +2260,21 @@ video { fill: #374a7a; } +.object-contain { + -o-object-fit: contain; + object-fit: contain; +} + .object-cover { -o-object-fit: cover; object-fit: cover; } +.object-center { + -o-object-position: center; + object-position: center; +} + .p-1 { padding: 0.25rem; } @@ -3228,7 +3234,6 @@ video { .onlineDot { width: 15px; height: 15px; - background-color: #1ABC9C; /* Fallback color */ border-radius: 50%; position: relative; diff --git a/osinaweb/static/js/osichat-admin/rooms.js b/osinaweb/static/js/osichat-admin/rooms.js index 97102345..a17355ee 100644 --- a/osinaweb/static/js/osichat-admin/rooms.js +++ b/osinaweb/static/js/osichat-admin/rooms.js @@ -55,6 +55,7 @@ function initializeOsichat(){ case 'get_visitors': leftDynamicDiv.innerHTML = data.html; + setupDurationUpdater(); break; case 'new_chat_update': @@ -90,9 +91,31 @@ function initializeOsichat(){ } } - + setInterval(updateOnlineDurations, 1000); appendInnerConversationScript(leftDiv); break; + + case 'new_visitor_update': + const visitorsContainer = document.getElementById('visitors'); + const visitorDiv = visitorsContainer.querySelector(`.visitor[data-visitorid='${data.visitor_id}']`); + if (data.action === 'new_log') { + if (visitorDiv){ + visitorDiv.remove(); + } + const newVisitorDiv = document.createElement('div'); + newVisitorDiv.innerHTML = data.html; + visitorsContainer.insertAdjacentElement('afterbegin', newVisitorDiv.firstElementChild); + const visitorNotificationSound = document.getElementById('visitor-notification-sound'); + visitorNotificationSound.play(); + } else if (data.action === 'end_log') { + const newVisitorDiv = document.createElement('div'); + newVisitorDiv.innerHTML = data.html; + visitorDiv.replaceWith(newVisitorDiv.firstElementChild); + } + + + setupDurationUpdater(); + break; default: console.log('Unknown event type:', data.event_type); @@ -149,5 +172,46 @@ function switchToVisitors() { chatsTab.addEventListener('click', switchToChats); visitorsTab.addEventListener('click', switchToVisitors); +let updateInterval; +function updateOnlineDurations() { + document.querySelectorAll('.visitor').forEach(visitorDiv => { + const onlineIndicator = visitorDiv.querySelector('.online'); + if (onlineIndicator) { + const durationElem = visitorDiv.querySelector('.duration'); + const currentText = durationElem.textContent; + const parts = currentText.split(':').map(Number); + + let hours = 0, minutes = 0, seconds = 0; + + if (parts.length === 3) { + [hours, minutes, seconds] = parts; + } else if (parts.length === 2) { + [minutes, seconds] = parts; + } + + const totalSeconds = hours * 3600 + minutes * 60 + seconds; + const updatedTotalSeconds = totalSeconds + 1; + const updatedHours = Math.floor(updatedTotalSeconds / 3600); + const updatedMinutes = Math.floor((updatedTotalSeconds % 3600) / 60); + const updatedSeconds = updatedTotalSeconds % 60; + + const formattedDuration = + (updatedHours > 0 ? `${String(updatedHours).padStart(2, '0')}:` : '') + + `${String(updatedMinutes).padStart(2, '0')}:${String(updatedSeconds).padStart(2, '0')}`; + + durationElem.textContent = formattedDuration; + } + }); +} + +function setupDurationUpdater() { + // Clear any existing interval to avoid multiple intervals + if (updateInterval) { + clearInterval(updateInterval); + } + // Set up a new interval + updateInterval = setInterval(updateOnlineDurations, 1000); +} + initializeOsichat(); \ No newline at end of file diff --git a/osinaweb/static/js/osichat-admin/update-visitors-duration.js b/osinaweb/static/js/osichat-admin/update-visitors-duration.js new file mode 100644 index 00000000..d12c18ef --- /dev/null +++ b/osinaweb/static/js/osichat-admin/update-visitors-duration.js @@ -0,0 +1,27 @@ +function updateOnlineDurations() { + document.querySelectorAll('.visitor').forEach(visitorDiv => { + if (visitorDiv.querySelector('.online')) { + const durationElem = visitorDiv.querySelector('.duration'); + const currentText = durationElem.textContent; + const [hours, minutes, seconds] = currentText.split(':').map(Number); + const totalSeconds = hours * 3600 + minutes * 60 + seconds; + + // Increment the duration by 1 second + const updatedTotalSeconds = totalSeconds + 1; + const updatedHours = Math.floor(updatedTotalSeconds / 3600); + const updatedMinutes = Math.floor((updatedTotalSeconds % 3600) / 60); + const updatedSeconds = updatedTotalSeconds % 60; + + // Format the updated duration + const formattedDuration = + (updatedHours > 0 ? `${String(updatedHours).padStart(2, '0') + ':' : ''}` + + `${String(updatedMinutes).padStart(2, '0')}:${String(updatedSeconds).padStart(2, '0')}`); + + // Update the duration element + durationElem.textContent = formattedDuration; + } + }); +} + +// Call this function at intervals to update durations +setInterval(updateOnlineDurations, 1000); // Update every second diff --git a/osinaweb/static/js/osichat/visitors.js b/osinaweb/static/js/osichat/visitors.js index c5f36492..5f16f4e4 100644 --- a/osinaweb/static/js/osichat/visitors.js +++ b/osinaweb/static/js/osichat/visitors.js @@ -3,6 +3,7 @@ const protocol = window.location.protocol === "https:" ? "https" : "http"; const osinaDomain = "osina.ositcom.com"; const ositcomDomain = "ositcom.com"; + async function fetchClientData() { let clientData = { client_ip: 'Unknown', client_country: 'Unknown' }; while (clientData.client_ip === 'Unknown') { @@ -39,23 +40,69 @@ async function fetchVisitorsSession() { return session_id; } + + +const getBrowserInfo = () => { + const userAgent = navigator.userAgent; + let browserName = "Unknown"; + let osName = "Unknown"; + + if (userAgent.indexOf("Firefox") > -1) { + browserName = "Firefox"; + } else if (userAgent.indexOf("SamsungBrowser") > -1) { + browserName = "Samsung Internet"; + } else if (userAgent.indexOf("Opera") > -1 || userAgent.indexOf("OPR") > -1) { + browserName = "Opera"; + } else if (userAgent.indexOf("Trident") > -1) { + browserName = "Internet Explorer"; + } else if (userAgent.indexOf("Edge") > -1) { + browserName = "Edge"; + } else if (userAgent.indexOf("Chrome") > -1) { + browserName = "Chrome"; + } else if (userAgent.indexOf("Safari") > -1) { + browserName = "Safari"; + } + + if (userAgent.indexOf("Win") > -1) { + osName = "Windows"; + } else if (userAgent.indexOf("Mac") > -1) { + osName = "MacOS"; + } else if (userAgent.indexOf("X11") > -1) { + osName = "UNIX"; + } else if (userAgent.indexOf("Linux") > -1) { + osName = "Linux"; + } else if (userAgent.indexOf("Android") > -1) { + osName = "Android"; + } else if (userAgent.indexOf("like Mac") > -1) { + osName = "iOS"; + } + + return { browserName, osName }; +}; + + async function initializeVisitorsWebSocket() { const referrer = document.referrer; const clientData = await fetchClientData(); const session_id = await fetchVisitorsSession(); + const browserInfo = getBrowserInfo(); const visitorsSocketUrl = `${wsScheme}://${osinaDomain}/ws/osichat/visitors/`; const visitorsSocket = new WebSocket(visitorsSocketUrl); visitorsSocket.onopen = () => { console.log('WebSocket connection to visitors established'); + console.log('alooo'+window.document.title) const event_message = { 'event_type': 'visitor_ping', 'referrer': referrer, 'url': window.location.href, + 'title': window.document.title, 'client_ip': clientData.client_ip, 'client_country': clientData.client_country, + 'browser_name': browserInfo.browserName, + 'os_name': browserInfo.osName, 'session_id': session_id }; visitorsSocket.send(JSON.stringify(event_message)); diff --git a/osinaweb/static/notifications/new-visitor.mp3 b/osinaweb/static/notifications/new-visitor.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..8c81acf056154ef4f56651c6d70b2233895b8e48 GIT binary patch literal 36096 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 UGi(l9Njdmm-v4RJ|F8P}4Gejy8~^|S literal 0 HcmV?d00001