o
    k`hi                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
 d dlmZmZmZmZ edeZdefddZd	ee de	ee
f fd
dZde	ee
f dee	ee
f  fddZeddd ZdS )    N)Path)OptionalListDictAny)	Blueprintrequestjsonifycurrent_appleave_app_trackingcentresreturnc                   C   s   t tt jd S )N   )strr   __file__resolveparents r   r   O/var/www/html/flask_server/apps/leave_form_app/api/v1/routes_trackingcentres.py_project_root   s   r   cmdc              	   C   s   t  }tj }||drd|d  nd |d< d|d< tjdd|  t	j
| ||ddd	d
}|jdkrStd|j d|j d d  d|j d d  |jpWd }|s`tdt|S )N
PYTHONPATH: 1PYTHONNOUSERSITEz"[leave_app] trackingcentres cmd=%s TF)cwdenvcapture_outputtextcheckr   ztrackingcentres CLI failed rc=z stderr=i   z stdout=z)trackingcentres CLI returned empty stdout)r   osenvironcopygetr
   loggerinfojoin
subprocessrun
returncodeRuntimeErrorstderrstripstdoutjsonloads)r   project_rootr   procoutr   r   r   _run_cli   s2   
"
	

r4   payloadc                 C   sF   t | tr| di ni }t |tr|dg ng }t |tr!|S g S )Nzoneresponsetrackingcentres)
isinstancedictr$   list)r5   zritemsr   r   r   _extract_items.   s   r=   z/trackingcentresc                     s   t jdpd  t jdpd } tjddddg}| r$|d| g7 }t jd	p+d }|r6|d
|g7 }t jdp=d }|rH|d|g7 }t|}t|} r[ fdd|D }dtt	t
f dtfdd}t||d}tdt||dS )Nbu_namer   pagesizez-mzapps.aroflo_connector_app.clir7   r:   z
--pagesizeorderz--orderwherez--wherec                    s<   g | ]}t |trt |d tr|d  d kr|qS )businessunitorgname)r8   r9   r$   ).0xr>   r   r   
<listcomp>P   s    z(trackingcentres_list.<locals>.<listcomp>rE   r   c                 S   s*   z
t | dpdW S  ty   Y dS w )N	listorderr   )intr$   	Exception)rE   r   r   r   
_listorderX   s
   z(trackingcentres_list.<locals>._listorder)keyok)statuscountr7   )r   argsr$   r-   sys
executabler4   r=   r   r   r   rI   sortedr	   len)r?   r   r@   rA   r5   r<   rK   r   rF   r   trackingcentres_list3   s2   
rU   )r!   rQ   r/   r(   pathlibr   typingr   r   r   r   flaskr   r   r	   r
   __name__trackingcentres_bpr   r   r4   r=   r$   rU   r   r   r   r   <module>   s   
&