§
    Ïå	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dS )é    )ÚrenderÚredirectÚget_object_or_404)Úlogin_required)Úmessages)ÚQÚCountÚMax)ÚJsonResponse)Útimezoneé   )ÚChatÚMessage)ÚUserÚTeacherÚStudentc                 ó8  — | j         }| j                             dd¦  «        }|j                             ¦   «                              t          d¦  «        ¬¦  «                             d¦  «        }|rW|                     t          |¬¦  «        t          |¬¦  «        z  t          |¬¦  «        z  ¦  «         
                    ¦   «         }|D ]š}|j                             d	¦  «                             ¦   «         |_        |j                             t          |¬
¦  «         d¬¦  «                             ¦   «         |_        |j                             |j        ¬¦  «        |_        Œ›|j        dk    r<t*          j                             g d¢¬¦  «                             |j        ¬¦  «        }nª|j        dk    r<t*          j                             g d¢¬¦  «                             |j        ¬¦  «        }nc|j        dv r<t*          j                             g d¢¬¦  «                             |j        ¬¦  «        }nt*          j                             ¦   «         }|D ]À}|j        dk    rN	 |j        }|j        › d|j        › d|j        pd› �                     ¦   «         |_        ŒH#  |j        |_        Y ŒXxY w|j        dk    rN	 |j        }|j        › d|j        › d|j        pd› �                     ¦   «         |_        Œ¡#  |j        |_        Y Œ±xY w|j        |_        ŒÁ| j                             dd¦  «        }	|	rE|                     t          |	¬¦  «        t          |	¬¦  «        z  t          |	¬¦  «        z  ¦  «        }||dd…         ||	dœ}
tA          | d|
¦  «        S )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      sÝ  € ð Œ<€DØŒK�OŠO˜C Ñ$Ô$€Eð ŒJ�NŠNÑÔ×%Ò%ÝÐ4Ñ5Ô5ð &ñ ô ç‚hÐ#Ñ$Ô$ð 
ð
 ð Ø—’Ý˜eÐ$Ñ$Ô$Ý°Ð7Ñ7Ô7ñ8å°%Ð8Ñ8Ô8ñ9ñ
ô 
÷ Š(‰*Œ*ð	 	ð ð Hð HˆØ œM×2Ò2°=ÑAÔA×GÒGÑIÔIˆÔØ œM×0Ò0Ý�dˆ^‰^Œ^ˆOØð 1ñ 
ô 
÷ Š%‰'Œ'ð 	Ôð
 #'Ô"3×";Ò";¸t¼wÐ";Ñ"GÔ"GˆÔÐð „y�IÒÐÝœ×,Ò,Ø;Ð;Ð;ð -ñ 
ô 
ç
Š'�T”Wˆ'Ñ
Ô
ð 	ˆð 
Œ�iÒ	Ð	Ýœ×,Ò,ØFÐFÐFð -ñ 
ô 
ç
Š'�T”Wˆ'Ñ
Ô
ð 	ˆð 
ŒÐ1Ð	1Ð	1Ýœ×,Ò,ØFÐFÐFð -ñ 
ô 
ç
Š'�T”Wˆ'Ñ
Ô
ð 	ˆõ œ×*Ò*Ñ,Ô,ˆð ð "ð "ˆØŒ6�YÒÐð&Øœ)�Ø!(Ô!2ÐeÐe°WÔ5GÐeÐeÈ'ÔJ]ÐJcÐacÐeÐe×kÒkÑmÔm�”�øð&Øœg�”��øøøØŒV�yÒ Ð ð&Øœ)�Ø!(Ô!2ÐeÐe°WÔ5GÐeÐeÈ'ÔJ]ÐJcÐacÐeÐe×kÒkÑmÔm�”�øð&Øœg�”��øøøàœ'ˆAŒKˆKð ”—’ °Ñ3Ô3€JØð 
Ø'×.Ò.Ý :Ð.Ñ.Ô.Ý JÐ/Ñ/Ô/ñ0å˜zÐ*Ñ*Ô*ñ+ñ
ô 
ˆð Ø(¨¨"¨Ô-ØØ ð	ð €Gõ �'Ð+¨WÑ5Ô5Ð5s   É'9J!Ê!J1Ë 9K:Ë:L
c                 óX  — | j         dk    �r| j                             d¦  «        }| j                             dd¦  «        }| j                             dd¦  «        }|s$t	          j        | d¦  «         t          d¦  «        S t          | j        j	        ¦  «        gd	„ |D ¦   «         z   }t          t          |¦  «        ¦  «        }|dk    rÙt          |¦  «        d
k    rÆt          j                             |d¬¦  «                             ¦   «                              t%          d¦  «        ¬¦  «                             t          |¦  «        ¬¦  «        }|                     ¦   «         r=t	          j        | d¦  «         t          d|                     ¦   «         j	        ¬¦  «        S t          j                             |dk    r|nd|dk    | j        ¬¦  «        }|j                             |¦  «         t	          j        | d¦  «         t          d|j	        ¬¦  «        S t          d¦  «        S )uO   Ð¡Ð¾Ð·Ð´Ð°Ð½Ð¸Ðµ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñ‡Ð°Ñ‚Ð° (Ð»Ð¸Ñ‡Ð½Ñ‹Ð¹ Ð¸Ð»Ð¸ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð¹)ÚPOSTÚusersÚ	chat_typeÚprivateÚnamer   u>   Ð’Ñ‹Ð±ÐµÑ€Ð¸Ñ‚Ðµ Ñ…Ð¾Ñ‚Ñ� Ð±Ñ‹ Ð¾Ð´Ð½Ð¾Ð³Ð¾ ÑƒÑ‡Ð°Ñ�Ñ‚Ð½Ð¸ÐºÐ°rM   c                 ó,   — g | ]}t          |¦  «        ‘ŒS © )Úint)Ú.0Úuids     rL   ú
<listcomp>zcreate_chat.<locals>.<listcomp>h   s   € Ð3QÐ3QÐ3QÀµC¸±H´HÐ3QÐ3QÐ3Qó    é   F)Úparticipants__id__inÚis_groupr<   )r:   uI   Ð§Ð°Ñ‚ Ñ� Ñ�Ñ‚Ð¸Ð¼ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¼ ÑƒÐ¶Ðµ Ñ�ÑƒÑ‰ÐµÑ�Ñ‚Ð²ÑƒÐµÑ‚Úchat_detail©Úchat_idÚgroupN)rS   r]   Ú
created_byu   Ð§Ð°Ñ‚ Ñ�Ð¾Ð·Ð´Ð°Ð½)ÚmethodrO   Úgetlistr2   r   Úerrorr   rV   r0   r    ÚlistÚsetÚlenr   r@   r6   r7   r4   r	   ÚexistsÚinfor8   Úcreater<   Úsuccess)rH   Úuser_idsrQ   Ú	chat_nameÚparticipant_idsÚexisting_chatrI   s          rL   Úcreate_chatrq   [   s  € ð „~˜ÒÑØ”<×'Ò'¨Ñ0Ô0ˆØ”L×$Ò$ [°)Ñ<Ô<ˆ	Ø”L×$Ò$ V¨RÑ0Ô0ˆ	àð 	)ÝŒN˜7Ð$dÑeÔeÐeÝ˜KÑ(Ô(Ð(õ ˜wœ|œÑ/Ô/Ð0Ð3QÐ3QÈÐ3QÑ3QÔ3QÑQˆÝ�s ?Ñ3Ô3Ñ4Ô4ˆð ˜	Ò!Ð!¥c¨/Ñ&:Ô&:¸aÒ&?Ð&?Ý œL×/Ò/Ø%4Øð 0ñ ô ÷ Šh‰jŒjŸš­¨nÑ(=Ô(=˜Ñ>Ô>¿vºvÍCÐP_ÑL`ÔL`¸vÑ?aÔ?að ð
 ×#Ò#Ñ%Ô%ð QÝ”˜gÐ'rÑsÔsÐsÝ °}×7JÒ7JÑ7LÔ7LÔ7OÐPÑPÔPÐPõ Œ|×"Ò"Ø'¨7Ò2Ð2��¸Ø 7Ò*Ø”|ð #ñ 
ô 
ˆð
 	Ô×Ò˜oÑ.Ô.Ð.åÔ˜Ð"7Ñ8Ô8Ð8Ý˜¨t¬wÐ7Ñ7Ô7Ð7å�KÑ Ô Ð rZ   c                 ó<  — t          t          || j        ¬¦  «        }t          j                             |d¬¦  «                             | j        ¬¦  «                             d¬¦  «         | j        dk    r›| j	         
                    dd	¦  «                             ¦   «         }|rVt          j                             || j        |¬
¦  «         t          j        ¦   «         |_        |                     dg¬¦  «         t#          d|j        ¬¦  «        S |j                             d¦  «        }|j                             ¦   «         }|D ]À}|j        dk    rN	 |j        }|j        › d|j        › d|j        pd	› �                     ¦   «         |_        ŒH#  |j        |_        Y ŒXxY w|j        dk    rN	 |j        }|j        › d|j        › d|j        pd	› �                     ¦   «         |_        Œ¡#  |j        |_        Y Œ±xY w|j        |_        ŒÁ|||dœ}	t?          | d|	¦  «        S )u,   Ð”ÐµÑ‚Ð°Ð»ÑŒÐ½Ñ‹Ð¹ Ð¿Ñ€Ð¾Ñ�Ð¼Ð¾Ñ‚Ñ€ Ñ‡Ð°Ñ‚Ð°©r    r<   F)rI   r   r   Tr   rO   Úmessager   )rI   r   ÚtextÚ
updated_at)Úupdate_fieldsr^   r_   Ú
created_atr"   r&   r!   )rI   r   r<   zchat_detail.html) r   r   r0   r   r@   r6   r=   Úupdaterc   rO   r2   rE   rk   r   Únowrv   Úsaver   r    r   r5   r<   r3   r?   r"   rB   rC   rD   rF   rG   r!   r   )
rH   r`   rI   ru   Úmessages_listr<   Úpr"   r!   rK   s
             rL   r^   r^   „   s=  € õ �T g¸G¼LÐIÑIÔI€Dõ „O×Ò ¨eÐÑ4Ô4×<Ò<ÀGÄLÐ<ÑQÔQ×XÒXÐaeÐXÑfÔfÐfà„~˜ÒÐØŒ|×Ò 	¨2Ñ.Ô.×4Ò4Ñ6Ô6ˆØð 	4ÝŒO×"Ò"ØØ”|Øð #ñ ô ð õ
 'œl™nœnˆDŒOØ�IŠI \ NˆIÑ3Ô3Ð3å˜¨t¬wÐ7Ñ7Ô7Ð7ð ”M×*Ò*¨<Ñ8Ô8€Mð Ô$×(Ò(Ñ*Ô*€LØð "ð "ˆØŒ6�YÒÐð&Øœ)�Ø!(Ô!2ÐeÐe°WÔ5GÐeÐeÈ'ÔJ]ÐJcÐacÐeÐe×kÒkÑmÔm�”�øð&Øœg�”��øøøØŒV�yÒ Ð ð&Øœ)�Ø!(Ô!2ÐeÐe°WÔ5GÐeÐeÈ'ÔJ]ÐJcÐacÐeÐe×kÒkÑmÔm�”�øð&Øœg�”��øøøàœ'ˆAŒKˆKð Ø!Ø$ðð €Gõ
 �'Ð-¨wÑ7Ô7Ð7s   Å9FÆFÆ-9G'Ç'G7c                 ó�  — t          t          || j        ¬¦  «        }| j        dk    rŠ|j                             | j        ¦  «         |j                             ¦   «         dk    r*|                     ¦   «          t          j	        | d¦  «         nt          j	        | d¦  «         t          d¦  «        S t          d|j        ¬¦  «        S )	u8   Ð£Ð´Ð°Ð»ÐµÐ½Ð¸Ðµ Ñ‡Ð°Ñ‚Ð° (Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ� Ñ�ÐµÐ±Ñ�)rs   rO   r   u   Ð§Ð°Ñ‚ ÑƒÐ´Ð°Ð»Ñ‘Ð½õ   Ð’Ñ‹ Ð²Ñ‹ÑˆÐ»Ð¸ Ð¸Ð· Ñ‡Ð°Ñ‚Ð°rM   r^   r_   )r   r   r0   rc   r<   Úremover:   Údeleter   rl   r   r    ©rH   r`   rI   s      rL   Údelete_chatrƒ   ¶   sµ   € õ �T g¸G¼LÐIÑIÔI€Dà„~˜ÒÐØÔ× Ò  ¤Ñ.Ô.Ð.àÔ×"Ò"Ñ$Ô$¨Ò)Ð)Ø�KŠK‰MŒMˆMÝÔ˜WÐ&;Ñ<Ô<Ð<Ð<åÔ˜WÐ&EÑFÔFÐFå˜Ñ$Ô$Ð$å�M¨4¬7Ð3Ñ3Ô3Ð3rZ   c                 ó¾  — t          t          |¬¦  «        }|j        dk    rD	 |j        }|j        › d|j        › d|j        pd› �                     ¦   «         }nd#  |j        }Y nYxY w|j        dk    rD	 |j	        }|j        › d|j        › d|j        pd› �                     ¦   «         }n#  |j        }Y n
xY w|j        }t          |j        ||j        |j        dœ¦  «        S )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�IÒÐð	#Ø”lˆGØ"Ô,Ð_Ð_¨wÔ/AÐ_Ð_ÀGÔDWÐD]Ð[]Ð_Ð_×eÒeÑgÔgˆIˆIøð	#Øœ
ˆIˆIˆIøøøØ	Œ�iÒ	Ð	ð	#Ø”lˆGØ"Ô,Ð_Ð_¨wÔ/AÐ_Ð_ÀGÔDWÐD]Ð[]Ð_Ð_×eÒeÑgÔgˆIˆIøð	#Øœ
ˆIˆIˆIøøøà”Jˆ	åØŒgØØ”Ø”	ð	ð ñ ô ð s   £4A Á	A#Á24B' Â'	B2c                 ód  — t          t          || j        ¬¦  «        }| j        dk    rt|j                             | j        ¦  «         t          j        | d¦  «         |j                             ¦   «         dk    r| 	                    ¦   «          t          d¦  «        S t          d|j        ¬¦  «        S )u-   Ð’Ñ‹Ñ…Ð¾Ð´ Ð¸Ð· Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð²Ð¾Ð³Ð¾ Ñ‡Ð°Ñ‚Ð°rs   rO   r   r   rM   r^   r_   )r   r   r0   rc   r<   r€   r   rl   r:   r�   r   r    r‚   s      rL   Ú
leave_chatrˆ   å   sž   € õ �T g¸G¼LÐIÑIÔI€Dà„~˜ÒÐØÔ× Ò  ¤Ñ.Ô.Ð.ÝÔ˜Ð"AÑBÔBÐBàÔ×"Ò"Ñ$Ô$¨Ò)Ð)Ø�KŠK‰MŒMˆMå˜Ñ$Ô$Ð$å�M¨4¬7Ð3Ñ3Ô3Ð3rZ   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   rq   r^   rƒ   r†   rˆ   rU   rZ   rL   ú<module>r‘      sq  ðØ @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ð @Ø 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø #Ð #Ð #Ð #Ð #Ð #Ø *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ð *Ø $Ð $Ð $Ð $Ð $Ð $Ø !Ð !Ð !Ð !Ð !Ð !Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !Ø /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /ð ðL6ð L6ñ „ðL6ð^ ð%!ð %!ñ „ð%!ðP ð.8ð .8ñ „ð.8ðb ð4ð 4ñ „ð4ð$ ðð ñ „ðð6 ð4ð 4ñ „ð4ð 4ð 4rZ   