ó
    Ïå	j¥#  ã                   óà   • S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	J
r
Jr  S SKJr  S SKJr  SSKJrJr  S S	KJrJrJr  \S
 5       r\S 5       r\S 5       r\S 5       r\S 5       r\S 5       rg)é    )ÚrenderÚredirectÚget_object_or_404)Úlogin_required)Úmessages)ÚQÚCountÚMax)ÚJsonResponse)Útimezoneé   )ÚChatÚMessage)ÚUserÚTeacherÚStudentc                 óT  • U R                   nU R                  R                  SS5      nUR                  R	                  5       R                  [        S5      S9R                  S5      nU(       a:  UR                  [        US9[        US9-  [        US9-  5      R                  5       nU HŽ  nUR                  R                  S	5      R                  5       Ul        UR                  R                  [        US
9) SS9R                  5       Ul        UR                   R#                  UR$                  S9Ul        M�     UR(                  S:X  a7  [*        R,                  R                  / SQS9R#                  UR$                  S9nO¬UR(                  S:X  a7  [*        R,                  R                  / SQS9R#                  UR$                  S9nOeUR(                  S;   a7  [*        R,                  R                  / SQS9R#                  UR$                  S9nO[*        R,                  R/                  5       nU HÚ  nUR(                  S:X  aS   UR0                  nUR2                   SUR4                   SUR6                  =(       d    S 3R9                  5       Ul        Mf  UR(                  S:X  aS   UR>                  nUR2                   SUR4                   SUR6                  =(       d    S 3R9                  5       Ul        MÉ  UR<                  Ul        MÜ     U R                  R                  SS5      n	U	(       a,  UR                  [        U	S9[        U	S9-  [        U	S9-  5      nUUSS UU	S.n
[A        U SU
5      $ !   UR<                  Ul         GM[  = f!   UR<                  Ul         GMu  = f)uB   Ð¡Ð¿Ð¸Ñ�Ð¾Ðº Ñ‡Ð°Ñ‚Ð¾Ð² Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ� Ñ� Ð¿Ð¾Ð¸Ñ�ÐºÐ¾Ð¼ÚqÚ Úmessages__created_at)Úlast_message_timez-last_message_time)Úname__icontains)Ú"participants__last_name__icontains)Ú#participants__first_name__icontainsz-created_at©ÚsenderF©Úis_read©ÚidÚstudent)ÚteacherÚadminÚacademic_staff)Úrole__inr"   )r!   r"   r#   r$   )r#   r$   Ú Úuser_search)Úlast_name__icontains)Úfirst_name__icontains)Úemail__icontainsNé   )ÚchatsÚusers_for_chatÚqueryÚ
user_queryzchat_list.html)!ÚuserÚGETÚgetr,   ÚallÚannotater
   Úorder_byÚfilterr   Údistinctr   ÚfirstÚlast_messageÚcountÚunread_countÚparticipantsÚexcluder    Úother_participantsÚroler   ÚobjectsÚnoner"   Ú	last_nameÚ
first_nameÚmiddle_nameÚstripÚ	full_nameÚemailr!   r   )Úrequestr0   r.   r,   Úchatr-   Úur"   r!   r/   Úcontexts              ÚD:\diplom_project\chat\views.pyÚ	chat_listrM      sP  € ð �<‰<€DØ�K‰K�O‰O˜C Ó$€Eð �J‰J�N‰NÓ×%Ñ%ÜÐ4Ó5ð &ð ç�hÐ#Ó$ð 
ö
 Ø—‘Ü˜eÑ$Ü°Ñ7ñ8ä°%Ñ8ñ9ó
÷ ‰(‹*ð	 	ó ˆØ ŸM™M×2Ñ2°=ÓA×GÑGÓIˆÔØ ŸM™M×0Ñ0Ü�d‰^ˆOØð 1ð 
÷ ‰%‹'ð 	Ôð
 #'×"3Ñ"3×";Ñ";¸t¿w¹wÐ";Ð"GˆÖñ ð ‡y�y�IÓÜŸ™×,Ñ,Ú;ð -ð 
ç
‰'�T—W‘Wˆ'Ð
ñ 	ð 
�‰�iÓ	ÜŸ™×,Ñ,ÚFð -ð 
ç
‰'�T—W‘Wˆ'Ð
ñ 	ð 
�‰Ð1Ó	1ÜŸ™×,Ñ,ÚFð -ð 
ç
‰'�T—W‘Wˆ'Ð
ñ 	ô Ÿ™×*Ñ*Ó,ˆó ˆØ�6‰6�YÓð&ØŸ)™)�Ø!(×!2Ñ!2Ð 3°1°W×5GÑ5GÐ4HÈÈ'×J]ÑJ]×JcÐacÐIdÐe×kÑkÓm�–ð �V‰V�yÓ ð&ØŸ)™)�Ø!(×!2Ñ!2Ð 3°1°W×5GÑ5GÐ4HÈÈ'×J]ÑJ]×JcÐacÐIdÐe×kÑkÓm�–ð Ÿ'™'ˆAŽKñ ð" —‘—‘ °Ó3€JÞØ'×.Ñ.Ü :Ñ.Ü JÑ/ñ0ä˜zÑ*ñ+ó
ˆð Ø(¨¨"Ð-ØØ ñ	€Gô �'Ð+¨WÓ5Ð5øð5&ØŸg™g�—�ûð
&ØŸg™g�—�ús   ÉAM6Ê)ANÍ6NÎN'c                 óH  • U R                   S:X  Ga  U R                  R                  S5      nU R                  R                  SS5      nU R                  R                  SS5      nU(       d"  [        R
                  " U S5        [        S5      $ [        U R                  R                  5      /U Vs/ s H  n[        U5      PM     sn-   n[        [        U5      5      nUS:X  aµ  [        U5      S	:X  a¦  [        R                  R                  US
S9R!                  5       R#                  [%        S5      S9R                  [        U5      S9nUR'                  5       (       a9  [        R(                  " U S5        [        SUR+                  5       R                  S9$ [        R                  R-                  US:X  a  UOSUS:H  U R                  S9nUR.                  R                  U5        [        R0                  " U S5        [        SUR                  S9$ [        S5      $ s  snf )uO   Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ‡Ð°Ñ‚Ð° (Ð»Ð¸Ñ‡Ð½Ñ‹Ð¹ Ð¸Ð»Ð¸ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹)ÚPOSTÚusersÚ	chat_typeÚprivateÚnamer   u>   Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ…Ð¾Ñ‚Ñ� Ð±Ñ‹ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑƒÑ‡Ð°Ñ�Ñ‚Ð½Ð¸ÐºÐ°rM   é   F)Úparticipants__id__inÚis_groupr<   )r:   uI   Ð§Ð°Ñ‚ Ñ� Ñ�Ñ‚Ð¸Ð¼ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ ÑƒÐ¶Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚Úchat_detail©Úchat_idÚgroupN)rS   rV   Ú
created_byu   Ð§Ð°Ñ‚ Ñ�Ð¾Ð·Ð´Ð°Ð½)ÚmethodrO   Úgetlistr2   r   Úerrorr   Úintr0   r    ÚlistÚsetÚlenr   r@   r6   r7   r4   r	   ÚexistsÚinfor8   Úcreater<   Úsuccess)rH   Úuser_idsrQ   Ú	chat_nameÚuidÚparticipant_idsÚexisting_chatrI   s           rL   Úcreate_chatrl   [   sÈ  € ð ‡~�~˜ÔØ—<‘<×'Ñ'¨Ó0ˆØ—L‘L×$Ñ$ [°)Ó<ˆ	Ø—L‘L×$Ñ$ V¨RÓ0ˆ	æÜ�NŠN˜7Ð$dÔeÜ˜KÓ(Ð(ô ˜wŸ|™|Ÿ™Ó/Ð0ÉÓ3QÊÀ´C¸¶HÉÑ3QÑQˆÜœs ?Ó3Ó4ˆð ˜	Ó!¤c¨/Ó&:¸aÓ&?Ü ŸL™L×/Ñ/Ø%4Øð 0ð ÷ ‰h‹jŸ™¬¨nÓ(=˜Ð>¿v¹vÌCÐP_ÓL`¸vÐ?að ð
 ×#Ñ#×%Ñ%Ü—’˜gÐ'rÔsÜ °}×7JÑ7JÓ7L×7OÑ7OÑPÐPô �|‰|×"Ñ"Ø'¨7Ó2‘¸Ø 7Ñ*Ø—|‘|ð #ð 
ˆð
 	×Ñ×Ñ˜oÔ.ä×Ò˜Ð"7Ô8Ü˜¨t¯w©wÑ7Ð7ä�KÓ Ð ùò3 4Rs   Â1Hc                 ó¾  • [        [        XR                  S9n[        R                  R                  USS9R                  U R                  S9R                  SS9  U R                  S:X  a˜  U R                  R                  SS	5      R                  5       nU(       aS  [        R                  R                  UU R                  US
9  [        R                  " 5       Ul        UR!                  S/S9  [#        SUR$                  S9$ UR&                  R)                  S5      nUR*                  R-                  5       nU HÚ  nUR.                  S:X  aS   UR0                  nUR2                   SUR4                   SUR6                  =(       d    S	 3R                  5       Ul        Mf  UR.                  S:X  aS   UR<                  nUR2                   SUR4                   SUR6                  =(       d    S	 3R                  5       Ul        MÉ  UR:                  Ul        MÜ     UUUS.n	[?        U SU	5      $ !   UR:                  Ul         GM  = f!   UR:                  Ul         GM"  = f)u,   Ð”ÐµÑ‚Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ñ€Ð¾Ñ�Ð¼Ð¾Ñ‚Ñ€ Ñ‡Ð°Ñ‚Ð°©r    r<   F)rI   r   r   Tr   rO   Úmessager   )rI   r   ÚtextÚ
updated_at)Úupdate_fieldsrW   rX   Ú
created_atr"   r&   r!   )rI   r   r<   zchat_detail.html) r   r   r0   r   r@   r6   r=   Úupdater\   rO   r2   rE   re   r   Únowrq   Úsaver   r    r   r5   r<   r3   r?   r"   rB   rC   rD   rF   rG   r!   r   )
rH   rY   rI   rp   Úmessages_listr<   Úpr"   r!   rK   s
             rL   rW   rW   „   s  € ô œT g¿L¹LÑI€Dô ‡O�O×Ñ ¨eÐÐ4×<Ñ<ÀGÇLÁLÐ<ÐQ×XÑXÐaeÐXÑfà‡~�~˜ÓØ�|‰|×Ñ 	¨2Ó.×4Ñ4Ó6ˆÞÜ�O‰O×"Ñ"ØØ—|‘|Øð #ñ ô
 'Ÿlšl›nˆDŒOØ�I‰I \ NˆIÑ3ä˜¨t¯w©wÑ7Ð7ð —M‘M×*Ñ*¨<Ó8€Mð ×$Ñ$×(Ñ(Ó*€LÛˆØ�6‰6�YÓð&ØŸ)™)�Ø!(×!2Ñ!2Ð 3°1°W×5GÑ5GÐ4HÈÈ'×J]ÑJ]×JcÐacÐIdÐe×kÑkÓm�–ð �V‰V�yÓ ð&ØŸ)™)�Ø!(×!2Ñ!2Ð 3°1°W×5GÑ5GÐ4HÈÈ'×J]ÑJ]×JcÐacÐIdÐe×kÑkÓm�–ð Ÿ'™'ˆAŽKñ ð" Ø!Ø$ñ€Gô
 �'Ð-¨wÓ7Ð7øð!&ØŸg™g�—�ûð
&ØŸg™g�—�ús   ÅAH+Æ1AIÈ+IÉIc                 ó”  • [        [        XR                  S9nU R                  S:X  a�  UR                  R                  U R                  5        UR                  R                  5       S:X  a(  UR                  5         [        R                  " U S5        O[        R                  " U S5        [        S5      $ [        SUR                  S9$ )	u8   Ð£Ð´Ð°Ð»ÐµÐ½Ð¸Ðµ Ñ‡Ð°Ñ‚Ð° (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ�ÐµÐ±Ñ�)rn   rO   r   u   Ð§Ð°Ñ‚ ÑƒÐ´Ð°Ð»Ñ‘Ð½õ   Ð’Ñ‹ Ð²Ñ‹ÑˆÐ»Ð¸ Ð¸Ð· Ñ‡Ð°Ñ‚Ð°rM   rW   rX   )r   r   r0   r\   r<   Úremover:   Údeleter   rf   r   r    ©rH   rY   rI   s      rL   Údelete_chatr~   ¶   s–   € ô œT g¿L¹LÑI€Dà‡~�~˜ÓØ×Ñ× Ñ  §¡Ô.à×Ñ×"Ñ"Ó$¨Ó)Ø�K‰KŒMÜ×Ò˜WÐ&;Õ<ä×Ò˜WÐ&EÔFä˜Ó$Ð$ä�M¨4¯7©7Ñ3Ð3ó    c                 óR  • [        [        US9nUR                  S:X  aM   UR                  nUR                   SUR
                   SUR                  =(       d    S 3R                  5       nOiUR                  S:X  aM   UR                  nUR                   SUR
                   SUR                  =(       d    S 3R                  5       nOUR                  n[        UR                  UUR                  UR                  S.5      $ !   UR                  n N>= f!   UR                  n NQ= f)ud   ÐŸÐ¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ðµ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ð¸ Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ðµ Ð´Ð»Ñ� Ñ�Ð¾Ð·Ð´Ð°Ð½Ð¸Ñ� Ñ‡Ð°Ñ‚Ð°r   r"   r&   r   r!   )r    rF   rG   r?   )r   r   r?   r"   rB   rC   rD   rE   rG   r!   r   r    )rH   Úuser_idr0   r"   rF   r!   s         rL   Úget_user_infor‚   É   s  € ô œT gÑ.€Dà‡y�y�IÓð	#Ø—l‘lˆGØ"×,Ñ,Ð-¨Q¨w×/AÑ/AÐ.BÀ!ÀG×DWÑDW×D]Ð[]ÐC^Ð_×eÑeÓg‰Ið 
�‰�iÓ	ð	#Ø—l‘lˆGØ"×,Ñ,Ð-¨Q¨w×/AÑ/AÐ.BÀ!ÀG×DWÑDW×D]Ð[]ÐC^Ð_×eÑeÓg‰Ið —J‘Jˆ	äØ�g‰gØØ—‘Ø—	‘	ñ	ó ð øð	#ØŸ
™
ŠIûð
	#ØŸ
™
ŠIús    AD Á=AD ÄDÄD&c                 ód  • [        [        XR                  S9nU R                  S:X  au  UR                  R                  U R                  5        [        R                  " U S5        UR                  R                  5       S:X  a  UR                  5         [        S5      $ [        SUR                  S9$ )u-   Ð’Ñ‹Ñ…Ð¾Ð´ Ð¸Ð· Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ Ñ‡Ð°Ñ‚Ð°rn   rO   rz   r   rM   rW   rX   )r   r   r0   r\   r<   r{   r   rf   r:   r|   r   r    r}   s      rL   Ú
leave_chatr„   å   s…   € ô œT g¿L¹LÑI€Dà‡~�~˜ÓØ×Ñ× Ñ  §¡Ô.Ü×Ò˜Ð"AÔBà×Ñ×"Ñ"Ó$¨Ó)Ø�K‰KŒMä˜Ó$Ð$ä�M¨4¯7©7Ñ3Ð3r   N)Údjango.shortcutsr   r   r   Údjango.contrib.auth.decoratorsr   Údjango.contribr   Údjango.db.modelsr   r	   r
   Údjango.httpr   Údjango.utilsr   Úmodelsr   r   Úusers.modelsr   r   r   rM   rl   rW   r~   r‚   r„   © r   rL   Ú<module>rŽ      s£   ðß @Ñ @Ý 9Ý #ß *Ñ *Ý $Ý !ß !ß /Ñ /ð ñL6ó ðL6ð^ ñ%!ó ð%!ðP ñ.8ó ð.8ðb ñ4ó ð4ð$ ñó ðð6 ñ4ó ñ4r   