
    HCi\                        d dl mZmZmZmZ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mZ d dlmZmZmZmZ d d	lmZ d d
lmZ  ee      Z  e       Z! eddg      Z"e"jG                  dejH                  e       ed       ed       ed       ed       ee       e eejJ                  ejL                              fde'de'dededz  de
defd       Z(e"jS                  dee   ejT                         edd       eddd      dd d! ee       e eejJ                  ejL                              fd"e+d#e+d$e'dz  d%e'dz  d&e'dz  de
defd'       Z,e"jS                  d(ejT                  e       ee       e eejJ                  ejL                              fd)e+de
defd*       Z-e"j]                  d+eejT                         ed       ed       ed       ed       ee       e eejL                  ejJ                              fd)e+de'dz  de'dz  dedz  dedz  de
defd,       Z/y)-    )	APIRouterDepends
UploadFileFileFormstatusQueryHTTPException)Session)setup_logger)get_settings)require_roles)get_session)UserRole)ProjectReadProjectDetailReadProjectUpdateResponseProductTemplateInfo)PaginatedResponse)ProjectServicez/api/projectsProjects)prefixtagsz/create)status_coderesponse_model.Nproject_nameclient_nameoverlay_image
logo_imagedbcurrent_userc                 X   K   t        j                  | |||||       d{   }|S 7 w)zR
    Create project and process overlay against all active product templates.
    )r   r   overlay_file	logo_filer"   sessionN)r   create_project)r   r   r   r    r!   r"   projects          I/var/www/html/story-book/Story-Book-python-api/app/api/routes/projects.pycreate_project_endpointr*      s;      #11!"! G Ns   *(*z/list)r   r      )ge
      )r,   le
created_atdescpagelimitsearchsort_byorderc                     |dvrt        dd      |dvrt        dd      t        j                  || ||||      \  }}t        t           || ||D 	cg c]  }	t	        j
                  |	       c}	      S c c}	w )N)idr   r   r0   
updated_ati  zInvalid sort_by field)ascr1   zInvalid order)r2   r3   r4   r5   r6   )totalr2   r3   items)r
   r   list_projectsr   r   from_orm)
r2   r3   r4   r5   r6   r!   r"   rowsr;   rs
             r)   list_projects_endpointrA   (   s     WWC!899O#C11 ..
KD% [)0451{##A&5	  6s   A6z/detail/{project_id}
project_idc                 B   t        j                  ||       \  }}i t        j                  |      j	                         d|D cg c]:  }|d   |d   |d   |d   t        j                  |d         j	                         d< c}i}t        j                  |      S c c}w )Nimagesr8   final_image_pathfinal_image_thumbnail_pathfinal_image_product_pathproduct_template)r8   rE   rF   rG   rH   )r   get_project_detailr   r>   dictr   r   model_validate)rB   r!   r"   r(   rD   imgresponses          r)   project_detail_endpointrN   J   s     %77JGOGV


w
'
,
,
. 	
  $i$'(:$;.12N.O,/0J,K$7$@$@EWAX$Y$^$^$` 	
H ++H55	
s   ?Bz/update/{project_id}c           	      V   K   t        j                  ||| ||||       d {   S 7 w)N)r!   r"   rB   r   r   r$   r%   )r   update_project)rB   r   r   r   r    r!   r"   s          r)   rP   rP   f   s:       ..!!"   s    )'))0fastapir   r   r   r   r   r   r	   r
   sqlmodelr   app.core.loggingr   app.core.configr   app.api.depsr   app.db.sessionr   app.models.userr   r   app.schemas.projectr   r   r   r   app.schemas.commonr   app.services.project_servicer   __name__loggersettingsrouterpostHTTP_201_CREATED
SUPERADMINADMINstrr*   getHTTP_200_OKintrA   rN   patchrP        r)   <module>rj      s   \ \ \  ) ( & & & j j 0 7	h	>	/	=YF$;$;KXS	Cy $S	$(J+& t

!KL  T!	
 	  Y* $[1""   aAraC(&+& t

!KL
 $J 4Z	
 : 	 
: ""$   +& t

!KL666 6
6. (""    $Dz"4j'+Dz$(J+& tzz4??!KL* t $	
 T! 	 
ri   