Ë
    
.Úi½B  ã                   óÚ  — d dl Z d dl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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mZm Z m!Z! d„ Z"d„ Z#d.dede$dz  fd„Z%h d£Z&dZ'h d£Z(de)de*fd„Z+de)de)de*fd„Z,de)de)fd„Z-de)de)de.e*   fd„Z/h d£Z0d „ Z1d!„ Z2d"„ Z3defd#„Z4 G d$„ d%e«      Z5 G d&„ d'e«      Z6 G d(„ d)e«      Z7 G d*„ d+e«      Z8 G d,„ d-e«      Z9y)/é    N)Úsettings)Úcache)Ú	send_mail)ÚExistsÚOuterRefÚQ)ÚAPIView)ÚIsAuthenticated)ÚMultiPartParserÚ
FormParserÚ
JSONParser)ÚResponse©Ústatus)ÚNotFoundÚPermissionDeniedÚValidationError)ÚCustomerMembership)ÚCaseÚCaseMessageÚCaseMessageAttachmentÚCaseMessageReadc                 óÌ  — t         j                  j                  ddd«      j                  | j                  ¬«      j                  d«      j                  «       }|st        d«      ‚|j                  }|st        d«      ‚t        |d«      r|j                  st        d	«      ‚t        |d
«      r|j                  dv rt        d«      ‚t        |dd «      }|st        d«      ‚|||fS )NÚcustomerÚuserÚcustomer__tenant)r   ú-idz,No active customer membership for this user.z"Customer not found for membership.Úportal_enabledzCustomer portal is not enabled.r   )Ú	suspendedÚdisabledzAccount is suspended.Útenantz"No tenant found for this customer.)r   ÚobjectsÚselect_relatedÚfilterr   Úorder_byÚfirstr   r   Úhasattrr   r   Úgetattr)ÚrequestÚ
membershipr   r!   s       ú9/var/www/html/acx/cases/views_customer_portal_messages.pyÚ_cp_contextr,      s×   € ä×"Ñ"ß	‰˜
 FÐ,>Ó	?ß	‰�W—\‘\ˆÓ	"ß	‰�%‹ß	‰‹ð ñ ÜÐMÓNÐNà×"Ñ"€HÙÜÐCÓDÐDäˆxÐ)Ô*°8×3JÒ3JÜÐ@ÓAÐAäˆz˜8Ô$¨×):Ñ):Ð>WÑ)WÜÐ6Ó7Ð7ä�X˜x¨Ó.€FÙÜÐCÓDÐDà�x Ð'Ð'ó    c           	      ó‚   — | sy | j                   | j                  t        | dd «      t        | dd «      t        | dd «      dœS )NÚ
first_nameÚ	last_nameÚemail)ÚidÚusernamer/   r0   r1   )r2   r3   r(   )Úus    r+   Ú_user_to_dictr5   1   sD   € ÙØà�d‰dØ—J‘JÜ˜a ¨tÓ4Ü˜Q ¨TÓ2Ü˜˜G TÓ*ñð r-   ÚmÚis_readc                 ó¢  — |j                   |j                  t        |j                  dd «      t        |j                  dd «      t	        |j
                  «      |j                  |j                  |j                  |j                  |j                  j                  «       |�t        |«      nd |j                  j                  «       D �cg c]|  }|j                   |j                  |j                   |j"                  |j$                  r%| j'                  |j$                  j(                  «      nd |j                  j                  «       dœ‘Œ~ c}dœS c c}w )NÚ	referenceÚtitle)r2   ÚfilenameÚcontent_typeÚsizeÚfileÚ
created_at)r2   Úcase_idÚcase_referenceÚ
case_titleÚauthorÚauthor_sideÚbodyÚ
visibilityÚaction_requiredr?   r7   Úattachments)r2   r@   r(   Úcaser5   rC   rD   rE   rF   rG   r?   Ú	isoformatÚboolrH   Úallr;   r<   r=   r>   Úbuild_absolute_uriÚurl)r)   r6   r7   Úas       r+   Ú_msg_to_dictrP   =   sú   € à�d‰dØ—9‘9Ü! !§&¡&¨+°tÓ<Ü˜aŸf™f g¨tÓ4ä §¡Ó)Ø—}‘}à—‘Ø—l‘lØ×,Ñ,à—l‘l×,Ñ,Ó.à$+Ð$7”4˜”=¸Tð —]‘]×&Ñ&Ó(ö

ð ð —d‘dØŸJ™JØ !§¡ØŸ™ØBCÇ&Â&˜×2Ñ2°1·6±6·:±:Ô>ÈdØŸl™l×4Ñ4Ó6óò

ñ#ð ùò"

s   ÃBE>   ú.csvú.docú.gifú.jpgú.m4aú.movú.mp3ú.mp4ú.oggú.pdfú.pngú.pptú.txtú.wavú.xlsú.docxú.jpegú.opusú.pptxú.webmú.webpú.xlsx)zimage/zaudio/zvideo/>	   útext/csvú
text/plainúapplication/pdfúapplication/mswordúapplication/vnd.ms-excelúapplication/vnd.ms-powerpointúAapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheetúGapplication/vnd.openxmlformats-officedocument.wordprocessingml.documentúIapplication/vnd.openxmlformats-officedocument.presentationml.presentationr@   Úreturnc                 ó   — d| › �S )Nzacx:typing:© )r@   s    r+   Ú_typing_cache_keyrs   ‚   s   € Ø˜˜	Ð"Ð"r-   Úuser_idÚlabelc                 óÈ   — t        | «      }t        j                  |«      xs i }|t        j                  «       dz   dœ|t	        |«      <   t        j
                  ||d¬«       y )Né   )ru   Ú
expires_até
   ©Útimeout)rs   r   ÚgetÚtimeÚstrÚset)r@   rt   ru   ÚkeyÚdatas        r+   Ú_set_typingr‚   †   sK   € Ü
˜GÓ
$€CÜ—‘˜3“Ò% 2€DØ#(¼¿	¹	»Àa¹ÑH€DŒˆW‹ÑÜ	‡I�Iˆc�4 Ö$r-   c                 ó²   — t        | «      }t        j                  |«      xs i }|j                  t	        |«      d «       t        j
                  ||d¬«       y )Nry   rz   )rs   r   r|   Úpopr~   r   )r@   rt   r€   r�   s       r+   Ú_clear_typingr…   �   s@   € Ü
˜GÓ
$€CÜ—‘˜3“Ò% 2€DØ‡H�HŒS�‹\˜4Ô Ü	‡I�Iˆc�4 Ö$r-   Úexclude_user_idc                 ó  — t        j                  t        | «      «      xs i }t        j                  «       }|j	                  «       D ��cg c]6  \  }}t        |«      t        |«      k7  r|j                  dd«      |kD  r|d   ‘Œ8 c}}S c c}}w )Nrx   r   ru   )r   r|   rs   r}   Úitemsr~   )r@   r†   r�   ÚnowÚkÚvs         r+   Ú_get_typing_labelsrŒ   ”   sy   € Ü—‘Ô,¨WÓ5Ó6Ò<¸"€DÜ
�)‰)‹+€Cð —J‘J“L÷áˆAˆqÜˆq‹6”S˜Ó)Ò)¨a¯e©e°LÀ!Ó.DÀsÒ.Jð 	
ˆ'‹
óð ùó s   Á
;B	>   ú	text/htmlúimage/svg+xmlútext/javascriptúapplication/javascriptc                  ó6   — t        t        t        dd«      «      S )NÚACX_CP_MAX_FILE_MBry   ©Úintr(   r   rr   r-   r+   Ú_max_file_mbr•   ¥   s   € ÜŒw”xÐ!5°rÓ:Ó;Ð;r-   c                  ó6   — t        t        t        dd«      «      S )NÚACX_CP_MAX_TOTAL_MBé   r“   rr   r-   r+   Ú_max_total_mbr™   ¨   s   € ÜŒw”xÐ!6¸Ó;Ó<Ð<r-   c           	      ó  ‡
— t        «       dz  dz  }t        «       dz  dz  }d}| D �]a  }t        |dd«      xs dj                  «       j	                  «       }t        |dd«      xs dj                  «       j	                  «       Š
t        t        |dd«      xs d«      }||z  }|dk  rt        dd|xs d	› �i«      ‚||kD  rt        dd
|› dt        «       › d�i«      ‚||kD  rt        ddt        «       › d�i«      ‚|j                  d«      }|dk\  r||d  nd}|t        vrt        dd|› �i«      ‚‰
t        v rt        dd|› �i«      ‚‰
s�Œ&d}	t        ˆ
fd„t        D «       «      rd}	‰
t        v rd}	|	r�ŒPt        dd|› d‰
› d�i«      ‚ y )Ni   r   ÚnameÚ r<   r=   ÚfileszEmpty file is not allowed: r>   zFile too large (z): max z MBzTotal upload too large: max ú.zFile type not allowed: zFile type not allowed (mime): Fc              3   ó@   •K  — | ]  }‰j                  |«      –— Œ y ­w©N)Ú
startswith)Ú.0Úpr<   s     €r+   ú	<genexpr>z)_validate_upload_files.<locals>.<genexpr>Ì   s   øè ø€ ÒK°!�<×*Ñ*¨1×-ÑKùs   ƒTzFile mime not allowed: ú (ú))r•   r™   r(   ÚlowerÚstripr”   r   ÚrfindÚALLOWED_EXTÚFORBIDDEN_MIME_EXACTÚanyÚALLOWED_MIME_PREFIXÚALLOWED_MIME_EXACT)r�   Úmax_fileÚ	max_totalÚtotalÚfr›   r=   ÚdotÚextÚokr<   s             @r+   Ú_validate_upload_filesr¶   «   sØ  ø€ Ü‹~ Ñ$ tÑ+€HÜ“ $Ñ&¨Ñ-€Ià€EØó #dˆÜ˜˜6 2Ó&Ò,¨"×3Ñ3Ó5×;Ñ;Ó=ˆÜ  >°2Ó6Ò<¸"×CÑCÓE×KÑKÓMˆÜ”7˜1˜f aÓ(Ò-¨AÓ.ˆà�‰ˆð �1Š9Ü! 7Ð.IÈ$Ê.ÐRXÐIYÐ,ZÐ"[Ó\Ð\Ø�(Š?Ü! 7Ð.>¸t¸fÀGÌLËNÐK[Ð[^Ð,_Ð"`ÓaÐaØ�9ÒÜ! 7Ð.JÌ=Ë?ÐJ[Ð[^Ð,_Ð"`ÓaÐað �j‰j˜‹oˆØ 1šHˆd�3�4‰j¨"ˆØ”kÑ!Ü! 7Ð.EÀdÀVÐ,LÐ"MÓNÐNð Ô/Ñ/Ü! 7Ð.LÈTÈFÐ,SÐ"TÓUÐUó ØˆBÜÓKÔ7JÔKÔKØ�ØÔ1Ñ1Ø�Ûô & wÐ2IÈ$ÈÈrÐR^ÐQ_Ð_`Ð0aÐ&bÓcÐcñG#dr-   c           	      óv  — 	 | j                   }| j                  }| j                  rMt        | j                  dd«      r6| j                  j                  xs dj                  «       j                  «       nd}t        «       }t        j                  j                  d«      j                  |¬«      }t        t        d«      r|j                  d¬«      }|D ]X  }|j                  }|sŒt        |dd«      xs dj                  «       j                  «       }|sŒB||k7  sŒH|j                  |«       ŒZ t        |d	d«      }	|	rQt        |	dd«      rD|	j                  xs dj                  «       j                  «       }|r||k7  r|j                  |«       |syd
|j                  › �}
| j                   xs dj                  «       }t#        |«      dkD  r|dd dz   }t        t$        dd«      j'                  d«      }|r|› d|j(                  › �nd}d|j                  › d|j*                  › �d| j                  r| j                  j,                  nd› d| j.                  › d�d|dg}|r|j1                  d|› �«       dj3                  |«      }t5        |
|t        t$        dd«      t7        |«      d¬«       y# t8        $ r Y yw xY w)zœ
    Notify everyone directly associated:
    - customer memberships (active) emails
    - tenant assignee email (case.assigned_to)
    Exclude author.
    r1   Nrœ   r   )r   r   Úactiver   Úassigned_tou   ACX â€¢ New message â€¢ é´   é±   z...ÚFRONTEND_CLIENT_PORTAL_BASE_URLú/z/client/messages/zCase: u    â€” zFrom: @u   â€”r¥   r¦   zOpen thread: Ú
ÚDEFAULT_FROM_EMAILT)ÚsubjectÚmessageÚ
from_emailÚrecipient_listÚfail_silently)rI   r   rC   r(   r1   r¨   r§   r   r   r"   r#   r$   r'   r   Úaddr9   rE   Úlenr   Úrstripr2   r:   r3   rD   ÚappendÚjoinr   ÚsortedÚ	Exception)r6   rI   r   Úauthor_emailÚ
recipientsÚcm_qsÚmemr4   r1   ÚassigneerÀ   ÚpreviewÚclient_thread_urlÚthreadÚlinesrE   s                   r+   Ú_notify_case_messagerÕ   Ö   s‰  € ð=Ø�v‰vˆØ—:‘:ˆØABÇÂÌgÐVW×V^ÑV^Ð`gÐimÔNn˜Ÿ™Ÿ™Ò,¨"×3Ñ3Ó5×;Ñ;Ô=Ðtvˆä“Uˆ
ô #×*Ñ*×9Ñ9¸&ÓA×HÑHÐRZÐHÓ[ˆäÔ% xÔ0Ø—L‘L¨�LÓ1ˆEàò 	&ˆCØ—‘ˆAÙØÜ˜Q ¨Ó,Ò2°×9Ñ9Ó;×AÑAÓCˆEÚ˜ ,Ó.Ø—‘˜uÕ%ð	&ô ˜4 °Ó5ˆÙœ ¨'°4Ô8Ø—^‘^Ò) r×0Ñ0Ó2×8Ñ8Ó:ˆEÙ˜ ,Ò.Ø—‘˜uÔ%áØà,¨T¯^©^Ð,<Ð=ˆØ—6‘6’<˜R×&Ñ&Ó(ˆÜˆw‹<˜#ÒØ˜d˜s�m eÑ+ˆGô $¤HÐ.OÐQSÓT×[Ñ[Ð\_Ó`ÐÙEVÐ%Ð&Ð&7¸¿¹°yÑAÐ\^ˆð �T—^‘^Ð$ E¨$¯*©*¨Ð6Ø¨1¯8ª8�a—h‘h×'Ò'¸Ð?¸rÀ!Ç-Á-ÀÐPQÐRØØØð
ˆñ Ø�L‰L˜=¨¨Ð1Ô2à�y‰y˜ÓˆäØØÜœxÐ)=¸tÓDÜ! *Ó-Øö	
øô ò áðús&   ‚DJ, ÄJ, ÄA5J, ÆDJ, Ê,	J8Ê7J8c                   ó   — e Zd ZegZd„ Zy)ÚCustomerPortalInboxViewc                 ó  — t        |«      \  }}}|j                  j                  d«      xs dj                  «       }|j                  j                  d«      xs dj                  «       }|j                  j                  d«      xs dj                  «       }t        j
                  j                  t        d«      |j                  ¬«      }t        j
                  j                  dd«      j                  d	«      j                  ||t        j                  j                  ¬
«      j                  t        |«      ¬«      }	|r5|	j                  t!        |¬«      t!        |¬«      z  t!        |¬«      z  «      }	|dv r|	j                  d¬«      }	|dv r|	j                  d¬«      }	t#        |	j%                  d«      d d «      }
|
D �cg c]  }t'        ||t)        |dd«      ¬«      ‘Œ }}t+        |t,        j.                  ¬«      S c c}w )NÚqrœ   ÚunreadrG   Úpk©Ú
message_idr   rI   rC   rH   )r   Úcase__tenantrF   ©r7   )Úbody__icontains)Úcase__reference__icontains)Úcase__title__icontains©Ú1ÚtrueÚyesT)rG   Fr   éÈ   r7   r   )r,   Úquery_paramsr|   r¨   r   r"   r$   r   r   r   r#   Úprefetch_relatedÚ
VisibilityÚSHAREDÚannotater   r   Úlistr%   rP   r(   r   r   ÚHTTP_200_OK)Úselfr)   r*   r   r!   rÙ   rÚ   rG   Úread_existsÚqsÚrowsr6   r�   s                r+   r|   zCustomerPortalInboxView.get"  s³  € Ü'2°7Ó';Ñ$ˆ
�H˜fà×!Ñ!×%Ñ% cÓ*Ò0¨b×7Ñ7Ó9ˆØ×&Ñ&×*Ñ*¨8Ó4Ò:¸×AÑAÓCˆØ"×/Ñ/×3Ñ3Ð4EÓFÒLÈ"×SÑSÓUˆä%×-Ñ-×4Ñ4ÄÈÃÐU\×UaÑUaÐ4Óbˆô ×Ñß‰^˜F HÓ-ßÑ˜mÓ,ß‰V˜X°FÄ{×G]ÑG]×GdÑGdˆVÓeß‰Xœf [Ó1ˆXÓ2ð 	ñ Ø—‘œ1¨QÔ/´!ÈqÔ2QÑQÔTUÐmnÔToÑoÓpˆBàÐ2Ñ2Ø—‘¨4�Ó0ˆBàÐ)Ñ)Ø—‘ 5�Ó)ˆBä�B—K‘K Ó& t¨Ð,Ó-ˆØX\Ö]ÐST”˜W a´¸¸IÀuÓ1MÖNÐ]ˆÐ]Ü˜¤V×%7Ñ%7Ô8Ð8ùò ^s   Ç G>N)Ú__name__Ú
__module__Ú__qualname__r
   Úpermission_classesr|   rr   r-   r+   r×   r×     s   „ Ø)Ð*Ðó9r-   r×   c                   ó@   — e Zd ZegZeeegZde	fd„Z
de	fd„Zde	fd„Zy)ÚCustomerPortalCaseMessagesViewr@   c                 ó¦   — t        |«      \  }}}t        j                  j                  |||¬«      j	                  «       }|st        d«      ‚||||fS ©N©r2   r!   r   úCase not found.©r,   r   r"   r$   r&   r   ©rï   r)   r@   r*   r   r!   Úcs          r+   Ú	_get_casez(CustomerPortalCaseMessagesView._get_caseE  sU   € Ü'2°7Ó';Ñ$ˆ
�H˜fÜ�L‰L×Ñ 7°6ÀHÐÓM×SÑSÓUˆÙÜÐ,Ó-Ð-Ø˜8 V¨QÐ.Ð.r-   c                 óB  — | j                  ||«      \  }}}}t        j                  j                  t	        d«      |j
                  ¬«      }t        j                  j                  dd«      j                  d«      j                  ||t        j                  j                  ¬«      j                  t        |«      ¬«      j                  d«      }t        |d d	 «      }	|	D �
cg c]  }
t        ||
t!        |
d
d«      ¬«      ‘Œ }}
t#        |t$        j&                  ¬«      S c c}
w )NrÛ   rÜ   rI   rC   rH   )rI   r   rF   rß   r   i,  r7   Fr   )r   r   r"   r$   r   r   r   r#   ré   rê   rë   rì   r   r%   rí   rP   r(   r   r   rî   )rï   r)   r@   r*   r   r!   rÿ   rð   rñ   rò   r6   r�   s               r+   r|   z"CustomerPortalCaseMessagesView.getL  sì   € Ø*.¯.©.¸À'Ó*JÑ'ˆ
�H˜f aä%×-Ñ-×4Ñ4ÄÈÃÐU\×UaÑUaÐ4Óbˆä×Ñß‰^˜F HÓ-ßÑ˜mÓ,ß‰V˜ X¼+×:PÑ:P×:WÑ:WˆVÓXß‰Xœf [Ó1ˆXÓ2ß‰X�e‹_ð 	ô �B�t˜�H‹~ˆØX\Ö]ÐST”˜W a´¸¸IÀuÓ1MÖNÐ]ˆÐ]Ü˜¤V×%7Ñ%7Ô8Ð8ùò ^s   Ã Dc                 óú  — | j                  ||«      \  }}}}|j                  j                  d«      xs dj                  «       }|st	        ddi«      ‚|j                  j                  d«      }t        |«      j                  «       dv rdnd}|j                  j                  d«      }	|	rt        |	«       t        j                  j                  |||j                  d	|t        j                  j                  |¬
«      }
|	D ]T  }t         j                  j                  |
|t#        |dd «      t#        |dd «      t%        t#        |dd«      xs d«      ¬«       ŒV t&        j                  j)                  |
|j                  ¬«       t+        |
«       t        j                  j-                  dd«      j/                  d«      j                  |
j0                  ¬«      }
t3        t5        ||
d¬«      t6        j8                  ¬«      S )NrE   rœ   úThis field is required.rG   rã   TFr�   r   )rI   r   rC   rD   rE   rF   rG   r›   r<   r=   r   )rÁ   r>   r;   r<   r=   ©rÁ   r   rI   rC   rH   ©r2   rß   r   )r   r�   r|   r¨   r   r~   r§   ÚFILESÚgetlistr¶   r   r"   Úcreater   rê   rë   r   r(   r”   r   Úget_or_createrÕ   r#   ré   r2   r   rP   r   ÚHTTP_201_CREATED)rï   r)   r@   r*   r   r!   rÿ   rE   rG   r�   r6   r²   s               r+   Úpostz#CustomerPortalCaseMessagesView.post\  s¿  € Ø*.¯.©.¸À'Ó*JÑ'ˆ
�H˜f aà—‘× Ñ  Ó(Ò.¨B×5Ñ5Ó7ˆÙÜ! 6Ð+DÐ"EÓFÐFà!Ÿ,™,×*Ñ*Ð+<Ó=ˆÜ"% oÓ"6×"<Ñ"<Ó">ÐBVÑ"V™$Ð\aˆà—‘×%Ñ% gÓ.ˆÙÜ" 5Ô)ä×Ñ×&Ñ&ØØØ—<‘<Ø"ØÜ"×-Ñ-×4Ñ4Ø+ð 'ó 
ˆð ò 	ˆAÜ!×)Ñ)×0Ñ0ØØÜ   F¨DÓ1Ü$ Q¨¸Ó=Üœ  F¨AÓ.Ò3°!Ó4ð 1õ ð	ô 	×Ñ×-Ñ-°a¸g¿l¹lÐ-ÔKô 	˜QÔä×Ñ×.Ñ.¨v°xÓ@×QÑQÐR_Ó`×dÑdÐhi×hlÑhlÐdÓmˆÜœ W¨a¸Ô>Äv×G^ÑG^Ô_Ð_r-   N)ró   rô   rõ   r
   rö   r   r   r   Úparser_classesr”   r   r|   r  rr   r-   r+   rø   rø   A  s=   „ Ø)Ð*ÐØ% z°:Ð>€Nð/¨#ó /ð9 Có 9ð )` Sô )`r-   rø   c                   ó   — e Zd ZegZdefd„Zy)ÚCustomerPortalMessageReadViewÚmsg_idc                 óz  — t        |«      \  }}}t        j                  j                  d«      j	                  |||t        j
                  j                  ¬«      j                  «       }|st        d«      ‚t        j                  j                  ||j                  ¬«       t        ddit        j                  ¬«      S )NrI   )r2   r   rÞ   rF   úMessage not found.r  Údetailrµ   r   )r,   r   r"   r#   r$   rê   rë   r&   r   r   r	  r   r   r   rî   )rï   r)   r  r*   r   r!   r6   s          r+   r  z"CustomerPortalMessageReadView.post‹  s£   € Ü'2°7Ó';Ñ$ˆ
�H˜fÜ×Ñ×.Ñ.¨vÓ6×=Ñ=ØØØÜ"×-Ñ-×4Ñ4ð	 >ó 
÷
 ‰%‹'ð 	
ñ ÜÐ/Ó0Ð0ä×Ñ×-Ñ-°a¸g¿l¹lÐ-ÔKÜ˜ 4Ð(´×1CÑ1CÔDÐDr-   N)ró   rô   rõ   r
   rö   r”   r  rr   r-   r+   r  r  ˆ  s   „ Ø)Ð*ÐðE Cô Er-   r  c                   óN   — e Zd ZegZdedefd„Zdefd„Zdedefd„Z	dedefd„Z
y)	Ú#CustomerPortalCaseMessageDetailViewr@   r  c                 óŽ  — t        |«      \  }}}t        j                  j                  |||¬«      j	                  «       }|st        d«      ‚t        j                  j                  dd«      j                  d«      j                  |||t        j                  j                  ¬«      j	                  «       }|st        d«      ‚|||fS )Nrû   rü   rI   rC   rH   )r2   rI   r   rF   r  )r,   r   r"   r$   r&   r   r   r#   ré   rê   rë   )	rï   r)   r@   r  r*   r   r!   rÿ   r6   s	            r+   Ú_get_msgz,CustomerPortalCaseMessageDetailView._get_msg�  s¸   € Ü'2°7Ó';Ñ$ˆ
�H˜fÜ�L‰L×Ñ 7°6ÀHÐÓM×SÑSÓUˆÙÜÐ,Ó-Ð-Ü×Ñ×.Ñ.¨v°xÓ@×QÑQÐR_Ó`×gÑgØ˜A¨¼[×=SÑ=S×=ZÑ=Zð hó 
ç
‰%‹'ð 	
ñ ÜÐ/Ó0Ð0Ø˜1˜aÐÐr-   Úmsgc                 óX   — |j                   |j                  k(  ryt        |dd «      }|dv S )NTÚrole)ÚownerÚmanager)Ú	author_idr2   r(   )rï   r*   r  r   r  s        r+   Ú_can_managez/CustomerPortalCaseMessageDetailView._can_manage©  s/   € Ø�=‰=˜DŸG™GÒ#ØÜ�z 6¨4Ó0ˆØÐ+Ð+Ð+r-   c                 ób  — | j                  |||«      \  }}}| j                  |||j                  «      st        d«      ‚|j                  j                  d«      xs dj                  «       }|st        ddi«      ‚||_        |j                  dg¬«       t        j                  j                  ||j                  ¬«       t        j                  j                  dd«      j                  d	«      j                  |j                   ¬
«      }t#        t%        ||d¬«      t&        j(                  ¬«      S )NúNot allowed.rE   rœ   r  )Úupdate_fieldsr  rI   rC   rH   r  Trß   r   )r  r  r   r   r�   r|   r¨   r   rE   Úsaver   r"   r	  r   r#   ré   r2   r   rP   r   rî   )rï   r)   r@   r  r*   rÿ   r6   rE   s           r+   Úpatchz)CustomerPortalCaseMessageDetailView.patch¯  sû   € ØŸ=™=¨°'¸6ÓBÑˆ
�A�qØ×Ñ 
¨A¨w¯|©|Ô<Ü" >Ó2Ð2à—‘× Ñ  Ó(Ò.¨B×5Ñ5Ó7ˆÙÜ! 6Ð+DÐ"EÓFÐFàˆŒØ	�‰˜f˜XˆÔ&ä×Ñ×-Ñ-°a¸g¿l¹lÐ-ÔKä×Ñ×.Ñ.¨v°xÓ@×QÑQÐR_Ó`×dÑdÐhi×hlÑhlÐdÓmˆÜœ W¨a¸Ô>Äv×GYÑGYÔZÐZr-   c                 óÔ   — | j                  |||«      \  }}}| j                  |||j                  «      st        d«      ‚|j	                  «        t        t        j                  ¬«      S )Nr  r   )r  r  r   r   Údeleter   r   ÚHTTP_204_NO_CONTENT)rï   r)   r@   r  r*   rÿ   r6   s          r+   r$  z*CustomerPortalCaseMessageDetailView.deleteÀ  sV   € ØŸ=™=¨°'¸6ÓBÑˆ
�A�qØ×Ñ 
¨A¨w¯|©|Ô<Ü" >Ó2Ð2Ø	�‰Œ
Üœv×9Ñ9Ô:Ð:r-   N)ró   rô   rõ   r
   rö   r”   r  r   r  r"  r$  rr   r-   r+   r  r  š  sS   „ Ø)Ð*Ðð
 ¨ð 
 °có 
 ð,¨;ó ,ð[ cð [°3ó [ð"; sð ;°Cô ;r-   r  c                   óF   — e Zd ZdZegZdefd„Zdefd„Zdefd„Z	defd„Z
y)ÚCustomerPortalTypingViewuù   
    GET  /customer-portal/cases/{case_id}/typing/  â†’ qui est en train d'Ã©crire
    POST /customer-portal/cases/{case_id}/typing/  â†’ je suis en train d'Ã©crire
    DELETE /customer-portal/cases/{case_id}/typing/ â†’ j'ai arrÃªtÃ© d'Ã©crire
    r@   c                 ó¤   — t        |«      \  }}}t        j                  j                  |||¬«      j	                  «       }|st        d«      ‚|||fS rú   rý   rþ   s          r+   Ú_verify_accessz'CustomerPortalTypingView._verify_accessÐ  sS   € Ü'2°7Ó';Ñ$ˆ
�H˜fÜ�L‰L×Ñ 7°6ÀHÐÓM×SÑSÓUˆÙÜÐ,Ó-Ð-Ø˜8 QÐ&Ð&r-   c                 ó    — | j                  ||«       t        ||j                  j                  «      }t	        d|it
        j                  ¬«      S )NÚtypingr   )r)  rŒ   r   r2   r   r   rî   )rï   r)   r@   Úlabelss       r+   r|   zCustomerPortalTypingView.get×  s>   € Ø×Ñ˜G WÔ-Ü# G¨W¯\©\¯_©_Ó=ˆÜ˜ 6Ð*´6×3EÑ3EÔFÐFr-   c                 ó  — | j                  ||«       |j                  }|j                  › d|j                  › �j	                  «       xs t        |dd «      xs d}t        ||j                  |«       t        ddit        j                  ¬«      S )NÚ r3   z	Quelqu'unrµ   Tr   )r)  r   r/   r0   r¨   r(   r‚   r2   r   r   rî   )rï   r)   r@   r4   ru   s        r+   r  zCustomerPortalTypingView.postÜ  s�   € Ø×Ñ˜G WÔ-Ø�L‰Lˆà�|‰|ˆn˜A˜aŸk™k˜]Ð+×1Ñ1Ó3ò Ü�q˜* dÓ+òàð 	ô
 	�G˜QŸT™T 5Ô)Ü˜˜t˜¬V×-?Ñ-?Ô@Ð@r-   c                 ó    — | j                  ||«       t        ||j                  j                  «       t	        ddit
        j                  ¬«      S )Nrµ   Tr   )r)  r…   r   r2   r   r   rî   )rï   r)   r@   s      r+   r$  zCustomerPortalTypingView.deleteç  s;   € Ø×Ñ˜G WÔ-Ü�g˜wŸ|™|Ÿ™Ô/Ü˜˜t˜¬V×-?Ñ-?Ô@Ð@r-   N)ró   rô   rõ   Ú__doc__r
   rö   r”   r)  r|   r  r$  rr   r-   r+   r'  r'  È  sH   „ ñð
 *Ð*Ðð'¨só 'ðG Có Gð
	A Só 	AðA sô Ar-   r'  r    ):r}   Údjango.confr   Údjango.core.cacher   Údjango.core.mailr   Údjango.db.modelsr   r   r   Úrest_framework.viewsr	   Úrest_framework.permissionsr
   Úrest_framework.parsersr   r   r   Úrest_framework.responser   Úrest_frameworkr   Úrest_framework.exceptionsr   r   r   Úcustomers.modelsr   Úcases.modelsr   r   r   r   r,   r5   rK   rP   rª   r­   r®   r”   r~   rs   r‚   r…   rí   rŒ   r«   r•   r™   r¶   rÕ   r×   rø   r  r  r'  rr   r-   r+   ú<module>r=     s>  ðã å  Ý #Ý &ß 0Ñ 0Ý (Ý 6ß JÑ JÝ ,Ý !ß QÑ Qå /ß RÓ Rò
(ò8	ñ˜[ð °4¸$±;ó òD€ðÐ ò
Ð ð#˜sð # só #ð%˜ð % sð %°3ó %ð%˜3ð %¨ó %ð ð °cð ¸dÀ3¹ió òÐ ò<ò=ò(dðVD˜Kó DôR9˜gô 9ôDD` Wô D`ôNE Gô Eô$+;¨'ô +;ô\"A˜wõ "Ar-   