
    Yf                         d dl Z d dlZd dlmZmZmZ d dlmZ d dlmZ d dl	T d dl
mZ d dlmZmZ  G d d	e          ZdS )
    N)datetimetimezonedate)Path)BeautifulSoup)*)CmfMessageMixin)before_requestcmf_contextc                   (    e Zd Zi Ze                    ej                            e	j
        d          g          Zeed<    ej        di eZej        dgz   Zdd fd
Z fdZd Zd	 Zed fd	            Zd ZddedefdZddZd Zd Z xZS )CmfWhatsappzmodules/voip/templatesloadersend_messager   )depthc                :     t                      j        |d|i|S )Nr   )supersave)selfr   argskwargs	__class__s       $./modules/crm/models/cmf_whatsapp.pyr   zCmfWhatsapp.save   s#    uww|T99&999    c                 r     t          t          |           j        |i |}|                     d           d S )Nwhatsapp_delete)r   r   deletesend_cmd)r   r   r   resr   s       r   r   zCmfWhatsapp.delete   s=    -eK&&-t>v>>'(((((r   c                 0    |                      d           dS )um   
        Отправляем событие на отключение сессии
        :return:
        whatsapp_disconnectNr   r   s    r   
disconnectzCmfWhatsapp.disconnect   s    
 	+,,,,,r   c                 v    |                      dg           |                     dd| j        j        i           d S )Nload_from_datewhatsapp_connect)load_fieldsr   r%   jsonr"   s    r   connectzCmfWhatsapp.connect$   sA    *+,,,(+;T=P=U*VWWWWWr   Nc                 d    |dk    r|sg }|g dg}dg} t                      j        |f||d|S )Nparent)zstatus.status_typez!=CLOSEDCmfPipeline)filtermodels_list)r   field_options_list)clsrelation_field_namer.   r/   r   r   s        r   r0   zCmfWhatsapp.field_options_list(   s\    (** DDDEF(/K)uww)*=pfZeppiopppr   c                 0    |                      d           d S )Nwhatsapp_statusr!   r"   s    r   check_statuszCmfWhatsapp.check_status1   s    '(((((r   cmddatac                     |t                      }t          j        |d<   | j        j        |d<   t          ||dt          d            d S )Norg_namecrm_idz	/whatsapp)	namespacesocket_clientroom)dictconfigORG_NAMEidvaluecmf_emit_eventwhatsapp_sio)r   r6   r7   s      r   r   zCmfWhatsapp.send_cmd4   sI    <66D!?ZXsDK|Z^______r   c                    |sd S | d}d }t           j                            |          }t                      }	t	          |          }
g }|
                    d          D ]C}d|j                            dd          v r$|                    t          |d                     D|
                    d          D ]&}|                    t          |d	                     '|r\|D ]W}|d
         }|j                            d          }t          
                    d|          d         }t           j                            dd|gdg          }t                               |                    d          d         | |d          }t          |j        d          5 }|                                }d d d            n# 1 swxY w Y   t#          j        |                                          }||	d<   t(          j                            d|                    d          d                    |	d<   |d         |	d<   Yn2|
                                }t                               || |d          }|r)||_        d|_        ||_        |                                 |j        j        |	d<   |j        j        |	d<   |j        j        |	d<   |j        j        |	d<   |                      d |	           |S )!Nz@s.whatsapp.netazcmf-fileclass file)objtypeimgimagerJ   srcz	/files/.*r   url==r   )r.   fields/sending)textchannel	client_idmessage_statusrb.   	mime_typerK   outphonemessagecrm_message_id
message_idwhatsapp_message_send)!models	CmfPersonget_by_phoner>   r   findAllattrsgetappendrefindallCmfAttachmentCmfChannelMessagesplitopen	file_pathreadbase64	b64encodedecode	mimetypes	types_mapget_textchat_messagemessage_flow	person_tor   rW   rB   rU   rA   ra   r   )r   phone_numberr_   rx   r   r   rW   channel_msgcontactparamssoupfilesrJ   _filefull_urlurl_path
attachmentfrL   	plain_msgs                       r   r   zCmfWhatsapp.send_message<   s5    	F#444	"//== W%%<<$$ 	9 	9CSY]]7B7777Tc777888<<&& 	6 	6CLL#G4445555 	p / /El9==//::lH==a@#155eT8=T^a]b5cc
$66HNN3<O<OPR<S?Cyir 7 t t*.55 #&&((C# # # # # # # # # # # # # # #&s++2244!$v&/&9&=&=>Z(..QTBUBUVWBX>Z>Z&[&[{#!&vv/ I 22	;?9en 3 p pK 	'3K$',K$$+K!%/5w',2y#.>#7 *5;|-v666s   F<<G 	G 	c                    |                      | j        d           t          j                             |d         | j                  }|rd S t	          j        |d                   }|                                | j        k     rd S t                              |          }| |_        |d         |_	        |d         |_
        |j
                            d          d	         }t          j                            |g d
          }|d         rd|_        d|_        ||_        nd|_        ||_        d}d}	|d         rT|                    d           d|j         d|j        j         }
|                     |d         |
|d                   }d| }	|d         dk    r|d         |_        n|d         dk    r>| j                            d          }t3          |	d          } |j        d#i ||_        n@|d         dk    rd|	 d|_        n(|d         dk    rd |	 d|d          d!|_        nd"|_        |                                 |S )$NT)
for_updateId)ra   
channel_id	Timestamp)message_raw	RemoteJid@r   )
user_localrP   F)r.   FromMer]   sentinrH   rI   z%Y%m%d_%H%M%S_r\   z/filesrK   rU   Textaudiozrecord.html)rO   rU   rM   z
<img src="z">documentz	<a href="z</a>u4   Не поддерживаемое сообщение )rh   rA   rc   rm   r   fromisoformatr   r%   rV   ra   rW   rn   rd   get_or_create_by_phonery   rX   rz   person_fromstrftimecode
cmf_author
_save_filerU   
_jinja_envget_templater>   renderr   )r   r   r   r   r|   message_dater^   r}   rp   rO   nametemplatecontexts                r   receive_messagezCmfWhatsapp.receive_messagej   s    	T***.22k$>O\`\c2dd 	F-k+.FGG!444F..;.GG"!,T!2 +K 8%++C003"99%HcHcHc9ddx  	.',K$)/K&$+K!!'+K$&-K#	v 	'"++O<<kkw|kkkNdNikkDF(;T;{C[\\I&9&&Cv&((*62K G++33MBBHs,,,G.x9999K G++3C333K J..K3KK+f2EKKKKUKr   c                 0   t          j        |                    d          d                   }|dk    rd}||z   }t          j         d| j         dt          j                                        d           d| }t          
                    d|            t          j        j        j                                        }|                    |          }|                    d	d
d
           |                    t'          j        |          d	           |S )N;r   z
image/webpz.webpz/files/obj/rR   z%Y%mu/   Сохраняем файл сообщения FT)is_direxist_okparents)backup)ru   guess_extensionrn   r?   PROJECT_DIR
class_namer   todayr   gdebugrc   CmfRFiledpdata_driverget_rd	get_rfilecreatewriterr   	b64decode)	r   	file_datar   r\   file_extensionreq_filenamerp   rdiskrfiles	            r   r   zCmfWhatsapp._save_file   s    "29??33G3G3JKK$$$Nn,)vvdovv
H]H]^dHeHevvhtvv		M)MMNNN".5577	**ED$???F$Y//>>>r   r   )NN)N)__name__
__module____qualname___optionsjinja2FileSystemLoaderospathjoinr?   r   _loaderEnvironmentr   r	   api_methodsr   r   r#   r)   classmethodr0   r5   strr>   r   r   r   r   __classcell__)r   s   @r   r   r      s       H%%rw||F4FH`'a'a&bccG HX##//h//J!-1
 
K !" : : : : : : :) ) ) ) )- - -X X X q q q q q [q) ) )` `C `t ` ` ` `, , , ,\0 0 0d      r   r   )rr   ru   r   r   r   pathlibr   bs4r   cmf.include$modules.crm.models.cmf_message_mixinr	   cmf.appr
   r   r   r   r   r   <module>r      s         - - - - - - - - - -                 @ @ @ @ @ @ / / / / / / / /\ \ \ \ \/ \ \ \ \ \r   