
    [i                        d dl Z d dlZd dl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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" 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/m0Z0  edd      Z1e1je                  e
dg       h dZ3ddhZ4e1jk                  d      defd       Z6g dZ7e1je                  ee7ddgdg       e1jq                  e"ddg       e1jq                  eddg       e1jq                  eddg       e1jq                  edd g       e1jq                  e,d!       e1jq                  edd"g       e1jq                  edd#g       e1jq                  ed$d%g       e1jq                  e j&                  d&d'g       e1jq                  e$dd(g       e1jq                  e&d)d*g       e1jq                  e(d+d,g       e1jq                  e*dd-g       e1jq                  e/j&                  d!       e1jq                  e0j&                  d!       e1jq                  e.dd.g       e jr                  ju                  e jr                  jw                  e<            Z=e jr                  j}                  e=d/      Z?e jr                  j                  e?      s e j                  e?       e1j                  d0 ee?1      d/2       y)3    N)FastAPIRequest)StaticFiles)CORSMiddleware)ProxyHeadersMiddleware)ActionLogModel)get_current_actor_optional)parse_request_bodyoutcome_from_status)router)ticket_controller)user_controlleradmin_controllerzEcommerce APIz/pod-api)title	root_path*)trusted_hosts>   PUTPOSTPATCHDELETEadminstaffhttprequestc                   K   | j                   t        vr ||        d {   S t        j                         }| j                          d {   | j                  j                  dd      }fd}t        | j                  |      } t        |        d {   }d}	  ||        d {   }|j                  }|t        t        j                         |z
  dz        }t        | j                  dd       }	t        | j                  d|      }
|
xr] t        |
j                  dd            j                         t        v xr, t        |
j                  d	d            j!                         dk7  }|r	 t#        j$                  | j                   | j&                  j(                  t        | j&                  j*                        ||d
vd|cxk  xr dk  nc t-        |      |	|
j                  d	      |
j                  d      |
j                  d      | j.                  r| j.                  j0                  nd | j                  j                  d      |t3        |      d       S S 7 =7 7 7 # t4        $ r}t7        d|        Y d }~S d }~ww xY w# t        t        j                         |z
  dz        }t        | j                  dd       }	t        | j                  d|      }
|
xr] t        |
j                  dd            j                         t        v xr, t        |
j                  d	d            j!                         dk7  }|r	 t#        j$                  | j                   | j&                  j(                  t        | j&                  j*                        ||d
vd|cxk  xr dk  nc t-        |      |	|
j                  d	      |
j                  d      |
j                  d      | j.                  r| j.                  j0                  nd | j                  j                  d      |t3        |      d       w # t4        $ r}t7        d|        Y d }~w d }~ww xY ww xY ww)Nzcontent-type c                     K   d ddS w)Nzhttp.requestF)typebody	more_body )r    s   %/var/www/pod-logistic/pod-api/main.pyreceivez&action_log_middleware.<locals>.receive2   s     "
 	
s   
i  i  required_permissionactorroleid)i  i     i,  namez
user-agent)methodpathquery
statusCodeallowedsuccessoutcomerequiredPermissionactorId	actorName	actorRoleip	userAgent
durationMsr    z[ACTION LOG ERROR] )r+   WRITE_METHODStimer    headersgetr   scoper	   status_codeintgetattrstatestrlowerALLOWED_LOG_ROLESstripr   	write_logurlr,   r-   r   clienthostr
   	Exceptionprint)r   	call_next
start_timecontent_typer$   r&   r>   responseduration_msr%   final_actor
should_log	log_errorr    s                @r#   action_log_middlewarerT   '   s    ~~]*w'''J D??&&~r:L
 gmmW-G,W55EK$9"7++**499;3t;<%gmm5JDQgmmWe<  =KOOFB/0668<MM=KOOD"-.446"< 	 9((%nn#KK,, !2!23"-**<"k7C72;?*=*t4!,!8!,!818'..--T!(!4!4\!B"-.|TB*  K (
   6
 ,D  9+I;7889= 499;3t;<%gmm5JDQgmmWe<  =KOOFB/0668<MM=KOOD"-.446"< 	 9((%nn#KK,, !2!23"-**<"k7C72;?*=*t4!,!8!,!818'..--T!(!4!4\!B"-.|TB* "  9+I;7889' s   QI+QI!A	QI$QJ *I'+J <B4Q1C+I*Q!Q$Q'J *	J3JQJQB6QC+P10Q1	Q:QQQQQ)zhttp://103.90.225.225zhttp://05factory.comzhttps://05factory.comzhttp://www.05factory.comzhttps://www.05factory.comT)allow_originsallow_credentialsallow_methodsallow_headersz/apizAdmin Staff Management)prefixtagsz
/api/adminzAdmin ProductzAdmin UploadzAdmin Category)rY   zPublic CatalogzPublic Productz/api/topupszTop-upz/api/ticketsTicketsBannerz/api/importzImport Ordersz/api/ordersOrderszProduct CatalogzPublic Uploaduploadsz/uploads)	directory)r*   )Cosr:   fastapir   r   fastapi.staticfilesr   fastapi.middleware.corsr    uvicorn.middleware.proxy_headersr   model.action_log_modelr   utils.auth_helperr	   utils.audit_helperr
   r   #controller.admin.product_controllerr   product_router"controller.admin.upload_controllerupload_router$controller.admin.category_controllercategory_admin_router%controller.public.category_controllercategory_public_router$controller.public.product_controllerproduct_public_routercontroller.topup_controllertopup_router
controllerr   controller.staff_controllerstaff_routercontroller.bannerbanner_routercontroller.import_controllerimport_routercontroller.order_controllerorder_controller%controller.product_catalog_controllerproduct_catalog_router controller.action_log_controlleraction_log_router#controller.upload_public_controllerupload_public_routerr   r   appadd_middlewarer9   rD   
middlewarerT   originsinclude_routerr,   dirnameabspath__file__base_dirjoinupload_pathexistsmakedirsmountr"       r#   <module>r      s   	  $ + 2 C 1 8 F I F P R P > ( > 5 @ B R H N 9Oz:   )#  ?2g&  ;9 ;9 ;9~   %%     <6N5O  P   >,o=N  O   =^<L  M   (EUDV  W   $V  4   )&@P?Q  R   (?O>P  Q   <XJ  G   $++N)  U   =xj  A   =o=N  O   #M
  K   )&@Q?R  S   ?))&  9   #**6  :   'o=N  O 77??277??845ggll8Y/	ww~~k"BKK 		*kK8y	 Ir   