
    ski                        d dl mZmZmZmZ d dlmZmZ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mZmZ d dlmZ d d	lmZ d d
lZ e            Z ee          Z eddg          Z e
d          Z eeddge          e                    d           ee           ed
           ed
           ed
           ed
           ed
           ed           ed
           ee          f	dedee         dee         dee         dee         dee         de dee          fd                        Z!e                    d           edd           ed           fd!ed"efd#            Z"d&d%Z#d
S )'    )	APIRouterRequestDependsQuery)RedirectResponseJSONResponseHTMLResponse)Jinja2Templates)HTTP_302_FOUND)get_current_user)nav_context)
open_mysqlget_mysql_credsget_pingconf_vars)Optional)add_dual_routeNz/latestcommentslatestcomments)prefixtags	templates)	directory GET)methodsresponse_class   requestFromID	from_userToIDto_userchkpingspagemax_idc
                    d}
	 |rt          |          nd }n# t          t          f$ r d }Y nw xY w	 |rt          |          nd }n# t          t          f$ r d }Y nw xY wt          t                    5 }|                    d          }|r5|                    d|f           |                                }|r|d         }|r5|                    d|f           |                                }|r|d         }d d d            n# 1 swxY w Y   | |r|d         }|                    dd          }|st          t                    5 }|                    d          }|                    d	           |                                }|r|d
         r|d
         nd}d d d            n# 1 swxY w Y   |dk     rd}t          |||||
          \  }}|r|nd}|r|nd}t          t                    5 }|                    d          }|s7|r5|                    d|f           |                                }|r|d         }|s7|r5|                    d|f           |                                }|r|d         }d d d            n# 1 swxY w Y   t                              d| ||r|d         nd ||||||d	|	          S )NK   T
dictionaryz6SELECT HandleID FROM Handles WHERE Handle = %s LIMIT 1HandleIDidhandler   z/SELECT MAX(GlobComNum) AS max_gcn FROM Commentsmax_gcnr   r   z6SELECT Handle FROM Handles WHERE HandleID = %s LIMIT 1Handlezlatestcomments.html)	r   useruser_idcommentsFromNameToNamer#   has_nextr$   )int
ValueError	TypeErrorr   mysql_credscursorexecutefetchonegetget_latest_commentsr   TemplateResponse)r   r.   r   r   r    r!   r"   r#   r$   navper_pageactual_from_idactual_to_idconnr8   rowr0   r3   	from_nameto_names                       1/wd/v2025.freedom4um.com/routes/latestcomments.pylatest_comments_pagerG      s"    H(.8VD	"   $(2s4yyyd	"    
K	 	  /D-- 	1NNSV_Uabbb//##C 1!$Z 	/NNSV]U_```//##C /":/ / / / / / / / / / / / / / / Dz((8R((  E$$ 	E[[D[11FNNLMMM//##C'*Ds9~DS^^1F		E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E axx,^\6SWYabbHh '.		BI (ggbG	K	 	  (D-- 	*^ 	*NNSVdUfggg//##C *M	 	(< 	(NNSVbUdeee//##C (h-( ( ( ( ( ( ( ( ( ( ( ( ( ( ( %%%)3tDzzt ! 	
 	
 	
  sV    ..A AA3BDDDAF''F+.F+0B	JJ	J	z/autocomplete.)
min_lengthhandlesquerytypec                     | sg S t          t                    5 }|                    d          }d}|                    |d|  df           |                                }d d d            n# 1 swxY w Y   |S )NTr'   zsSELECT HandleID AS id, Handle AS handle FROM Handles WHERE Handle LIKE %s AND Handle != '' ORDER BY Handle LIMIT 10%)r   r7   r8   r9   fetchall)rJ   rK   rB   r8   sqlsuggestionss         rF   autocompleterQ   l   s    
  		K	 	  (D-- Ds\\\\O,,,oo''	( ( ( ( ( ( ( ( ( ( ( ( ( ( (
 s   AA--A14A1r&   c                    | |d}nd}||dz  }g }g }|*|                     d           |                     |           | *|                     d           |                     |            |*|                     d           |                     |           |rdd                    |          z   nd	}|d
z
  |z  }	d| d| d}
t          t                    5 }|                    d          }|                    |
||d
z   |	gz              |                                }d d d            n# 1 swxY w Y   t          |          |k    }|d |         }g }|D ]p}|d         r|d                             d          |d<   |d         dk    rdnd|d          d|d<   |d         r	|d         gng |d<   |                     |           q||fS )NzComments c STRAIGHT_JOIN Articles a ON c.ArtNum = a.ArtNum AND a.Deleted = 0 STRAIGHT_JOIN Handles h_from ON c.HandleID = h_from.HandleIDzComments c FORCE INDEX (PRIMARY) JOIN Articles a ON c.ArtNum = a.ArtNum AND a.Deleted = 0 JOIN Handles h_from ON c.HandleID = h_from.HandleIDzl STRAIGHT_JOIN Ping p ON c.GlobComNum = p.GlobComNum AND c.ArtNum = p.ArtNum AND c.HandleID = p.FromHandleIDzc.GlobComNum <= %szc.HandleID = %szp.ToHandleID = %sz WHERE z AND r   r   z
        SELECT
            c.ArtNum, c.ComNum, c.GlobComNum,
            a.Title AS ArticleTitle,
            c.PostDate,
            h_from.Handle AS FromUser,
            c.HandleID AS FromID,
            c.ReplyToHandleStr AS ToUser
        FROM z	
        zC
        ORDER BY c.GlobComNum DESC
        LIMIT %s OFFSET %s
    Tr'   PostDatez%Y-%m-%d %H:%M:%SComNumr   z	(Article)z(#)DisplayComNumToUserToUsers)	appendjoinr   r7   r8   r9   rN   lenstrftime)from_idto_idr$   r#   r?   	base_fromwhere_clausesparams	sql_whereoffsetrO   rB   r8   rowsr3   r0   rC   s                    rF   r<   r<   {   s   e/ `		 d	  D  	D	MF1222f.///g0111e;HP	GLL7777bIQh("F   
  C 
K	 	  !D--sFhlF%;;<<<  ! ! ! ! ! ! ! ! ! ! ! ! ! ! !
 4yy8#H		?DH  z? 	L!*o667JKKC
O.1(mq.@.@{{F[3x=F[F[F[O,/MA#h-rIXs   A	D//D36D3)NNNr   r&   )$fastapir   r   r   r   fastapi.responsesr   r   r	   fastapi.templatingr
   starlette.statusr   
utils.authr   	utils.navr   utils.pingdatar   r   r   typingr   utils.routesr   mathPingConfr7   routerr   r;   strr4   rG   rQ   r<        rF   <module>rt      s   6 6 6 6 6 6 6 6 6 6 6 6 J J J J J J J J J J . . . . . . + + + + + + ' ' ' ' ' ' ! ! ! ! ! ! I I I I I I I I I I       ' ' ' ' ' ' oh''	+3C2D	E	E	EOk222	UGLIII W%&& %d#(5;;#eDkk!&t"'%++E!HH %dGK  U UU U C=	U
 smU #U 3-U U U U U  JIUp OU31---E)$$    7 7 7 7 7 7rs   