
    i                        d dl 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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Z eddg      Zej=                  d       ee       ee      fdededefd       Zej=                  d       eej@                         ed       ee       ee      fdedee   dedefd       Z!ejE                  d       ee       ee      fde#dedefd       Z$ejK                  d       eej@                         ed       ee       ee      fde#dedee   dedef
d       Z&ejO                  d       ee       ee      fde#dedefd       Z'y)    )	APIRouterDependsstatus
UploadFileFileFormHTTPException)JSONResponse)get_db)Session)	UserLoginNewsList	StoreNews
UpdateNews)	NewsClass)get_current_active_user)	FileClass)Optional)datetimeNz/newsNews)prefixtags/	news_itemsession_userdbc                 2   | j                   dn| j                   }t        |      j                  || j                  | j                        }t        |t              r|j                  d      dk(  rz|j                  dd      }t        |t              r|j                         nd}d|v sd	|v rt        t        j                  d
|g d      S t        t        j                  d|d d      S | j                   dnd}t        t        j                  d
||d      S )Nr   )pageitems_per_pagetitler   errormessageError zno datazno se encontraron datos   r   r"   datastatus_codecontent  z)Complete news list retrieved successfullyNews retrieved successfully)r   r   get_allper_pager    
isinstancedictgetstrlowerr
   r   HTTP_200_OKHTTP_404_NOT_FOUND)r   r   r   
page_valueresulterror_messagelower_messager"   s           VC:\Users\jesus\OneDrive\Escritorio\proyecto_pie360\backend\app\backend\routers\news.pyindexr;      s   nn,)..Jr]""
9CUCU]f]l]l"mF&$FJJx$8G$C

9g61;M31O++-UW%)Bm)S"..!,  11(
 	
 >G^^=S9YvG&&
     z/storeimagec                   K   | j                         }t        |      }||j                  rt        j                         j                  d      }t        j                         j                  d d }d|j                  v r|j                  j                  d      d   nd}|r
| d| d| n| d| }	d|	 }
|j                  ||
       |j                  |
      |d<   t        |      j                  |      }t        |t               rC|j                  d	      d
k(  r/t        t         j"                  d|j                  dd      d d      S t        t         j$                  dd|d      S w)N%Y_%m_%d_%H_%M_%S   .r$   _system/news/r=   r   r!     r"   zError creating newsr&   r(      zNews created successfully)r0   r   filenamer   nowstrftimeuuiduuid4hexsplituploadr1   r   storer/   r
   r   HTTP_500_INTERNAL_SERVER_ERRORHTTP_201_CREATED)r   r=   r   r   news_inputsfile_service	timestamp	unique_idfile_extensionunique_filenameremote_pathr7   s               r:   rO   rO   9   s`     .."KR=LU^^LLN++,?@	JJL$$Ra(	:=:O--c226UWIWYKq1^4DE`i_jjklukv]w$_$56E;/+//<Gr]  -F&$FJJx$8G$C==!::i1FG
 	
 ++2
 s   E&E(z
/edit/{id}idc                 b   t        |      j                  |       }t        |t              rg|j                  d      s|j                  d      dk(  rBt	        t
        j                  d|j                  d      xs |j                  dd      d d      S t	        t
        j                  dd	|d      S )
Nr!   r   r+   r"   News not foundr&   r(   r%   r,   )r   r1   r/   r0   r
   r   r5   r4   )rY   r   r   r7   s       r:   editr\   b   s    r]r"F&$VZZ%8FJJx<PT[<[11!::g.Y&**YHX2Y
 	
 &&4
 r<   z/update/{id}c                   K   |j                         }t        |      }||j                  rt        j                         j                  d      }t        j                         j                  d d }d|j                  v r|j                  j                  d      d   nd}	|	r
| d| d|	 n| d| }
d|
 }|j                  ||       |j                  |      |d<   t        |      j                  | |      }t        |t               rC|j                  d	      d
k(  r/t        t         j"                  d|j                  dd      d d      S t        t         j$                  dd|d      S w)Nr?   r@   rA   rB   r$   rC   rD   r=   r   r!   rE   r"   zError updating newsr&   r(   r%   zNews updated successfully)r0   r   rG   r   rH   rI   rJ   rK   rL   rM   rN   r1   r   updater/   r
   r   rP   r4   )rY   r   r=   r   r   rR   rS   rT   rU   rV   rW   rX   r7   s                r:   r^   r^   y   sd     .."KR=L U^^LLN++,?@	JJL$$Ra(	:=:O--c226UWIWYKq1^4DE`i_jjklukv]w$_$56E;/+//<Gr]!!"k2F&$FJJx$8G$C==!::i1FG
 	
 &&2
 s   E'E)z/delete/{id}c                 t   t        |      }t        |      }|j                  |       }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      d d      S t        |t              r?|j                  d      r.t        t        j                  d|j                  d      d d      S d }t        |t              r%|j                  d      r|d   j                  d	      }|j                  |       }t        |t              rC|j                  d      dk(  r/t        t        j                  d|j                  dd      d d      S |r%|j                  |      }|r	 |j                  |       t        t        j                  d
d|d      S # t        $ r Y *w xY w)Nr   r!   r+   r"   r[   r&   r(   	news_datar=   r%   zNews deleted successfully)r   r   r1   r/   r0   r
   r   r5   deleteextract_remote_pathr	   r4   )	rY   r   r   news_servicerS   existing	image_urlr7   rX   s	            r:   ra   ra      s   R=LR=L#H(D!hll8&<&G11#<<	3CD
 	
 (D!hll7&;11#<<0
 	
 I(D!hll;&?[)--g6	  $F&$FJJx$8G$C11!::i1AB
 	
 "66yA##K0 &&2
  ! s   ;F+ +	F76F7)(fastapir   r   r   r   r   r   r	   fastapi.responsesr
   app.backend.db.databaser   sqlalchemy.ormr   app.backend.schemasr   r   r   r   app.backend.classes.news_classr   app.backend.auth.auth_userr   app.backend.classes.files_classr   typingr   r   rJ   newspostr;   as_formrO   r1   intr\   putr^   ra    r<   r:   <module>ru      s   U U U * * " J J 4 > 5   

 39@AX9Yipqwix $X $Y $_f $ $L 8"9#4#45"&t*%&=>&/	&&J& & 		& &P ,,34K,L\cdj\k S 	 RY  , . $J$6$67"&t*%&=>&/((( J( 	(
 	( (T ^.56M.N^efl^m 9s 9) 9T[ 9 9r<   