
    }5i!                     H   S SK JrJrJrJrJrJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJrJrJr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKr\" SS/S9r\RA                  S5      \" \5      4S\S\4S jj5       r!\RA                  S5      \" \RD                  5      \" S5      \" \5      \" \5      4S\S\\   S\S\4S jj5       r#\RI                  S5      \" \5      \" \5      4S\%S\S\4S jj5       r&\RO                  S5      \" \RD                  5      \" S5      \" \5      \" \5      4S\%S\S\\   S\S\4
S jj5       r(\RS                  S5      \" \5      \" \5      4S\%S\S\4S jj5       r)\RI                  S5      \" \5      4S\4S  jj5       r*g)!    )	APIRouterDependsstatus
UploadFileFileFormHTTPException)JSONResponse)get_db)Session)	UserLoginNewsList	StoreNews
UpdateNews)	NewsClass)NewsScraperClass)get_current_active_user)	FileClass)Optional)datetimeNz/newsNews)prefixtags/	news_itemdbc                 :   U R                   c  SOU R                   n[        U5      R                  X R                  U R                  S9n[        U[        5      (       a  UR                  S5      S:X  a}  UR                  SS5      n[        U[        5      (       a  UR                  5       OSnSU;   d  S	U;   a  [        [        R                  S
U/ S.S9$ [        [        R                  SUS S.S9$ U R                   c  SOSn[        [        R                  S
UUS.S9$ )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   
page_valueresulterror_messagelower_messager"   s          JC:\Users\jesus\Desktop\proyecto_pie360\backend\app\backend\routers\news.pyindexr;      s   nn,)..Jr]""
CUCU]f]l]l"mF&$FJJx$8G$C

9g61;M31O1O++-UW%)Bm)S"..!,  11(
 	
 >G^^=S9YvG&&
     z/storeimagesession_userc                   #    U R                  5       n[        U5      nUb  UR                  (       a  [        R                  " 5       R                  S5      n[        R                  " 5       R                  S S nSUR                  ;   a  UR                  R                  S5      S   OSnU(       a
  U SU SU 3OU SU 3n	SU	 3n
UR                  X5        UR                  U
5      US'   [        U5      R                  U5      n[        U[         5      (       aA  UR                  S	5      S
:X  a,  [        [         R"                  SUR                  SS5      S S.S9$ [        [         R$                  SSUS.S9$ 7f)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:   rP   rP   :   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
    E4E6z
/edit/{id}idc                 v   [        U5      R                  U 5      n[        U[        5      (       ao  UR                  S5      (       d  UR                  S5      S:X  aD  [	        [
        R                  SUR                  S5      =(       d    UR                  SS5      S S.S9$ [	        [
        R                  SS	US.S9$ )
Nr!   r   r+   r"   News not foundr&   r(   r%   r,   )r   r1   r/   r0   r
   r   r5   r4   )r[   r>   r   r7   s       r:   editr^   c   s    r]r"F&$VZZ%8%8FJJx<PT[<[11!::g.Y&**YHX2Y
 	
 &&4
 r<   z/update/{id}c                   #    UR                  5       n[        U5      nUb  UR                  (       a  [        R                  " 5       R                  S5      n[        R                  " 5       R                  S S nSUR                  ;   a  UR                  R                  S5      S   OSn	U	(       a
  U SU SU	 3OU SU 3n
SU
 3nUR                  X+5        UR                  U5      US'   [        U5      R                  X5      n[        U[         5      (       aA  UR                  S	5      S
:X  a,  [        [         R"                  SUR                  SS5      S S.S9$ [        [         R$                  SSUS.S9$ 7f)Nr@   rA   rB   rC   r$   rD   rE   r=   r   r!   rF   r"   zError updating newsr&   r(   r%   zNews updated successfully)r0   r   rH   r   rI   rJ   rK   rL   rM   rN   rO   r1   r   updater/   r
   r   rQ   r4   )r[   r   r=   r>   r   rS   rT   rU   rV   rW   rX   rY   r7   s                r:   r`   r`   z   sb     .."KR=L U^^LLN++,?@	JJL$$Ra(	:=:O--c226UWIWYKq1^4DE`i_jjklukv]w$_$56E/+//<Gr]!!"2F&$FJJx$8G$C==!::i1FG
 	
 &&2
 rZ   z/delete/{id}c                    [        U5      n[        U5      nUR                  U 5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S.S9$ [        U[        5      (       aA  UR                  S5      (       a+  [        [        R                  SUR                  S5      S S.S9$ S n[        U[        5      (       a*  UR                  S5      (       a  US   R                  S	5      nUR                  U 5      n[        U[        5      (       aA  UR                  S5      S:X  a,  [        [        R                  SUR                  SS5      S S.S9$ U(       a*  UR                  U5      nU(       a   UR                  U5        [        [        R                  S
SUS.S9$ ! [         a     N(f = f)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   )	r[   r>   r   news_servicerT   existing	image_urlr7   rY   s	            r:   rc   rc      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   G	 	
GGz/scrapec           
      X   [        U 5      nUR                  5       nUR                  S5      S:X  a,  [        [        R
                  SUR                  SS5      SS.S9$ [        [        R                  S	UR                  SS
5      UR                  SS5      UR                  SS5      S.S.S9$ )z;
Endpoint para ejecutar el scraper de noticias del MINEDUC
r   r!   rF   r"   zError al scraper noticiasNr&   r(   r%   zScraping completadosavedr   skipped)ri   rj   )r   scrape_newsr1   r
   r   rQ   r4   )r   scraperr7   s      r:   rk   rk      s    
 r"G  "Fzz(w&==!::i1LM
 	
 &&zz)-BCGQ/!::i3

 
r<   )+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.classes.news_scraper_classr   app.backend.auth.auth_userr   app.backend.classes.files_classr   typingr   r   rK   newspostr;   as_formrP   r1   intr^   putr`   rc   rk    r<   r:   <module>r}      s   U U U * * " J J 4 C > 5   

 3-4V_ $X $7 $ $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v )%fo G  r<   