
    thC,                        d dl mZmZmZmZ d dlmZmZmZ d dl	m
Z
mZ d dlZd dlmZ d dlZ ede          Zh dZdZd	 Ze                    d
dg          d             Ze                    ddg          d             Ze                    ddg          d             Ze                    d
dg          ed                         Ze                    ddg          ed                         Ze                    ddg          ed                         Ze                    ddg          ed                         Ze                    ddg          e
d                         Ze                    ddg          ed                         Ze                    ddg          ed                          Ze                    d!dg          ed"                         Z dS )#    )	Blueprintjsonifyrequestsession)Content	MediaFiledb)login_requiredadmin_requiredN)secure_filenamecontent>   docgifjpgpdfpngdocxjpeguploadsc                 t    d| v o4|                      dd          d                                         t          v S )N.   )rsplitlowerALLOWED_EXTENSIONS)filenames    0/home/ubuntu/ms4sc-backend/src/routes/content.pyallowed_filer      s=    (? D??3""1%++--1CCD    z/contentGET)methodsc                  t    t           j                                        } t          d | D                       dfS )zGet all content itemsc                 6    g | ]}|                                 S  to_dict.0items     r   
<listcomp>z#get_all_content.<locals>.<listcomp>        ===tDLLNN===r      )r   queryallr   )content_itemss    r   get_all_contentr0      s9     M%%''M==}===>>CCr   z/content/<section>c                     t           j                            |                                           }t	          d |D                       dfS )zGet content items by section)sectionc                 6    g | ]}|                                 S r$   r%   r'   s     r   r*   z*get_content_by_section.<locals>.<listcomp>   r+   r   r,   )r   r-   	filter_byr.   r   )r2   r/   s     r   get_content_by_sectionr5      sJ     M++G+<<@@BBM==}===>>CCr   z/content/<section>/<key>c                     t           j                            | |                                          }|r#t	          |                                          dfS t	          ddi          dfS )zGet specific content itemr2   keyr,   errorzContent not foundi  )r   r-   r4   firstr   r&   )r2   r8   content_items      r   get_content_itemr<      sj     =**7*DDJJLLL <|++--..33!4566;;r   POSTc            	         t           j        } |                     d          }|                     d          }|                     d          }|                     d          }|                     dd          }|r|st          ddi          d	fS t          j                            ||
                                          }|rt          ddi          d	fS t	          |||||t          d                   }t          j        
                    |           t          j                                         t          |                                          dfS )zCreate new content itemr2   r8   value_envalue_hecontent_typetextr9   zSection and key are required  r7   z0Content with this section and key already existsuser_idr2   r8   r?   r@   rA   
updated_by   )r   jsongetr   r   r-   r4   r:   r   r	   addcommitr&   )datar2   r8   r?   r@   rA   existing_contentr;   s           r   create_contentrN   &   sJ    <Dhhy!!G
((5//Cxx
##Hxx
##H88NF33L G# G!?@AA3FF }..wC.HHNNPP [!STUUWZZZ!9%  L JNN<   J<''))**C//r   z/content/<int:content_id>PUTc                    t           j                            |           }t          j        }d|v r|d         |_        d|v r|d         |_        d|v r|d         |_        d|v r|d         |_        d|v r|d         |_	        t          d         |_        t          j
                                         t          |                                          dfS )zUpdate existing content itemr2   r8   r?   r@   rA   rD   r,   )r   r-   
get_or_404r   rH   r2   r8   r?   r@   rA   r   rF   r	   rK   r   r&   )
content_idr;   rL   s      r   update_contentrS   G   s     =++J77L<DD /#I} ';T 1 $Z 0T 1 $Z 0 9$($8!%i0LJ<''))**C//r   DELETEc                     t           j                            |           }t          j                            |           t          j                                         t          ddi          dfS )zDelete content itemmessagezContent deleted successfullyr,   )r   r-   rQ   r	   r   deleterK   r   )rR   r;   s     r   delete_contentrX   _   s\     =++J77LJl###JI=>??DDr   z/content/bulkc            
      \   t           j        } |                     dg           }|st          ddi          dfS g }|D ]#}|                    d          }|                    d          }|                    d          }|                    d          }|                    d	d
          }|r|srt          j                            ||                                          }	|	r(||	_        ||	_	        ||	_
        t          d         |	_        n?t	          |||||t          d                   }	t          j                            |	           |                    |	           %t          j                                         t          dt#          |           dd |D             d          dfS )z"Bulk update multiple content itemsr   r9   zNo content updates providedrC   r2   r8   r?   r@   rA   rB   r7   rD   rE   zUpdated  content itemsc                 6    g | ]}|                                 S r$   r%   r'   s     r   r*   z'bulk_update_content.<locals>.<listcomp>        ;;;T$,,..;;;r   rV   itemsr,   )r   rH   rI   r   r   r-   r4   r:   r?   r@   rA   r   rF   r	   rJ   appendrK   len)
rL   content_updatesupdated_itemsupdater2   r8   r?   r@   rA   r;   s
             r   bulk_update_contentrd   i   s    <Dhhy"--O F!>?@@#EEM! + +**Y''jj::j))::j))zz.&99 	c 	 }..wC.HHNNPP 	)$,L!$,L!(4L%&-i&8L## #!!)"9-  L JNN<(((\****J@c-00@@@;;];;;    	 r   z/mediac                  t    t           j                                        } t          d | D                       dfS )zGet all media filesc                 6    g | ]}|                                 S r$   r%   )r(   files     r   r*   z#get_media_files.<locals>.<listcomp>   s     ;;;tDLLNN;;;r   r,   )r   r-   r.   r   )media_filess    r   get_media_filesri      s9     /%%''K;;{;;;<<cAAr   z/media/uploadc            	         dt           j        vrt          ddi          dfS t           j        d         } | j        dk    rt          ddi          dfS | rt	          | j                  rt
          j                            t
          j                            t                    ddt                    }t          j        |d	
           | j                            dd          d                                         }t          j                    j         d| }t
          j                            ||          }|                     |           t%          || j        dt           d| |t
          j                            |          t(          d                   }t*          j                            |           t*          j                                         t          |                                          dfS t          ddi          dfS )zUpload media filerg   r9   zNo file providedrC    zNo file selected..staticT)exist_okr   r   /rD   )r   original_filename	file_path	file_type	file_sizeuploaded_byrG   zFile type not allowed)r   filesr   r   r   ospathjoindirname__file__UPLOAD_FOLDERmakedirsr   r   uuiduuid4hexsaver   getsizer   r	   rJ   rK   r&   )rg   
upload_dirfile_extensionunique_filenamerq   
media_files         r   upload_mediar      s    W]" ;!3455s::= D} ;!3455s:: 2T]++ 2W\\"'//(";";T8][[

J.... --c155a8>>@@!Z\\-@@@@GLL_==			) $"m;-;;/;;$gooi00	*
 
 

 	
z"""

z))++,,c11G4566;;r   z/media/<int:media_id>c                    t           j                            |           }t          j                            t          j                            t                    dd|j        	                    d                    }t          j        
                    |          rt          j        |           t          j                            |           t          j                                         t!          ddi          dfS )zDelete media filerl   rm   ro   rV   zMedia file deleted successfullyr,   )r   r-   rQ   rv   rw   rx   ry   rz   rq   lstripexistsremover	   r   rW   rK   r   )media_idr   rq   s      r   delete_mediar      s     ++H55J RW__X66h
H\HcHcdgHhHhiiI	w~~i   
	) Jj!!!JI@ABBCGGr   z/initialize-contentc                     dddddddddddd	d
ddddddddd	dddddddddddddddddddddddddddddd d!d"dd#dd$d%dd#d	d&d'dd#d(d)d*dd#d+d,d,dd#d-d.d.dg} g }| D ]}t           j                            |d/         |d0         1                                          }|slt          |d/         |d0         |d2         |d3         d4t          d5         6          }t
          j                            |           |                    |           t
          j                                         t          d7t          |           d8d9 |D             d:          d;fS )<z*Initialize default content for the websiteherotitle_hezSmart City Technologiesu3   טכנולוגיות חכמות לעיר החכמה)r2   r8   r?   r@   subtitle_hez"Managed by Artificial Intelligenceu,   המנוהלות בבינה מלאכותיתdescriptionzFLeading the future of urban infrastructure with advanced IoT solutionsue   מובילים את עתיד התשתיות העירוניות עם פתרונות IoT מתקדמיםfeaturestitlez$A complete software solution for youu+   פתרון תוכנה מקיף עבורכםzIAdvanced smart city technologies with intelligent management capabilitiesu_   טכנולוגיות מתקדמות לעיר החכמה עם יכולות ניהול חכמותproductsms4sc_titlezMS4SC v1ms4sc_subtitlezSmart Meter Management Systemu+   מערכת ניהול מונים חכמיםms4sc_descriptionzbComprehensive system for managing smart water and electricity prepaid meters for local authoritiesu   מערכת מקיפה לניהול מונים חכמים של מים וחשמל בתשלום מראש עבור רשויות מקומיותgeocheck_titleGeoCheckgeocheck_subtitlezEmergency Response Platformu(   פלטפורמת תגובה לחירוםgeocheck_descriptionz[Advanced platform for emergency alerts and citizen location communication for public safetyuz   פלטפורמה מתקדמת להתרעות חירום ותקשורת מיקום אזרחים לבטיחות הציבורcontactz
Contact Usu   צור קשרzAGet in touch with us to learn more about our smart city solutionsub   צרו איתנו קשר כדי ללמוד עוד על פתרונות העיר החכמה שלנוaddresszJerusalem, Israelu   ירושלים, ישראלemailzinfo@ms4sc.comphonez+972-XX-XXX-XXXXr2   r8   r7   r?   r@   rB   rD   rE   zInitialized rZ   c                 6    g | ]}|                                 S r$   r%   r'   s     r   r*   z.initialize_default_content.<locals>.<listcomp>  r\   r   r]   r,   )r   r-   r4   r:   r   r	   rJ   r_   rK   r   r`   )default_contentcreated_items	item_datarM   r;   s        r   initialize_default_contentr      s    :;T  cX  	Y  	Y=>b  q_  	`  	`=  ?G  U|  	}  	} w<b  q^  	_  	_}  CN  \}  	~  	~ }*Zdee'7Ed  s`  	a  	a':  Im  {G  	H  	H'7Z]ghh':He  t^  	_  	_'=  Li  ws  	t  	t g<Udeem  BE  Sw  	x  	xi=P^z{{g;KYijjg;M[mnn1O6 M$ / /	"=22i(%  3 
 
 %'' 	
   
	/"!),e$":.":.#"9-  L JNN<(((  ...JD#m"4"4DDD;;];;;    	 r   )!flaskr   r   r   r   src.models.userr   r   r	   src.routes.authr
   r   rv   werkzeug.utilsr   r}   __name__
content_bpr   r{   r   router0   r5   r<   rN   rS   rX   rd   ri   r   r   r   r$   r   r   <module>r      sE   6 6 6 6 6 6 6 6 6 6 6 6 2 2 2 2 2 2 2 2 2 2 : : : : : : : : 				 * * * * * * Yy(++
HHH D D D *ug..D D /.D
 &88D D 98D
 ,ug>>< < ?>< *vh//0 0  0/0> -w??0 0  @?0, -zBBE E  CBE /F8440 0  540d (UG,,B B  -,B
 /F844%< %<  54%<N )H:>>H H  ?>H '&::7 7  ;:7 7 7r   