o
    €¾hù  ã                   @  s¶   d dl mZ d dlmZmZmZmZ d dlmZ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 eƒ ZdZd"dd„Zd#dd„Zd$dd„Zd%dd„Zejdedd&d d!„ƒZdS )'é    )Úannotations)ÚAnyÚDictÚListÚTuple)Ú	APIRouterÚRequest)ÚHTMLResponse)Ú	templatesÚsbÚloggerN)ÚCounteru-   ì‚°ì—…í†µìƒìžì›ì¤‘ì†Œë²¤ì²˜ê¸°ì—…ìœ„ì›íšŒÚtxtÚstrÚreturnÚintc                 C  s,   | pd  ¡ }| d¡rdS | d¡rdS dS )NÚ u	   ìœ„ì›ìž¥r   u   ê°„ì‚¬é   é   )ÚstripÚ
startswith)r   Út© r   ú4/var/www/html/bot/app/web/pages/congress/industry.pyÚ
_role_rank   s   

r   Únr   c                 C  sD   zt | ƒ}W n
 ty   Y dS w |dkrdS |dkrdS |› dS )Nú-r   u   ì´ˆì„ r   u   ìž¬ì„ u   ì„ )r   Ú	Exception)r   Úvr   r   r   Ú_label_election   s   ÿ
r   ÚrowsúList[Dict[str, Any]]úTuple[List[str], List[int]]c                   s~   t dd„ | D ƒƒ}|sg g fS | d¡}dd„ |D ƒ‰ dd„ |D ƒ}t‡ fdd„| ¡ D ƒƒ}|r;ˆ  d¡ | |¡ ˆ |fS )	Nc                 s  s4    | ]}|  d ¡p
d ¡ r|  d ¡pd ¡ V  qdS ©Úpartyr   N©Úgetr   ©Ú.0Úrr   r   r   Ú	<genexpr>!   s   €2 z!_party_summary.<locals>.<genexpr>r   c                 S  s   g | ]\}}|‘qS r   r   )r(   ÚpÚ_r   r   r   Ú
<listcomp>%   ó    z"_party_summary.<locals>.<listcomp>c                 S  s   g | ]\}}|‘qS r   r   )r(   r,   Úcr   r   r   r-   &   r.   c                 3  s     | ]\}}|ˆ vr|V  qd S )Nr   )r(   Úkr   ©Úlabelsr   r   r*   '   s   € u   ë¹„êµì„­ë‹¨ì²´)r   Úmost_commonÚsumÚitemsÚappend)r    ÚcntÚtop2ÚcountsÚothersr   r1   r   Ú_party_summary    s   


r;   r   ú
str | Nonec                 C  s"   | pd  ¡ }|rd | ¡ ¡S dS )Nr   z<br>)r   ÚjoinÚsplit)r   Úsr   r   r   Ú_district_br-   s   r@   z/congress/industry)Úresponse_classÚrequestr   c           	   
   ƒ  s  g }zt  d¡ d¡ dt¡ d¡ ¡ jpg }W n ty5 } zt	 
d|› ¡ g }W Y d }~nd }~ww |D ]}t| d¡ƒ|d< t| d¡ƒ|d	< q8td
d„ |D ƒƒ‰ d‡ fdd„}|j|d t|ƒ\}}||t|ƒdœ}tj|dd}t d| t|||dœ¡S )NÚcongress_member_curzŽrole_name,full_name,name_hanja,party,district,phone,room_no,photo_url,member_page_url,aide_staff,aide_secretary,aide_secretary2,election_countÚcommittee_nameiô  zindustry list fetch failed: Úelection_countÚelection_labelÚdistrictÚdistrict_brc                 s  s"    | ]}|  d ¡p
d ¡ V  qdS r#   r%   r'   r   r   r   r*   J   s   €  z$congress_industry.<locals>.<genexpr>r)   úDict[str, Any]c                   sJ   |   d¡pd}|   d¡pd ¡ }|   d¡pd ¡ }t|ƒˆ   |d¡ |fS )NÚ	role_namer   r$   Ú	full_namer   )r&   r   r   )r)   Úroler$   Úname©Úparty_countr   r   Ú	_sort_keyM   s   ýz$congress_industry.<locals>._sort_key)Úkey)r2   r9   ÚtotalF)Úensure_asciizcongress/industry.html)rB   rD   r    ÚchartÚ
chart_json)r)   rI   )r   ÚtableÚselectÚeqÚINDUSTRY_COMMITTEEÚlimitÚexecuteÚdatar   r   Úwarningr   r&   r@   r   Úsortr;   r4   ÚjsonÚdumpsr
   ÚTemplateResponse)	rB   r    Úer)   rP   r2   r9   rT   rU   r   rN   r   Úcongress_industry1   sJ   €ÿ÷
ö€þ
ûþrc   )r   r   r   r   )r   r   r   r   )r    r!   r   r"   )r   r<   r   r   )rB   r   )Ú
__future__r   Útypingr   r   r   r   Úfastapir   r   Úfastapi.responsesr	   Úapp.web.depsr
   r   r   r_   Úcollectionsr   ÚrouterrY   r   r   r;   r@   r&   rc   r   r   r   r   Ú<module>   s    



