a
    eh                     @   s   d dl mZmZ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 e ZeddZee Zed	d
eefeeedddZed	edededeefeeeee dddZdS )    )	APIRouterRequestFormDependsHTTPException)Jinja2Templates)RedirectResponse)
open_mysqlget_mysql_credsget_pingconf_vars)get_current_user)	xor_bytes	templates)	directoryz	/maillistI)requestfoldercurrent_userc              
   C   s  |st dS |d }g }ttz}|jdd}|dkrN|d|f | }n>|dkrn|d|f | }n|d	kr|d
|f | }W d    n1 s0    Y  tt}|jdd}|D ]r}t|ddd|d< |dd}|r.t|}	z|	d|d< W n t	y*   d|d< Y n0 qd|d< qW d    n1 sN0    Y  dddd|d}
t
d| ||t|||
dS )Nz/signinHandleIDT)
dictionaryr   a  
                SELECT p.PMailNum, p.FromHandleID, h.Handle AS FromName,
                       p.Subject, p.PostDate, pp.MailStatus, p.ToLine
                FROM PrivateMail p
                JOIN PrivateMailPing pp ON pp.PMailNum = p.PMailNum
                JOIN Handles h ON p.FromHandleID = h.HandleID
                WHERE pp.ToHandleID = %s AND pp.Folder = 'I'
                ORDER BY p.PMailNum DESC
            Sa  
                SELECT p.PMailNum, p.FromHandleID, h.Handle AS FromName,
                       p.Subject, p.PostDate, p.ToLine
                FROM PrivateMail p
                JOIN PrivateMailPing pp ON pp.PMailNum = p.PMailNum
                JOIN Handles h ON p.FromHandleID = h.HandleID
                WHERE pp.ToHandleID = %s AND pp.Folder = 'S'
                ORDER BY p.PMailNum DESC
            Aa  
                SELECT p.PMailNum, p.FromHandleID, h.Handle AS FromName,
                       p.Subject, p.PostDate, MailStatus, p.ToLine
                FROM PrivateMail p
                JOIN PrivateMailPing pp ON pp.PMailNum = p.PMailNum
                JOIN Handles h ON p.FromHandleID = h.HandleID
                WHERE pp.ToHandleID = %s AND pp.Folder = 'A'
                ORDER BY p.PMailNum DESC
            ZToLine zutf-8ZToNamesSubject    z(Unreadable Subject)z(No Subject)ZInboxz	Sent MailZArchive)r   r   r   zmaillist.html)r   r   messagesZmessage_countZfolder_codefolder_title)r   r	   mysql_credscursorexecutefetchallr   getdecodeUnicodeDecodeErrorr   TemplateResponselen)r   r   r   Z	handle_idr   connr   msgencoded_subjectZdecoded_bytesr    r)   +/wd/v2025.freedom4um.com/routes/maillist.pymaillist   sX    
	
	
	&
*
r+   .)r   r   actionselected_messagesc                    s:  |st dddtt}| }ddgt| }d| d}||g ||d R  d	d
 | D }	t|	|	st ddd|dkrd| d}
||
g ||d |R  n@|dkrd| d}||g ||d |R  nt ddd|
  W d    n1 s0    Y  d| }t|ddS )Ni  zNot authenticated)status_codedetail,z%szQ
            SELECT PMailNum FROM PrivateMailPing
            WHERE PMailNum IN (z) AND ToHandleID = %s
        idc                 S   s   h | ]}|d  qS )r   r)   ).0rowr)   r)   r*   	<setcomp>|   r   z&handle_mail_actions.<locals>.<setcomp>i  zForbidden: Invalid message IDsarchivezl
                UPDATE PrivateMailPing
                SET Folder = 'A'
                WHERE PMailNum IN (z1) AND ToHandleID = %s AND Folder= %s
            deletezP
                DELETE FROM PrivateMailPing
                WHERE PMailNum IN (i  zInvalid actionz/maillist?folder=i/  )urlr.   )r   r	   r   r   joinr%   r   r    setissubsetcommitr   )r   r   r,   r-   userr&   r   placeholderssqlZ
valid_msgs
update_sqlZ
delete_sqlredirect_urlr)   r)   r*   handle_mail_actionsg   s4    
  (
rA   N)fastapir   r   r   r   r   fastapi.templatingr   fastapi.responsesr   utils.pingdatar	   r
   r   
utils.authr   	utils.xorr   routerr   r   r!   strdictr+   postlistintrA   r)   r)   r)   r*   <module>   s*   

X