From 84aad167146688c8da1800b1ddedb9431e5bc375 Mon Sep 17 00:00:00 2001 From: emile Date: Mon, 7 Oct 2024 16:57:49 +0300 Subject: [PATCH] new --- osinaweb/db.sqlite3 | Bin 1990656 -> 1990656 bytes .../__pycache__/consumers.cpython-310.pyc | Bin 20610 -> 21386 bytes .../__pycache__/models.cpython-310.pyc | Bin 12466 -> 12746 bytes .../api/__pycache__/urls.cpython-310.pyc | Bin 475 -> 407 bytes .../api/__pycache__/views.cpython-310.pyc | Bin 4612 -> 3266 bytes osinaweb/osichat/api/urls.py | 2 - osinaweb/osichat/api/views.py | 49 +----------------- osinaweb/osichat/consumers.py | 39 +++++++++++++- .../0034_chatroom_group_chatroom_visitor.py | 23 ++++++++ ..._group_remove_chatroom_visitor_and_more.py | 26 ++++++++++ ...oom_group_chatroom_visitor.cpython-310.pyc | Bin 0 -> 687 bytes ..._chatroom_visitor_and_more.cpython-310.pyc | Bin 0 -> 845 bytes osinaweb/osichat/models.py | 14 +++++ osinaweb/static/.DS_Store | Bin 10244 -> 10244 bytes osinaweb/static/js/.DS_Store | Bin 8196 -> 10244 bytes 15 files changed, 101 insertions(+), 52 deletions(-) create mode 100644 osinaweb/osichat/migrations/0034_chatroom_group_chatroom_visitor.py create mode 100644 osinaweb/osichat/migrations/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.py create mode 100644 osinaweb/osichat/migrations/__pycache__/0034_chatroom_group_chatroom_visitor.cpython-310.pyc create mode 100644 osinaweb/osichat/migrations/__pycache__/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.cpython-310.pyc diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3 index 51dfbe3c76da1643b37072a32815fb81f3942d4d..ae243706fba0906bef4f72b59545274959b31b0b 100644 GIT binary patch delta 5221 zcmcIo4R9ORalRiAzyZWPQV>ai1VNCN7|J5R`#&6FwFXFv;xG7PlA;ucB1rHD1c)C( zAPKT2Dammk|D{A-AoM3?jG*#?(KWK`|!S7Iz6{^dhTH9h7&0SL4Tel1Vs={)1g`hJCS-} z&+!VpLHF>A&M{T?ivCxoKiBu^=k>?+lJ17?Y0|2DRqxQhqkH&d;nG#Dwse`oB~<=y zwY^w}l`q%e+c0@(v)!_C`U?XnSShWs>!{M@s*KM4->??1^wxZ}tPXc#(dmid@uB2k zh9#oW2v%WPw&Co`Qq4xpXgEo3c^OB`R$j0DC3^Ja-#T9teVtx!XX|*A)Y7_RxOJd0 zE)BH%BjTpiKwo%#W_nkbKN{ZA779pdcjw-A$=5Vf*U`FTF4PwZwTRJScelIoSR|jiUEm#(#vLk#&2pKgIAf%E3LD5tpAD#%gd)(a}fF z4r7pTNE%3akhG9=ko1rUNCrqoNcoUV%GqJ^zWeYmVKcJs7&(kV89GMxDrb(7r_k!n zcsn*0=hKr3W}K(#WMVWO4n%^(smPQVXXfb8bRvzWA9?C&5)yz^0I3kt21sV*si!xN zJ!t4a&gG$d(N_&O4(Asg!Ay%UK3DX%R%6_ZFU!aNs;o*mt}EJ&w`HCcmf}oGoEWAO z>8U_^EIJjKqf^PrRLm`fCnbqT7Z3!g4u{=RC>0B)_+*F)jB@dz5HF6gqBt9hj1DDZ z==>wC#v(|?N~^KtrPt6AIq%Jqzn8zgCtoWU{J5lA`SqJ6TaD@^Au{kje>_>kV)K>LTDb-~({!MbdH}Y{-mY6)Lx@ zy!?CT^$tZ(S+3U=Yr$3o{400~903X72U`Ik&yZ(e#eb8Oe>i0sU#z0?5HEUb4iu~^ z$wPAh0s?*wE`tl;f>N+#ISXoFQfe@>nl%Ro^QOZwm=U8vm3AYc%5tOr z)Ip0Twm}QdA>bNx@H21@Tm=`wIi=t<`7+o}br8_gy^yMl^KcYxrZhN#)@3d`T$xK} z=CY+WbGbEB30m+L0{$2LH~0m3A13)N@CJAl$jc7Wd(yEq3FN=4uom8{#W57Cpt7P) z6?RuvI8{+zn-yE1b66eZ?G>hw_gmExL(~$39F`d5<)=EW8V6j91qA#fcor;xex)F0 ztpsqTkT>KP7Oll{>!LM3^YfdTpXNn%yW(kB|1MsVs*f17ND(ZmWNcSdMfDM4T}4 zDG%LKdclCU%VVz6cAvlKNiB|I{-P(c;_zYgHEww=dceopRh-liXfsBvF*M zQgCyk)){xxLPLA_fE~ImyXCgF9&UVVdCN93C%ReY6CK?e7paE!*n#rf zZLOaf34T7w+s%HbC>DlwiYn6_G~nP$rn5c-SKtQs9x!Nd1O*vJD%aj9BOFlSa#rCo zRQPuw$No~I(KSOABBOGnj404t!LK6n*Wa}|l$rvY4wr$~TrAg_ZOwCe^TX7sQhu2%PK#j^1~{BOyw&o|C-7VDVJ=vV%&h6K0-jR=_B%a z7}{mi;_|(D`+87xR1lbCYk0b!noNd8cCLqy2ZkdaZ>LwH13T#1KHmftcaL=hdO3d} z=}YzYIfLQmxxucU1UKE}+&(rHpX-k{@9O6}8m5}l@pK|kpH3ycO?$_Uo>U^z zyVE-{PIcic49W4Aaxc038Zi9puF{Ar>a=HQj`_r_C zbHjgsHzm3!qSMWvM}8JROM?C%`B`qs?CP265VuVS9v|U(gce;ACD8&4r;|!ALX}yakm8#}d)KvAgc3CZ;En(Zt};)W~2Ynh54}AgotL@UWbV zrv-@>TlSUaA!WTe&*0Xav(dNhALec4PTfdO#>FnJh^^F9a+|3woLmVoifCtgd*$00L z$Z-W*X8S^ojsBSluWS;_pIe*_(e)m#Z|5W<^#lhxXD2&my5sy@Vq6;8k(i56jZ=Z) z-lUW59GRZ+jq%Z(AaZ~v%ZU`6eOe9T)3D!NLA1E72p3X8EpXYN@oBap%pbT>+PMV8KdNb{!bnIi|i7tw!XwkiGwK&H_$j(Jr z&xCSI417vaj)|C^i@2_d0D6@w<`T$8_1P1yBJ zAmpatTsGvIysMgU>zW7iBx`ykr-GJ3CRx8^-vi6~-UX-*CW z!a)c@1_$qaJEY!}9jjJr{sUfLTce{YdnZ0`*(hI_x6tyQ_Y9s; zpSMWAJ0$r>=S+nJ&2Lcy*`ge)wqMg0Y7Z=GAud6XwgdCpl0gYuIc+SFV{?{#!P47OhTpoif$x~vp*+V_L}&;eM3Swy4H0Hs>_XMSs$ LeBN)hU<~(v%qf&< delta 2888 zcmc&$du&tJ89(=4zpfwmI5Cdj#uy5QCg#4cuVESvi1Nt8ArF)y6cXDZPD0**6QCrJ ziA|b1Sb)2ArA-608jn>hYVOzs3Y2M?27*=^V}j9iYS~t;jMA|c!ehtbF)B8RKPJsr zzwb!j`F`K=_kHI(=k$(t_l|b&bmtz<2LQYF5C8)}6Wx{1;)nB(tvN82Sg0Qw&<9#v zmklQkUs}Fvs4{Fa95BfG2l^q(r9W*54CnM(^+v;Mz~Ji(5#PX-)nUJLV02bBW*KmY z{CcOmFG$Fkvfv$8-auvO+a4!TfVXz06AiUpHCfTo+PV(6Is3c>H_#iJf*bD-Q?pMH zm}}r{{^!`v;hz_rkqXy0S5`Eot1FYOMX};V62C&~kjl$vytL@$;>wpBtHnjj63K+#u7LJfuKRqBIpqG2nGZa!H8f&Fe6yh zu>>`LKCuelr|1W%gwi}nRboTx=pdzH$|q*~%pLoNCT;9g_!+ED z(Oz);N-=)m$XCC*;CRu5jVh-eU|w~>6~|IsNw=8SsDHWY@Z=C$_(xTL!*LlZ#&_+0 z$_P;T;T-_)z$@^|dz5n=<|0)t4v{qDl$IcI-1gIPLqIjq&bxE-aCjWRKfvSg$&Wfk zokDxz$CUDZi?czGc)yKd_})@i9wl=eUoz?HSd5%hSt6VyPikI8MoL?$%MK%g$coEw z3Nagz*`$(+aH7QERM4pfS;IH8h7!Z^VhL`W=0Hkhm{raeBN0KyZ5HeTpujw!ISFN| z)pFJ{*RHRP8t*+C?>-tQ9*uWK zb~-g}D2ulMoPf9BM~^?%I!c{@i|G;)MLP#!W*!pLO6*8_rXZ2G%!Z^jS4&`6iBm(6 zm?K*w9Nq-*HoOVXKlx5Wr7u9mh6BA#Q2FIlS5DU592{m{O~+x@nHQ(B-t0J)t0Qm> zHQU3%@pix!pe$$#gS!FTZMki^tx^kI<4`$T>M|-JN3TD<2!`$U#pl$F99%}XMK z+eUg_SYWQX7*HA~fcq^MEnahjX|M4b*=0Cw@aq1qJE)~J@1w~TmS12_d=#Z->8_Yp zEgE#aX4LfM_gAQ&9dfzXW5-l&z+Fr@VSv0#-XgD)eeR<~tVv~T2V8(O+6n`_&In#{`Nh7BoxxzwIc zC2E$GWooNCilowxuAb%Xwc?_Vq?lOP)fBHQt61CJvoRyl6&o{U@x`&Uz?2JJ-Soy* ziEl|&HWsGW6&9{oTe!ZvK3OQFdz#6<+1hR8B&Mvc@$Oe2%=K!s`QZTMsCpF1N@^?i zCaNPi2Y?|4Y+zgY1Z!rr1z6%?v`_#{<&6I5U(sIbM2DRpg z=617yqO+M*;jH&;!iTD8&|L!5Wy^?pm#NwK5*gIrLkfV61EBh8-*Q4Jv-m_!AN8$Q zlpM~-&tSqb!}I8B$(~85=8PDir6@;7X(^0OBpzKuFFfIF$#Q5V?Dy%Xu>#Am&$5^> z!wa+^JjL2P$qKPT_Eo`33?1RW&ST{$Erum2!m!*^yq~!;HF+Sz@Y$1@6Qf)tEQ+)& z%THW9oQXs^AwUPeJ}VdtAJ5A2;eH} zn0~^%(6q%ECl6Zg>IN+bv}MRpKu2nY-qExa?@Om!lBrDgh3L!etXbcg>ZnO4YwGK1 zuAYzZlX{{PyQZ`qb-9(PLoTzj;G9=yf5tKxC@oQPhLBNq-X9Evf{&a9XQOA*4uhkQ zSc-3R{d+m(t+QU62`yG934DF3UVgmTr`g5w)WMnl37s-8(eu8*=wy zX?$xyt@UG4p$DpzpxOF|Qi0L#AGV^PqiC6tI!>u=S1mG%V@0QaRZA7@Irr@nL}%J$ z_V>=7bMCq4oO|}3^KMVGdmm-KA+OhM!@o`M*;ju${-iJNWIqDdv_f8Di1_}uqc$yn~5vr95Fh^|DDy4<(pp)7;~ZG-EbXH5IL(+cvz|l=)`EZOXV-(LCL@gsj<2 zWfhU8O)obp^h(W(BHy@VgtfvkN%N1P0nN6=W<<0i)1eiQNh!CbJ3+bpm(y%=eKZIofn_sxJNPhWDC=G|z>`KS5g+W&y4J;WB%ez%$G~8Gb$`}5 z*gtr4KTpEZz$mMNrNM=8qO7Kamh-IyzaZt})%`|n<(jw=6IPP_{fVq6X~b8pTF-}8 z4Xo?u0Q>r;umU&~tS;S7>$cIl0?T?#iyLv+)Kd;$2dml^qQuV{SuvCB5>w8&Wff^Z zb2AzLRs1O8Uu88+{mQLEN69rX;dQYt_<6~7g*)-=WK-hznG&AgGWe|I+R+9~musTb zbn9ihPhdzOCYzpk5+teQw^~mpz=GJ}$K3`J#aPhe*DOpX5^59-0%PG`YW0RS#1oiAhX8BiVhY!gQ!!>&K4vP{sC#kNyK*Rz=wE3J3?*U%8o!VHyn^L3% zvOuE$$FZTrx`9N0ERIWW88Chlm3RZnvW4f^qp~?Cg&yuC6Y~g`5Qr4^5+&-@+5paU zmyJdpJVg8z1i~GYs9zJ5pM?sfvX$TCOl(a&p9lN zIq5z%Qg>ByfPNw^XwQFsba1e@B;zl?Myh#?_VgJ;MtogN+rZkx#?xk-5rK7Fkm@!!J~yr0>FyJ($4=Y^o|P_#N?t3mHgP&1F6CUX{kYu%J3x zvWsL?iu@6RWdzT{6OADluXcsVTh*pAwNQ1dPPI;LSEs8{wHWqSe^EkPXW4b4R-zu> zM@yfAmujwMH$%AgR`vosKdqLng{NyjR9+zAa;ker50dNQ#VMagMMNUrJtW?Xu&jWt zs9bt-wZt=Utgf0p2H(_$7$r6wh&s=y3z3bzu(crohl&avFQb{;GKqSbwFui(z~4zD z@kCmFPt?-{`(dKtdy`lO|7j?;k|?%%MuhP!uGs>ujkhYap_Q}B14zcH*gQyx#JN<5 z>hl!y18}f9^4q4bS=~WWe~zG$pa~)C6qj=TclUUvIvQjc@XTq$;TK8i5CZ-d6rzg> zY6<>C3098ae*7hPf7->;hy%WEpV?AQW*c!+zl6=xBb9!!O)o5w*h61<8n$i0_a;%uegK3Tdm#|P3VKf7m&a7#27r< z)D%t;R<6*eD_Y7HTreh0)TeDJzvd5(YTKGimoK{k7Gqjmw5=Q6KI>*>V18it5 zT<~pPBgX2{W|>~ogBk5LJ-N~E!f`u}BDRUCrYu^fUAsu+{$}mse73bNs*B~b1%JO0 zJ-aK$Jb`x6-j45bQ&wenry0uc7PgQ!i(=CR-6QzhEE;~$R$Wd~I$xA%mtYkYX>-gX ztjbI2H{_;XE&BCk@NnDZ;StYuRvW3gW@uWXUB5o15!K*Cpvn($BCrz2JIh*))}4U z#K}5VZ|F}N#3T8~1pkE8j9n}Zl`}6;{zZ&0VDZfDEw2)J55f7j7x97wqU#5U`U4bo z_O|>I$!y`}*n}7LCzCkdE}=nH>EAezG?M%QQoM*@J;5iixigsGaA#*dI||QrRrz7K@QHs#;T|NXAx*j7IkSC@CWe@OD>A`2h)?pdO&uB$slEW^5Hl zNBJvgnBB#;!A-L(=I)lQoKBhnvXwi=_mR%31Id_pb>JsSL_Gdy1Uyoj-}rXeJ3Gc+ z2XD7tfWvbx<4553?xw3BBZX!HQE?lHdW`^E1@ogH~Nw^V9o~>WMf`q2M8SxM#M*<@r+eWRCSX z*@b_jo$f=xutW`tmV1P_Vl4OziL8m$8jwavR1A?h)$9oL%$cYB6&aE}bMKrTY{8o( z%o3yt$nI{t6{avgX_wNyJ7;&CbT<+R&x}U~)B;7*`2$uMcM~ z>tW;YOi@UA1G%O4%(C8jto|5jyhU)<6JCaft*FFdhv3lV9skpORVV`QE-b|@=#}K} zXmO4m>#GHB?2Tr&%)N>=o}gVs3MFo*EheM%&{rxd{x&%Jrm{k4>1$=>aARLnRA@~` zBec#d?OcTW`dXlSv0JKOa9dB<@h;k1o^j2)lr?^s-Zm)4(M4NaeRVH9?V>{ zKw;QD^5)hNMfY*OT*Z$~(yG+$SKgXrK4r zB+nh26aKiUCHy&YQUp|oI6*s!7QgL#aB)3z3dg=g?h6oGyfR9^C{Fdysq{D%2dC5F zlnPD(aN3W5Nv{jdhmm{~&nHRliP5(~b=pSN1*)b7@tq;8)~n@e$P?g)Gc8x)J$!)H R9>%q0u;}Uz`_y3He*t;1vB&@b delta 3821 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 diff --git a/osinaweb/osichat/__pycache__/models.cpython-310.pyc b/osinaweb/osichat/__pycache__/models.cpython-310.pyc index dea9d81b076646a4a51ba6859cf9156fe2528501..d45615d9aee002618601b93fae0915073e00e9e4 100644 GIT binary patch delta 1572 zcmZ8hYiJx*6rMXfyF1yP-Ar~j$!@m$%6q!$rdlFO6Dr-LHI}5o#9~J@T{DwrOR`(; zuCWP)C`}0n!NgO6`N=T(9Zniighc(A8xMi^#>(~zfS-8&;lf?nP) zXk}0crfP;5>8(F@{7N{=aomMt(e`#t>ea(J^SQx%ZZw-S2Qx#(?0B{~F*uUR8KWlG zL>@+E-7}QWSi_XpqRf)FhYKgd1wwtrd~#|Dd@})bkShC&6Ez=4bia8GTnjPY08F#-!elo?6Z>YGNn29`+}}) zSaTT8S-b8*sT(yVL!K3NFV5^nnQ6nhYu2Who2ub9lxg7@(<=;*;hh%r0iTusazn-Z z`>p&3F#i>6GG*bhe11%`Y2upL*~34?NHy^w~Y4eXz z2&>_JPTq@*Z-e?xFR?keuxY>J1PML>f22orGI%D!*=e{DNwPD*qG=X@u4sqEUqkaR zq7OLv>!ke#Bog6m{7vMOp8p~$Riu*dB#ksdCxWgF?CJKfa}M`CSk3C_mq zRq6pgNpOzf0{jxIZCXJ3H;zIOK^7#Y*aJ*vRaixpiOj`hB_Q$zc&|JHJK}$`dUz;t zoh^b=`=tFMnl!;^?Ni!Y$T+#;dk7W@x(Sj5eu8#_i||!-B(#Dwfh}F2+aP1p`LJVD z8(+a)g79$N!Ng~{fZ29;=Zx&|u*uC_k$+y2+4?gEzYO2j?Nm4J3N`g@kxx;r?VfXq z`Rpogz)3#zN<|0`G{j(UN`|p5PFSw*bT8vVDfUGW8#af(#`z9(a92hm3#!%AoTTgK zM$5*H$pal%clPo8A-rL0&ch|b--bI4@$xIU*o8j%H>7$6VvWx3!4}HsbvjkRPSE-D4I=~*dyt&$9 zR&sW2iGrH^l}*5%WKsSR6*R^>AQAP$REvupg%?}WrRWjj^D<5=>l;tu^;u2%y;eE9P|m+ZAp2_iL%l%u_bRF~eiN$@ zgk)-=WazLASKxN4HFOINX2_t_pehUCizc_={?=y459Ith9B93E-#k$(iPY0pk6E3< lso>l?BZbH*0#05ro&e;xZuM9A0=`BZE}sM6q|aUD_!q9PZukHI delta 1303 zcmZ`(TWl0%6rMA)JDt5U&Q9rW%U;TEyF0DjwkAXj5|C1flx`6EplkZDGTWfWw)wYF zAXFcyX-sTlJV7L(q}$L6ScPo?V@i`IP(#p!%L6gI0B=6XL&FmfqUX$_Bob#cU(SDS z-+wMU*Z0jAfB%D=pRuBuVwRk)7 z78+SI_7!>EVNXASCiy`JKLiN{Td)$YT^Oy;g8B`e#Br=Ngy1NyH0*`jD7(puqF1kdX&v4@$*=({8+-@VggQKPrMao@#A1f}qb1+< zy)kINH!x5X#laDAsj5@<7Hsh&-cN0Np5~>d4Ur4vmVQRy0>iBniMT)nQJicNzB%%! z-fjl#n_KD@>D);Xk2DfANq5#tEI##*qMb}tOP-<5Xp)7e=<2W zIM?syOh0jwu((NbiIY5=DSakxI>Xu0ey09^lT=XdXph{Y@Piy)-BO)OHTgSp3wL&8 z)SsE?S3J;hJv+r>nSmEu@bU>~2D}x*Vc~k5`%v_7=Z=uaFpUJgUPGl{tKnO#{td2P BDGLAq diff --git a/osinaweb/osichat/api/__pycache__/urls.cpython-310.pyc b/osinaweb/osichat/api/__pycache__/urls.cpython-310.pyc index 744a3dfeab6adc07a01b62e47cef0bd6b07c4b6a..82a5635f0b096f149fbfa2c597774fed0a8b2ffe 100644 GIT binary patch delta 118 zcmcc3Je^rPpO=@50SGSjGN)ew(vLwLWWWmKH~?|6-9&9m)pX`4_7wJD22GBaAVr#t xw^#}iOEO+ELO85tnW^Q)6E|oxa!kAQGR}Iv3?ax3Xq)Gscp=4i#sJNF)uw|ue2zq zxQGd8;4OwC79bVHm!4V@57HD5))d7K;sf(WQthUFbrPqD%k4b0PQx`~_WjUsGtaIJw+=&*8j#W@~IW=SHcNqrs1C z>$QAl#~ns5cM8w@+#1?MxErUpv`w^>#+f^sm)-dneJWekm?2{U7Qedg6RFn-rxx&~ zbuVB6kEpbwa)VSjlV&w&azd%8#x@QZ55fwUwjYKO_c@T~{m0UdC?>R2UZuTi&pD8} z5!Iy8^cknFc;cKu8S%;)FG$m0UM3-y4r^B`gs}y}JV#oTJZux#O@IVVD(Dk`oKch# zdScpmuhB{ICRTTo;I_2V@yQb6cH$B$3X%ALT(KBGDHf9X#hfA!DJQz$Y|;@`8Epp7 zaMff=!D$84YNEGkQ)ZQFrS9{R@>^nrgmhf3OaORsdP;mx7W0#;vkwKubQFnkzglIp z!b%-Sb7CSjYBrFjt!;{1sUK6gd)wHsd2hpL^sMXaHqX4xzSD4eTSwYKH-6X^7u{Un zYou*-A#Kg&{d{1(3lhxWtO(s>=(Bj?7Eq7)Xbc)2f}8$yXL^^i%5{sh$`C-Q^Dp+? z;xie$I`0|M2>lk3PK6Rk3qwRQiJ>YTG^D{-mx-rKvqO~zjiQ!J?C&(9AS5{0h4*+d zskc~7n($oSW?oL3D})BsRcY0U58*R9piW}kRcD3(E<+6>K8>rkeFaP|fHECcC$tr) zfM{M#1D*<^tYKJ)O1dP g>K>6i)V0sHBHV70^Kc-IjfmfwA#2h>cGgAz0U=5WBLDyZ delta 2343 zcmZuyOK%)S5T2fyo!8Ee?e!ym=3yI0o7jK?h(N47aKbY&5QjuKBFor4Ue9KC$LZ;f zaWw0Va1MZEAu~6WgRPt*P9$eIM4Y&D=^Fban}}V_H#OB&)iqUL*F5UG zGwMaToTI?++{WJvzxHl;gXG7JqhGydm&h8S9&Nj$tdZIFK%*^9JMEB~4$$PKO(*S= znmp~EQ3^d9KSxas;^}Zr!4)3|;7Xa4RjyGCs;-l=PBp5plg$jxP-9DN5N;%dn$%iX z8!9&wwQQ{s2xm`=p7}+eSA#hAOF^+neI69!pvLbLk*)YKFV>e(_hx~JZnR`k)U1~3 z0jw0mxK^)Jp12cx44>pCWQ=(hfE&F8etOlftrTowO@aT#D5?rGnkxtMJQkK;t3@0P zg?7RJOc)Dcg$GPn5u*Vs&aKSmcYJ077W$R&7OYM=aeaOsGQJqZLWkY_f+kEB+`z1a zgIN|K&1yU=Gj7T7Qab_eD{L^G$Sh8IrGOWA&9hie17KKni9^_a5a$WN&MyZ7HdEG} z!pg1N=>v1D$uniWY;cq6Q2q>*-%2!UP;*_~w5dgHXn16LL< z7p`1lY^MHm??Ef_+XM* zBUh9epcx-p`Iab+EKzQGd_O;sWFe_G+Pc$gnbB@EPD=MJCD{WqihWIhY@UmqR1luFSK$NI;JeVJw=IOJI$|DgyAnO1vM&+ z?J6C?5Jv$ZH$V0{XRLs#aa3t_R$;v$r5n!SW{&lv(&5qdpoRm$7iJyapcqo2qre7W zeYS1)ptOwar;1sbl00W}iA|tGcDr#Hkxk+jI-G4LNWcc+sRcvIRm>3&BCW<)v-k}F zRc$90@yICARZG=Xo#5XhUBr0eSSablkpEHQ{Aro4>Zl$WB-U+@^a85?uy-KL!*LR; z8CmS~o_4j#UdD}00AXGZk!c6*$K0?l? zf9Nmn|4)%1hKn`2*-AP-k>1OkA=lF1GT(hFsr0nptq$9g+;I@p3Z8IhklG)#sNLeF zeBak`OZjf+Q2L)Z>?ACFV|M3ubI!2-bl4mp*xN!Z3}z>fP`r?a<^d9F?}G8xnP`c{J2vxM3T<20h_bECJfqD~7<6SXl%qpVqVAQuFjj0iiF)|H z#D+-(AI#lJ)Ua1=Ia=T@2T||JL-26GBmLbP_43o~0KV!$ghT0Z`&fpJfSj({-&L{<)!aun7A%AQB{3jl>ab`0g05G2Q5K}n8)K9n*DyTic3 zN7;kRAc@RE$l^Sgq}bbr^tv;4f}KL+(+Fn}@OTumE#}~dh@C~i4$kJF0gM-yL%s-y zmzC1T&giR{HhT-m~mT$StM>QB_Fek#OwgP7HTsoCKr5k@4M*2l|#AKkGE_9|3 zvOi4XXHlLmb`7Nf0oV70mYWQLPFR!Gh}J8?Ng#p}kEL5~f1BwL>o8nL;L3aCUq{zl A)&Kwi diff --git a/osinaweb/osichat/api/urls.py b/osinaweb/osichat/api/urls.py index 49c57d88..61659995 100644 --- a/osinaweb/osichat/api/urls.py +++ b/osinaweb/osichat/api/urls.py @@ -3,8 +3,6 @@ from . import views urlpatterns = [ - path('chat-rooms/', views.get_chat_rooms), - path('dms/', views.get_dms), path('visitors/', views.get_visitors), path('staffs/', views.get_staffs), path('start-conversation/', views.start_conversation), diff --git a/osinaweb/osichat/api/views.py b/osinaweb/osichat/api/views.py index b040b999..23fef06e 100644 --- a/osinaweb/osichat/api/views.py +++ b/osinaweb/osichat/api/views.py @@ -8,54 +8,6 @@ from django.utils.dateparse import parse_date from django.db.models import Count from django.forms.models import model_to_dict -@api_view(['GET']) -def get_chat_rooms(request): - chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent')).filter(chatroomguest__isnull=False).order_by('-last_update', '-date_created') - chat_rooms_serializer = ChatRoomSerializer(chat_rooms, many=True) - return successRes(chat_rooms_serializer.data) - - - -@api_view(['GET']) -def get_dms(request): - try: - token_data = verify(request.headers.get("Authorization")) - user_id = token_data['userid'] - user = User.objects.get(id=user_id) - chat_rooms = ChatRoom.objects.annotate(last_update=Max('chatmessage__date_sent')).filter(chatmember__member=user, chatroomguest__isnull=True).order_by('-last_update', '-date_created') - - chat_rooms_data = [] - - for chat_room in chat_rooms: - chat_room_data = { - 'id': chat_room.id, - 'name': chat_room.name, - 'last_update': chat_room.last_updated, - 'date_created': chat_room.date_created, - 'unread_messages': chat_room.unread_messages(user), - 'last_message': model_to_dict(ChatMessage.objects.filter(room=chat_room).last()) - } - members = chat_room.chatmember_set.all() - member_data = [] - for member in members: - member_data.append({ - 'id': member.member.id, - 'first_name': member.member.first_name, - 'last_name': member.member.last_name, - 'image': member.member.staffprofile.image.url if hasattr(member.member, 'staffprofile') and member.member.staffprofile.image else None, - }) - - chat_room_data['members'] = member_data - - chat_rooms_data.append(chat_room_data) - - return successRes(chat_rooms_data) - except TokenError as terr: - return errorRes(msg=str(terr), status=450) - except Exception as e: - return errorRes(str(e)) - - @api_view(['GET']) def get_visitors(request): start_date = request.query_params.get("start_date") @@ -151,6 +103,7 @@ def start_conversation(request): name=chat_title, created_by=user, date_created=timezone.now(), + type = 'DM' ) ChatMember.objects.create( diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py index 4ebeede2..53738015 100644 --- a/osinaweb/osichat/consumers.py +++ b/osinaweb/osichat/consumers.py @@ -186,6 +186,19 @@ class Osichat(WebsocketConsumer): chat_room_data = model_to_dict(chat_room) if hasattr(chat_room, 'chatroomguest') and chat_room.chatroomguest.visitor: chat_room_data['visitor'] = model_to_dict(chat_room.chatroomguest.visitor) + if chat_room.chatmember_set.all(): + members = chat_room + member_data = [] + for member in members: + member_data.append({ + 'id': member.member.id, + 'first_name': member.member.first_name, + 'last_name': member.member.last_name, + 'online': get_chat_last_seen(member.member), + 'image': member.member.staffprofile.image.url if member.member.staffprofile and member.member.staffprofile.image else None + + }) + chat_room_data['members'] = member_data if last_message: chat_room_data['last_message'] = model_to_dict(last_message) else: @@ -232,6 +245,7 @@ class Osichat(WebsocketConsumer): 'id': member.member.id, 'first_name': member.member.first_name, 'last_name': member.member.last_name, + 'online': get_chat_last_seen(member.member), 'image': member.member.staffprofile.image.url if member.member.staffprofile and member.member.staffprofile.image else None }) @@ -244,6 +258,24 @@ class Osichat(WebsocketConsumer): }, cls=DjangoJSONEncoder)) + def new_online_activity_handler(self, event): + connection = get_object_or_404(ChatConnection, id=event['connection_id']) + context = { + 'connection': connection, + } + if self.client_type == 'mobile_admin': + connection_data =[] + connection_data.append({ + 'user_id': connection.user.id, + 'online': connection.online, + 'last_seen': connection.last_seen + }) + self.send(text_data=json.dumps({ + 'event_type': 'new_online_activity', + 'connection_data': connection_data, + }, cls=DjangoJSONEncoder)) + + def get_visitors_handler(self, event): today = timezone.now().date() visitors = Visitor.objects.filter(visitorlog__visit_date__date=today).annotate(latest_visit=Max('visitorlog__visit_date')).order_by('-latest_visit') @@ -449,7 +481,8 @@ class OsitcomChatRoom(WebsocketConsumer): with transaction.atomic(): chat_room = ChatRoom.objects.create( name=f"Support: {self.session_id}", - date_created = datetime.now() + date_created = datetime.now(), + type = 'Visitor Room' ) if text_data_json.get('guest_name'): self.visitor.name = text_data_json.get('guest_name') @@ -671,7 +704,9 @@ class OsitcomChatRoom(WebsocketConsumer): 'id': member.member.id, 'first_name': member.member.first_name, 'last_name': member.member.last_name, - 'image': member.member.staffprofile.image.url, + 'online': get_chat_last_seen(member.member), + 'image': member.member.staffprofile.image.url if member.member.staffprofile and member.member.staffprofile.image else None + } for member in chat_members ] diff --git a/osinaweb/osichat/migrations/0034_chatroom_group_chatroom_visitor.py b/osinaweb/osichat/migrations/0034_chatroom_group_chatroom_visitor.py new file mode 100644 index 00000000..86678620 --- /dev/null +++ b/osinaweb/osichat/migrations/0034_chatroom_group_chatroom_visitor.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.5 on 2024-10-07 07:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('osichat', '0033_chatconnection'), + ] + + operations = [ + migrations.AddField( + model_name='chatroom', + name='group', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='chatroom', + name='visitor', + field=models.BooleanField(default=False), + ), + ] diff --git a/osinaweb/osichat/migrations/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.py b/osinaweb/osichat/migrations/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.py new file mode 100644 index 00000000..f0272d2b --- /dev/null +++ b/osinaweb/osichat/migrations/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.5 on 2024-10-07 07:26 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('osichat', '0034_chatroom_group_chatroom_visitor'), + ] + + operations = [ + migrations.RemoveField( + model_name='chatroom', + name='group', + ), + migrations.RemoveField( + model_name='chatroom', + name='visitor', + ), + migrations.AddField( + model_name='chatroom', + name='type', + field=models.CharField(choices=[('DM', 'DM'), ('DM Group', 'DM Group'), ('Visitor Room', 'Visitor Room')], max_length=15, null=True), + ), + ] diff --git a/osinaweb/osichat/migrations/__pycache__/0034_chatroom_group_chatroom_visitor.cpython-310.pyc b/osinaweb/osichat/migrations/__pycache__/0034_chatroom_group_chatroom_visitor.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd9ee60d9fcc83ece19c17eb217bd3f9de40a74a GIT binary patch literal 687 zcmY*XO>fjN5cNm0$wsY&#K#FFPDr^lmC6yJwnF6sF)%uDR{cEQNL|B&r7!Pu_=?ps1&pWMBm01UWcJ+FB$ zYQfoC1_IB~=H}$eo_@eLHNiRD)I6vzxpm9w&x^EeQeR6k50a?v~ z)dG0SYl+Ds4Fot_WRO65&0%(ZSIz#fwxZ4_Ebn4 zI}F%_seB&rWNq)$cCxGSsN_BaJku+)EG5k!W>$ml(I+vcXB`^w+1Ji>OFJDCU9Mt- zQoc}%F02evzNOTcl{Vp0K!76-fJ4)vn@DHo^85(KC=pQ$31UPhIIDk_Syfwx=lj2Bb*FJ|QKDTSN~nfy&s!38gP@@JFfH?i}$ lO#FP!z5}OGfVg%%-0Zi`9@C3Hf3=qKH4h|#?SXhA{{e{py$ApR literal 0 HcmV?d00001 diff --git a/osinaweb/osichat/migrations/__pycache__/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.cpython-310.pyc b/osinaweb/osichat/migrations/__pycache__/0035_remove_chatroom_group_remove_chatroom_visitor_and_more.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1327e0f14097259b12b96c91c2c62f89f70a8648 GIT binary patch literal 845 zcmZ8f&2G~`5Z=Eej++4DzzL)X0g^9uCE$io5fQyKMQVYAFDutOI1aYgtdo|U;hJYa z;>JtxAbaK1CqSyi&#av&5i9NZn;-2r^Nsaz=o35-S3Lc}2>I!p-6POB#9Kc?qllt8 zDQH9s7BNbWh+>L=A&LW?@y|TsN}Q3PbA`1eVAe0P)Wq{lm$mH{T0veXF133c{UP4^ z7!8n!DiSe8QyOs)vyLNBV#U_Dv&LPFccC})Qlfg_sPa@_`75sWa1I{z)d1TV+Wut2 zkInRSoh8$F9z8fXc>F{CpQM34y%%M!@ zQzTjBdBBZ_MW&C&cHU=@tCPUDo@^SC()v=Owu>AP52XCKh;!GR^AuE2Dkzf-YJ=+~ zcJCAleF3lBGuC^dRD%q6x&F&(Y}$;kD_C#tJ27`1zcbfg!?!hQ4e;`)zCc>b%jZ b5u{0Ohi}n6eAjx0g{aRJ7&lY7LKImE;zL?xx9B`0qezcX1^)R9HmA){gPc?nrA zWrqL;FyNg0O+wL9fKiE2o6&^PmeHQkgE5dXh%uQlg)x({2%?CI5kfP_LTM<)SiIR! Qavj@db_HE_+*bPn00e0uW&i*H delta 194 zcmZn(XbIS0BFaZw3L3F*n(#qUVR3-A|bUGLb~)jSW2P yg3LfJ5GZg130IKu8wdrS{LVa?UnP)(5u%@Aay-w}%^yYCnE^MU5w!pS