
    lhF                    D   d dl mZ d dlmZ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mZmZ d dlmZ  e	            ZdZd%dZd&dZd'dZd(dZe                    de           ed           ed           ed           edd          fd)d#            Zd$S )*    )annotations)AnyDictListSetTuple)	APIRouterRequestQuery)HTMLResponse)	templatessblogger)Counter
   txtstrreturnintc                    | pd                                 }|                    d          rdS |                    d          rdS dS )N u	   위원장r   u   간사      )strip
startswith)r   ts     2/var/www/html/bot/app/web/pages/congress/search.py
_role_rankr      sH    	A||K  *||H)1    nr   c                p    	 t          |           }n# t          $ r Y dS w xY w|dk    rdS |dk    rdS | dS )N-r   u   초선r   u   재선u   선)r   	Exception)r    vs     r   _label_electionr%      s\    FF   ssAvvhhAvvhh999s    
  r$   
str | Nonec                    | pd                                 }|r'd                    |                                          ndS )Nr   z<br>)r   joinsplit)r$   ss     r   _district_brr+      s9    	
bA%&.6;;qwwyy!!!B.r   col	List[str]c                  K   	 t          j        d                              |                               d                                          j        pg }n3# t          $ r&}t          j        d|  d|            g }Y d }~nd }~ww xY wt                      }|D ]B}|
                    |           pd                                }|r|                    |           Ct          |          S )Ncongress_member'  zdistinct fetch fallback for z: r   )r   tableselectlimitexecutedatar#   r   warningsetgetr   addsorted)r,   rowsevalsrr$   s         r   _distinct_valuesr?      s      x)**11#66<<UCCKKMMRXVX   @c@@Q@@AAA UUD  UU3ZZ2$$&& 	HHQKKK$<<s   AA 
B"BBz/congress/search)response_classall)defaultr   r   )rB   gerequestr
   	committeepartyqpagec                x  K   |pd                                 t          d           d {V }t          d           d {V }fd}d}g }		 t          j        d                              dd	          }
 ||
                                          }t          |d
d           pt          |j        pg           }|dz
  t          z  }|t          z   dz
  }t          j        d                              d          } ||          
                    ||          }|                                j        pg }	n# t          $ r}t          j        d| d           	 t          j        d                              d                              d                                          j        pg }fdfd|D             }t          |          }|dz
  t          z  }|t          z   }|||         }	n# t          $ r g }	d}Y nw xY wY d }~nd }~ww xY w|	                    d            |	D ]L}t!          |                    d                    |d<   t%          |                    d                    |d<   M|dk    }|t          z  |pdk     }t'          j        d| |||	|||t          |d          S )Nr   committee_namerF   c                    dk    r|                      d          } dk    r|                      d          } r/d d}|                     d                    |                    } | S )NrA   rJ   rF   %zdfull_name.ilike.{kw},name_hanja.ilike.{kw},party.ilike.{kw},district.ilike.{kw},role_name.ilike.{kw})kw)eqor_format)queryrM   rE   rF   q_norms     r   apply_filtersz&congress_search.<locals>.apply_filters9   s    HH-y99EE>>HHWe,,E 	VBIIv}}  BD}  E  E E r   r   r/   idexact)countrV   r   zcommittee_name,role_name,full_name,name_hanja,party,district,phone,room_no,photo_url,member_page_url,aide_staff,aide_secretary,aide_secretary2,election_countz)congress_member search fallback (reason: )zcommittee_name,role_name,full_name,name_hanja,party,district,phone,room_no,photo_url,member_page_url,aide_staff,aide_secretary,aide_secretary2,election_count,idr0   c           
        dk    r|                      d          k    rdS dk    r|                      d          k    rdS sdS                                 }d                    |                      dd          |                      d	d          |                      dd          |                      d
d          |                      dd          g                                          }||v S )NrA   rJ   FrF   T 	full_namer   
name_hanjadistrict	role_name)r8   lowerr(   )r>   keytgtrE   rF   rR   s      r   hitzcongress_search.<locals>.hit]   s    %%!%%0@*A*AY*N*NW\W\E>>aeeGnn&=&=ee*ddllnnhhEE+b))155b+A+A155QSCTCTEE*R((!%%B*?*?    577  cz!r   c                *    g | ]} |          |S  rc   ).0r>   ra   s     r   
<listcomp>z#congress_search.<locals>.<listcomp>g   s&    222a33q662222r   c                t    t          |                     dd                    |                     dd          fS )Nr]   r   rZ   )r   r8   )r>   s    r   <lambda>z!congress_search.<locals>.<lambda>p   s0    Zk"(=(=>>kRT@U@UV r   )r_   election_countelection_labelr\   district_brzcongress/search.html)rD   rE   rF   rG   
committeespartiesr;   rH   has_prevhas_nextper_pagetotal)r   r?   r   r1   r2   r4   getattrlenr5   PER_PAGEranger#   r   r6   r3   sortr%   r8   r+   r   TemplateResponse)rD   rE   rF   rG   rH   rk   rl   rS   rp   r;   base
total_respstartendq2r<   r5   filteredr>   rm   rn   ra   rR   s    ``                  @@r   congress_searchr}   ,   s_      g2__F'(899999999J'00000000G
 
 
 
 
 
 
 E!#D'x)**11$g1FF"]4((0022

GT22Rs:?;Pb7Q7Q X% 1$X'((//a
 
 ]2$$UC00zz|| &B   G1GGGHHH	H.//V t u uU5\\''))D8 68 	" 	" 	" 	" 	" 	" 	" 32224222HMMEAX)EH$CE#I&DD 	 	 	DEEE	-4 	IIVVIWWW ; ;-aee4D.E.EFF
'j(9(9::-axHxEJQ/H%&<V W(u? ?   s>   C(D< <
HHBG87H8H	HH		HHN)r   r   r   r   )r    r   r   r   )r$   r&   r   r   )r,   r   r   r-   )
rD   r
   rE   r   rF   r   rG   r   rH   r   )
__future__r   typingr   r   r   r   r   fastapir	   r
   r   fastapi.responsesr   app.web.depsr   r   r   collectionsr   routerrs   r   r%   r+   r?   r8   r}   rc   r   r   <module>r      s   " " " " " " . . . . . . . . . . . . . . - - - - - - - - - - * * * * * * . . . . . . . . . .      	      / / / /    |<< U5)))u%%%U2aA&&&R R R R =<R R Rr   