a
    3ѳh                     @   s   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Zd dlmZmZ e Ze
eZe ZeddZeeZed	ed
ddZed	edededfeeeedddZdS )    )	APIRouterRequestForm)RedirectResponse)Jinja2Templates)
open_mysqlget_mysql_credsget_pingconf_varsN)ListSet	templates)	directoryz/postcomment)requestc           	   
      s8  | j d}t| j dd}d }d }ztt}|jdd}|dkr||d|f | }|rnd|d< |}qd	| d
}n<|d||f | }|rd|d< |}nd| d| d
}W d    n1 s0    Y  W n: ty } z t	
d|  d}W Y d }~n
d }~0 0 td| ||||r,|nd |dS )NArtNumComNumr   T)
dictionarya%  
                    SELECT a.ArtNum, a.Title, a.Article, a.Author, a.PostDate, a.PubDate,
                           a.Source, a.URL AS URL_Source, a.ViewCnt, a.HandleID AS AuthorID
                    FROM Articles a
                    WHERE a.ArtNum = %s AND a.Deleted = 0
                articletypez	Article #z does not exist.a=  
                    SELECT c.ComNum, c.ArtNum, c.Comment, c.PostDate, i.Name AS HandleStr
                    FROM Comments c
                    JOIN Handles h ON c.HandleID = h.HandleID
                    JOIN ID i ON h.HandleID = i.IDNum
                    WHERE c.ArtNum = %s AND c.ComNum = %s
                commentz	Comment #z of article #z#Error loading postcomment context: zAn unexpected error occurred.postcomment.html)r   
article_idparent_comnumcontext_itemr   error)query_paramsgetintr   mysql_credscursorexecutefetchone	Exceptionloggerr   r   TemplateResponse)	r   Zart_numZcom_numr   r   connr   rowe r'   ./wd/v2025.freedom4um.com/routes/postcomment.pyget_post_comment   sJ    
4r)   .)r   r   r   Commentc              
      s  d }zr| j di d}|s,d}t|| s@d}t|tt}| }|d|f | d }t	 }	| 
 I d H }
g }d|
v r|
d}n:d|
v r|
d}n&d	|
v r|
d	  r|
d	 d
ng }|D ]8}zt|}|dkr|	| W q ty   Y q0 q|	s"|	d g }tdd |	D }|rd
dgt| }|d| dt| | }dd |D }|D ](}||v r|| r|||  qd|	v rt|	dkrdg}d| }t|dkr|d d d }|d||||||f |j}|	D ]}|d||d||f q|  W d    n1 sV0    Y  td| d| ddW S  ty } z&td|  |sd}W Y d }~n
d }~0 0 td | ||d |d!S )"Nuseridz(You must be signed in to post a comment.zComment cannot be empty.z
                SELECT IFNULL(MAX(ComNum), 0) + 1
                FROM Comments
                WHERE ArtNum = %s
            r   Z
ToHandleIDZToHandleIDsto_list,c                 S   s   g | ]}|d kr|qS )r   r'   ).0ridr'   r'   r(   
<listcomp>       z'submit_post_comment.<locals>.<listcomp>z%sz+SELECT IDNum, Name FROM ID WHERE IDNum IN ()c                 S   s*   i | ]"}|r|d  dur|d  |d qS )r   N   r'   )r/   rr'   r'   r(   
<dictcomp>   r2   z'submit_post_comment.<locals>.<dictcomp>r4   ZAllz,       z...z
                INSERT INTO Comments
                    (HandleID, ArtNum, ComNum, PostDate, Comment, ReplyToComNum, ReplyToHandleStr)
                VALUES (%s, %s, %s, NOW(), %s, %s, %s)
            z
                    INSERT INTO Ping (GlobComNum, ArtNum, CatNum, FromHandleID, ToHandleID)
                    VALUES (%s, %s, %s, %s, %s)
                z/readarticle?ArtNum=z#Ci/  )urlstatus_codezError submitting comment: z)Failed to post comment. Please try again.r   )r   r   r   r   r   )sessionr   r!   stripr   r   r   r   r    setformgetlistsplitr   addsortedjoinlentuplefetchallappend	lastrowidcommitr   r"   r   r   r#   )r   r   r   r*   r   Zuser_idr$   r   Znext_comnum
recipientsZ	form_dataZraw_idsvZvidZreply_namesZpositive_idsplaceholdersrowsZ
id_to_namer0   Zreply_to_handle_strZ
globcomnumZto_userr&   r'   r'   r(   submit_post_commentK   s    

(rN   )fastapir   r   r   fastapi.responsesr   fastapi.templatingr   utils.pingdatar   r   r	   loggingtypingr
   r   PingConfr   routerr   	getLogger__name__r"   r   r)   postr   strrN   r'   r'   r'   r(   <module>   s,   

: