
    Xj              
       z   d dl mZ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 d dlmZ d dlmZ d d	lmZmZmZmZ d d
lmZ  e            Z ee          Zd$de de!de e         fdZ"e#                    de e                   d d eej$                   eej%                  fde!de!dedefd            Z&e#                    de e                    eej$                   eej%                  fdedefd            Z'e#                    de e                    eej$                   eej%                  fdedefd            Z(e)                    deej*                   eej$                   e e
                      fdededefd            Z+e,                    de           eej$                   e e
                      fd e!dededefd!            Z-e.                    dej/        "           eej$                   e e
                      fd e!dedefd#            Z0dS )%    )	APIRouterDependsHTTPExceptionstatus)Session)deps)require_platform_admin)menu)role)	user_role)User)
MenuCreateMenuResponseMenuTree
MenuUpdate)
get_loggerNmenus	parent_idreturnc                     g }| D ]P}|j         |k    rCt          j        |          }t          | |j                  |_        |                    |           Q|S N)r   r   model_validatebuild_menu_treeidchildrenappend)r   r   treer
   	menu_dicts        ?/lsinfo/ai/hellotax_ai/base_platform/app/api/v1/access/menus.pyr   r      s_    D # #>Y&& /55I!0!@!@IKK	"""K    /)response_modeld   skiplimitdbcurrent_userc                 4    t          j        || |          }|S )N)r$   r%   )	crud_menu	get_multi)r$   r%   r&   r'   r   s        r   	get_menusr+      s      U;;;ELr    z/treec                 L    t          j        |           }t          |          }|S r   )r)   get_all_activer   )r&   r'   r   r   s       r   get_menu_treer.   '   s&    
 $R((E5!!DKr    z/myc                 6   t          j        | |j                  }|sg S t                      |D ]2}t	          j        | |j                  }                    |           3sg S t          j        |           }fd|D             }t          |          }|S )N)user_id)role_idc                 &    g | ]}|j         v |S  r   ).0mmenu_idss     r   
<listcomp>z get_my_menus.<locals>.<listcomp>@   s%    ;;;!$(*:*:!*:*:*:r    )
crud_user_roleget_user_rolesr   set	crud_roler+   updater)   r-   r   )	r&   r'   
user_rolesr   role_menu_ids	all_menus
user_menusr   r7   s	           @r   get_my_menusrB   1   s    
  .r<?KKKJ 	uuH ' '!+B@@@&&&& 	(,,I;;;;Y;;;J:&&DKr    )r"   status_codemenu_inc                     t          j        || j                  }|rt          t          j        d          t          j        || |j                  }t          	                    |j        |j                  
                    d           |S )N)codez"Menu with this code already existsrC   detail)obj_in
created_byr0   menu_idzMenu created)r)   get_by_coderF   r   r   HTTP_400_BAD_REQUESTcreater   loggerbindinfo)rD   r&   r'   existingr
   s        r   create_menurT   E   s     $Rgl;;;H 
3<`
 
 
 	
 Bw<?KKKD
KKK99>>~NNNKr    z
/{menu_id}rL   c                    t          j        ||           }|st          t          j        d          t          j        |||          }t                              |j        |           	                    d           |S )Nr4   Menu not foundrG   )db_objrI   rK   zMenu updated)
r)   getr   r   HTTP_404_NOT_FOUNDr=   rP   rQ   r   rR   )rL   rD   r&   r'   r
   s        r   update_menurZ   U   sz     =(((D \(AJZ[[[[BtG<<<D
KKK99>>~NNNKr    )rC   c                     t          j        ||           }|st          t          j        d          t          j        ||            t                              |j        |           	                    d           d S )Nr4   rV   rG   rK   zMenu deleted)
r)   rX   r   r   rY   removerP   rQ   r   rR   )rL   r&   r'   r
   s       r   delete_menur]   d   sy     =(((D \(AJZ[[[[RG$$$$
KKK99>>~NNN4r    r   )1fastapir   r   r   r   sqlalchemy.ormr   app.apir   app.api.permissionsr	   app.crud.menur
   r)   app.crud.roler   r<   app.crud.user_roler   r9   app.models.userr   app.schemas.menur   r   r   r   common_loggingr   router__name__rP   listintr   rX   get_db_without_tenantget_current_userr+   r.   rB   postHTTP_201_CREATEDrT   putrZ   deleteHTTP_204_NO_CONTENTr]   r3   r    r   <module>rs      s   = = = = = = = = = = = = " " " " " "       6 6 6 6 6 6 + + + + + + + + + + + + : : : : : :             K K K K K K K K K K K K % % % % % %		H		 4 C 4>     C\ 233'$455 !677	 
 	 	   43 GDN33'$455 !677    43 E$x.11'$455 !677    21& S6;RSS '$455 !7!7!9!9::     TS L66 '$455 !7!7!9!9::	  	 	   76 |)CDD '$455 !7!7!9!9::
 


 
 
 
 ED
 
 
r    