Ë
    Ïå	j¥#  ã                   óà   — d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ ddlmZmZ d d	lmZmZmZ ed
„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zed„ «       Zy)é    )ÚrenderÚredirectÚget_object_or_404)Úlogin_required)Úmessages)ÚQÚCountÚMax)ÚJsonResponse)Útimezoneé   )ÚChatÚMessage)ÚUserÚTeacherÚStudentc                 óp  — | j                   }| j                  j                  dd«      }|j                  j	                  «       j                  t        d«      ¬«      j                  d«      }|rC|j                  t        |¬«      t        |¬«      z  t        |¬«      z  «      j                  «       }|D ]–  }|j                  j                  d	«      j                  «       |_        |j                  j                  t        |¬
«       d¬«      j                  «       |_        |j                   j#                  |j$                  ¬«      |_        Œ˜ |j(                  dk(  r=t*        j,                  j                  g d¢¬«      j#                  |j$                  ¬«      }nµ|j(                  dk(  r=t*        j,                  j                  g d¢¬«      j#                  |j$                  ¬«      }ni|j(                  dv r=t*        j,                  j                  g d¢¬«      j#                  |j$                  ¬«      }nt*        j,                  j/                  «       }|D ]Ë  }|j(                  dk(  rM	 |j0                  }|j2                  › d|j4                  › d|j6                  xs d› �j9                  «       |_        Œ_|j(                  dk(  rM	 |j>                  }|j2                  › d|j4                  › d|j6                  xs d› �j9                  «       |_        Œ»|j<                  |_        ŒÍ | j                  j                  dd«      }	|	r5|j                  t        |	¬«      t        |	¬«      z  t        |	¬«      z  «      }||dd ||	dœ}
tA        | d|
«      S #  |j<                  |_        Y �ŒNxY w#  |j<                  |_        Y �ŒgxY w)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      sX  € ð �<‰<€DØ�K‰K�O‰O˜C Ó$€Eð �J‰J�N‰NÓ×%Ñ%ÜÐ4Ó5ð &ó ç�hÐ#Ó$ð 
ñ
 Ø—‘Ü˜eÔ$Ü°Ô7ñ8ä°%Ô8ñ9ó
÷ ‰(‹*ð	 	ð ò HˆØ ŸM™M×2Ñ2°=ÓA×GÑGÓIˆÔØ ŸM™M×0Ñ0Ü�dŒ^ˆOØð 1ó 
÷ ‰%‹'ð 	Ôð
 #'×"3Ñ"3×";Ñ";¸t¿w¹wÐ";Ó"GˆÕðHð ‡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NÊ=ANÎNÎN5c                 óD  — | j                   dk(  �r| j                  j                  d«      }| j                  j                  dd«      }| j                  j                  dd«      }|s!t	        j
                  | d«       t        d«      S t        | j                  j                  «      g|D �cg c]  }t        |«      ‘Œ c}z   }t        t        |«      «      }|dk(  rºt        |«      d	k(  r¬t        j                  j                  |d
¬«      j!                  «       j#                  t%        d«      ¬«      j                  t        |«      ¬«      }|j'                  «       r;t	        j(                  | d«       t        d|j+                  «       j                  ¬«      S t        j                  j-                  |dk(  r|nd|dk(  | j                  ¬«      }|j.                  j                  |«       t	        j0                  | d«       t        d|j                  ¬«      S t        d«      S c c}w )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   Â*Hc                 ó¶  — t        t        || j                  ¬«      }t        j                  j                  |d¬«      j                  | j                  ¬«      j                  d¬«       | j                  dk(  r›| j                  j                  dd	«      j                  «       }|rXt        j                  j                  || j                  |¬
«       t        j                  «       |_        |j!                  dg¬«       t#        d|j$                  ¬«      S |j&                  j)                  d«      }|j*                  j-                  «       }|D ]Ë  }|j.                  dk(  rM	 |j0                  }|j2                  › d|j4                  › d|j6                  xs d	› �j                  «       |_        Œ_|j.                  dk(  rM	 |j<                  }|j2                  › d|j4                  › d|j6                  xs d	› �j                  «       |_        Œ»|j:                  |_        ŒÍ |||dœ}	t?        | d|	«      S #  |j:                  |_        Y ŒöxY w#  |j:                  |_        Y �ŒxY w)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¸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*Æ8AIÈ*H?ÉIc                 ó®  — t        t        || j                  ¬«      }| j                  dk(  r”|j                  j                  | j                  «       |j                  j                  «       dk(  r1|j                  «        t        j                  | d«       t        d«      S t        j                  | d«       t        d«      S t        d|j                  ¬«      S )	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¸G¿L¹LÔI€Dà‡~�~˜ÒØ×Ñ× Ñ  §¡Ô.à×Ñ×"Ñ"Ó$¨Ò)Ø�K‰KŒMÜ×Ñ˜WÐ&;Ô<ô ˜Ó$Ð$ô ×Ñ˜WÐ&EÔFä˜Ó$Ð$ä�M¨4¯7©7Ô3Ð3ó    c                 ó@  — t        t        |¬«      }|j                  dk(  rH	 |j                  }|j                  › d|j
                  › d|j                  xs d› �j                  «       }nc|j                  dk(  rH	 |j                  }|j                  › d|j
                  › d|j                  xs d› �j                  «       }n|j                  }t        |j                  ||j                  |j                  dœ«      S #  |j                  }Y Œ>xY w#  |j                  }Y ŒQxY w)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C: Á9AD Ã:D
ÄDc                 ól  — t        t        || j                  ¬«      }| j                  dk(  rs|j                  j                  | j                  «       t        j                  | d«       |j                  j                  «       dk(  r|j                  «        t        d«      S t        d|j                  ¬«      S )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¸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   