
    &k(iZ                         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                   6    e Zd Zdej        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 )CmfWhatsapp
autoescapez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/   r0   r   r   s        r   r1   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_status2   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   r7   r8   s      r   r   zCmfWhatsapp.send_cmd5   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imagerK   srcz	/files/.*r   url==r   )r/   fields/sending)textchannel	client_idmessage_statusrb.   	mime_typerL   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   rX   rC   rV   rB   rb   r   )r   phone_numberr`   ry   r   r   rX   channel_msgcontactparamssoupfilesrK   _filefull_urlurl_path
attachmentfrM   	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)rb   
channel_id	Timestamp)message_raw	RemoteJid@r   )
user_localrQ   F)r/   FromMer^   sentinrI   rJ   z%Y%m%d_%H%M%S_r]   z/filesrL   rV   Textaudiozrecord.html)rP   rV   rN   z
<img src="z">documentz	<a href="z</a>u4   Не поддерживаемое сообщение )ri   rB   rd   rn   r   fromisoformatr   r&   rW   rb   rX   ro   re   get_or_create_by_phonerz   rY   r{   person_fromstrftimecode
cmf_author
_save_filerV   
_jinja_envget_templater?   renderr   )r   r   r   r   r}   message_dater_   r~   rq   rP   nametemplatecontexts                r   receive_messagezCmfWhatsapp.receive_messagek   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/rS   z%Y%mu/   Сохраняем файл сообщения FT)is_direxist_okparents)backup)rv   guess_extensionro   r@   PROJECT_DIR
class_namer   todayr   gdebugrd   CmfRFiledpdata_driverget_rd	get_rfilecreatewriters   	b64decode)	r   	file_datar   r]   file_extensionreq_filenamerq   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__APPselect_jinja_autoescape_optionsjinja2FileSystemLoaderospathjoinr@   r   _loaderEnvironmentr   r	   api_methodsr   r   r$   r*   classmethodr1   r6   strr?   r   r   r   r   __classcell__)r   s   @r   r   r      s       c9: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   )rs   rv   r   r   r   pathlibr   bs4r   cmf.include$modules.crm.models.cmf_message_mixinr	   cmf.appr
   r   r   r   r   r   <module>r      s         - - - - - - - - - -                 @ @ @ @ @ @ / / / / / / / /] ] ] ] ]/ ] ] ] ] ]r   