o
    :e \                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlZd dl	m
Z
 d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d dlZd dlZe d
krYdZndZ	 e jd e e jd d e jd d e jd d d dlmZ d dlmZ d dlm Z  d dl!m"Z" d dl#m$Z$ d dl#m%Z% d dl#m&Z& e Z'e  Z(e" Z)e% Z*e$ Z+e& Z,dZ-G dd de.Z/dS )    N)timezone)abc)MIMEText)MIMEMultipart)MIMEBase)	MIMEImage)encoders)HeaderWindowszVH:\colect\biblioteka\programs\LiClipse 10.0.0\LiClipse Workspace\Telegram_ESP32WebApp\z/opt/Telegram_ESP32/z../..z..*)clC)clManTEMP_DB)clManTZone_DB)clManEmail_DB)clMLog)clMDB)clMLogRequestzSSL/TLSc                   @   s.  e Zd ZdZi Zdd Zedd Zedd Zedd	 Z	ed
d Z
edd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zedd Zed d! Zed"d# Zed$d% Zed&d' Zed(d) Zed*d+ Zed5d.d/Zed0d1 Zd2d3 Zd4S )6
cl_man_reqz    
 
    c                 C   s   d S )N )selfr   r   K/opt/Telegram_ESP32/site2/telegram_esp32adv/flaskdir/handlers/cl_man_req.py__init__D   s   zcl_man_req.__init__c                 C   s   d}|   }|D ]r}t| | tjrF|jd| |  | |   }d|v r'd}|jd| |jd| tj| | |  | | |< q|jd| | d  t	t
| | D ] }tj| | | |  | | | |< t| | | |  qYq| S )NDTz&cl_man_req Convert_to_date dict >>> %sTIMEz-cl_man_req Convert_to_date o_dict_keys >>> %sz,cl_man_req Convert_to_date Name_o_key >>> %sz&cl_man_req Convert_to_date list >>> %sr   )keys
isinstancer   Mappingloggerwarningdatetimefromtimestamp	isoformatrangelenprint)dictResapp
Name_o_key	dict_keyskeyo_dict_keysir   r   r   Convert_to_dateG   s"   "(zcl_man_req.Convert_to_datec                 C      t | |}|jd| |S )Nzcl_man_req Ch_lang ans >>> %s)v_clMDBCh_langr   r   )id_telegramlang_newr&   ansr   r   r   r/   _      zcl_man_req.Ch_langc                 C   r-   )Nzcl_man_req ChTZone ans >>> %s)v_clManTZone_DBChTZone_BYmacr   r   )mactzoner&   r2   r   r   r   ChTZonee   r3   zcl_man_req.ChTZonec                  C   s   t  dkr
d} | S d} | S )Nr
      r   )platformsystem)is_winr   r   r   r<   k   s
   zcl_man_req.is_winc                 C   s"   |j d|  t| |t_tjS )Nz&cl_man_req get_lang id_telegram >>> %s)r   r   r.   get_id_langr   ID_lang)r0   language_coder&   r   r   r   get_langs   s   zcl_man_req.get_langc                 C   s   |j d|  t| }|S )Nz%cl_man_req get_TZONE_BYmac mac >>> %s)r   r   r4   get_TZONE_BYmac)r6   r&   r7   r   r   r   rA   z   s   
zcl_man_req.get_TZONE_BYmacc                 C   *   t | }|jd|  |jd| |S )Nz*cl_man_req get_macByAPI_KEY API_KEY >>> %sz&cl_man_req get_macByAPI_KEY mac >>> %s)v_clManTEMP_DBget_macByAPI_KEYr   r   API_KEYr&   r6   r   r   r   rD         
zcl_man_req.get_macByAPI_KEYc                 C   rB   )Nz+cl_man_req get_macByAPI_KEY2 API_KEY >>> %sz'cl_man_req get_macByAPI_KEY2 mac >>> %s)rC   get_macByAPI_KEY2r   r   rE   r   r   r   rH      rG   zcl_man_req.get_macByAPI_KEY2c                 C   s,   t |}t | |||}|jd| |S )Nz;cl_man_req get_macBy_name_deviceAndIdUserGrafana mac >>> %s)rC   get_id_telegramByIdUserGrafana$get_macBy_id_telegramAnd_name_devicer   r   )name_deviceid_user_grafanalogin_user_grafanar&   r0   r6   r   r   r   %get_macBy_name_deviceAndIdUserGrafana   s   
z0cl_man_req.get_macBy_name_deviceAndIdUserGrafanac                 C   sz   |  dd} |  } | tj}td t| t|dkr dS |D ]}td|s1td  dS q"t|tj	kr;dS |S )Nz   z get_emailsr   Fz[^@]+@[^@]+\.[^@]+z not email )
replacestripsplitr   StrSpliterBr$   r#   rematchMaxNumEmailRecipients)emails	ar_emailsemailr   r   r   
get_emails   s   zcl_man_req.get_emailsc              
   C   s   t |d }tt|dkrdS t | |}|dkrdS d}zt||}td t| W n% tyT } ztd tt| t|j	 t| W Y d }~nd }~ww |j
d| |S )NEMAILz<class 'list'>r   zrequest_recipient       ansz!request_recipient       Exceptionz'cl_man_req request_recipient ans >>> %s)r   rZ   strtyperH   v_clManEmail_DBrequest_recipientr$   	Exceptionargsr   r   )rF   request_datar&   
ans_emailsr6   r2   instr   r   r   r_      s(   
zcl_man_req.request_recipientc              
   C   s|  d}|}	t |tr|n|g}
d|}
|}t }|	|d< |
|d< t|d|d< d| d| d}zg|t|d	d t	| |}zRz|
  ||| | }||	|
| td
 tj}W n# ty } zt }td| td| t|}W Y d }~nd }~ww W |  W |S W |  W |S |  w  ty } zt }td| td| t|}W Y d }~|S d }~ww )Nr   z, FromTozutf-8SubjectzSubject:z

plainzsuccessfully sent the mailzsaved_args iszError sending email: zError sending email0: )r   listjoinr   r	   encodeattachr   smtplibSMTP_SSLehlologin	as_stringsendmailr$   r   resultOKr`   localsr\   close)SMTP_server_namePORTUSERPWDCONN_SECURITY	recipientsubjectbodyr2   FROMTOSUBJECTmsgmsgT
server_ssltexterr
saved_argsr   r   r   
send_email   sT   








zcl_man_req.send_emailc                 C   s   t | |}|dkrtjS t|}|dkrtjS t |}t|}|dkr*tjS t |d |d |d |d |d ||d |d }|j	
d	| |S )
Nr   rv   rw   rx   ry   rz   SUBJBODYz#cl_man_req request_email ans >>> %s)r   rH   r   resultEmailNotValidr^   get_emailsDBrZ   get_smtpr   r   r   )rF   rb   r&   r6   r[   rc   oner2   r   r   r   request_email  s,   


zcl_man_req.request_emailc              
   C   s   t | |}|dkrdS d}zt||}td t| W n% tyC } ztd tt| t|j t| W Y d }~nd }~ww |j	d| |S )Nr   zrequest_smtp       anszrequest_smtp       Exceptionz"cl_man_req request_smtp ans >>> %s)
r   rH   r^   request_smtpr$   r`   r]   ra   r   r   )rF   rb   r&   r6   r2   rd   r   r   r   r   >  s"   
zcl_man_req.request_smtpc              
   C   s   i }zt | }td t| W n% ty6 } ztd tt| t|j t| W Y d }~nd }~ww |jd| |S )Nz-get_list_name_device_ByIdUserGrafana  dictResz4get_list_name_device_ByIdUserGrafana       Exceptionz>cl_man_req get_list_name_device_ByIdUserGrafana dictRes >>> %s)rC   $get_list_name_device_ByIdUserGrafanar$   r`   r]   ra   r   r   )rb   r&   r%   rd   r   r   r   r   R  s   

z/cl_man_req.get_list_name_device_ByIdUserGrafanac              
   C   s   t | |}|dkrdS i }z8t ||}t|||||< z|d r)t ||}W n ty< } zW Y d }~nd }~ww td t| W n% tyk } ztd tt| t|j	 t| W Y d }~nd }~ww |j
d| |S )Nr   dzget_records_t       dictReszget_records_t       Exceptionz#cl_man_req get_records_t mac >>> %s)r   rD   rA   rC   get_records_tr,   r`   r$   r]   ra   r   r   )rF   rb   r&   r6   r%   r7   rd   r   r   r   r   d  s4   
zcl_man_req.get_records_tc              
   C   s  t | d | d | d |}|dkrdS i }zttj | d dd| d< tt| d  | d dd| d< tt| d  tj| d }t	t
| | d< tj| d }t	t
| | d< tt| d  tt| d  td	 t| d
  d}t| |||||< z| d rtd t| d  t ||}|| }W n ty } zW Y d }~nd }~ww td t| W n% ty } ztd tt| t|j t| W Y d }~nd }~ww |jd| |S )NrK   id_userrM   r   DTSZ+00:00DTFz,get_logs_name_device  request_data timezone r   r   z&get_logs_name_device   request_data d z"get_logs_name_device       dictResz$get_logs_name_device       Exceptionz*cl_man_req get_logs_name_device mac >>> %s)r   rN   r$   sysversionrP   r\   r   fromisoformatinttimemktime	timetuplerC   get_logs_name_devicer,   r`   r]   ra   r   r   rb   r&   r6   r%   curr_dtr7   rd   r   r   r   r     sR   

zcl_man_req.get_logs_name_devicec              
   C   s  t | d | d | d |}|dkrdS i }z| d dd| d< tt| d  | d dd| d< tt| d  tj| d }tt	|
 | d< tj| d }tt	|
 | d< tt| d  tt| d  td	 t| d
  d}t| |||||< z| d rtd t| d  t ||}|| }W n ty } zW Y d }~nd }~ww td t| W n% ty } ztd tt| t|j t| W Y d }~nd }~ww |jd| |S )NrK   r   rM   r   r   r   r   r   z1get_records_t_name_device  request_data timezone r   r   z+get_records_t_name_device   request_data d z'get_records_t_name_device       dictResz)get_records_t_name_device       Exceptionz/cl_man_req get_records_t_name_device mac >>> %s)r   rN   rP   r$   r\   r   r   r   r   r   r   rC   r   r,   r`   r]   ra   r   r   r   r   r   r   get_records_t_name_device  sP   
z$cl_man_req.get_records_t_name_devicec              
   C   s   t | |}|dkrdS t ||}t||}|jd| i }||d< z|d r0t ||}W n tyC } zW Y d }~nd }~ww |d }|jd| |S )Nr   z cl_man_req get_last_t ans >>> %sTr   z"cl_man_req get_last_t 2 ans >>> %s)	r   rD   rA   rC   
get_last_tr   r   r,   r`   )rF   rb   r&   r6   r7   r2   r%   rd   r   r   r   r     s&   zcl_man_req.get_last_tc                 C   "   t | |||}|jd| |S )Nz!cl_man_req reg_t_debug ans >>> %s)rC   reg_t_debugr   r   )tr6   r   IPr&   r2   r   r   r   r   	     zcl_man_req.reg_t_debug Fc                 C   sx  ddddddd}d}d}| j }|dkr+|d	krt||}nt||}|d
kr+d
S d| jv r4|d }	|dkr@|dkr@|d }	z7|  }| }
|dkrUd|
v rU|d }	|ddkr`|d }	|ddkrk|d }	|ddkrv|d }	W n	 ty   Y nw | j}|	 }t
| d
krd}nt|}t|}|| }|jd|	|f  t|| j||	|}|jd| |S )Nreg_tr   r   smtpr{   rY   )r   r   r   r   r{   rY   r   Fr   r   r   z+cl_man_req regRequest action value>>> %s %sz cl_man_req regRequest ans >>> %s)pathr   rD   rH   ra   get_jsonr   findr`   to_dictr#   itemsr\   r   r   v_clMLogRequest
regRequestremote_addr)requestr6   r&   rF   forSalt2dict_actionvalueGvaluePr   actionar_keysvaluer2   r   r   r   r     s\   
zcl_man_req.regRequestc                 C   r   )Nzcl_man_req reg_t ans >>> %s)rC   r   r   r   )r   r6   firmware_numberr   r&   r2   r   r   r   r   L  r   zcl_man_req.reg_tc                 C   s   d| _ || _d S )Nr   )Real_parameter_sizedict_v)r   r   r   r   r   Set_initS  s   zcl_man_req.Set_initN)r   F)__name__
__module____qualname____doc__r   r   staticmethodr,   r/   r8   r<   r@   rA   rD   rH   rN   rZ   r_   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   =   sb    











O
"



3
9

;
r   )0r   rT   r   r   zoneinfor   collectionsr   rm   email.mime.textr   email.mime.multipartr   email.mime.baser   email.mime.imager   rY   r   email.headerr	   jsonr:   r;   sr   insertutils.constsr   man_db.clManTEMP_DBr   man_db.clManTZone_DBr   man_db.clManEmail_DBr   
man_db.MDBr   r   r   rC   r4   r^   r.   v_clMLogr   CONN_SECURITY_SSLobjectr   r   r   r   r   <module>   sP   