o
    thC,                     @   s  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	d
 Zejddgddd Zejddgddd Zejddgddd Zejddgdedd Zejddgdedd Zejddgdedd Zejd dgded!d" Zejd#dgde
d$d% Zejd&dgded'd( Zejd)dgded*d+ Zejd,dgded-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                 C   s    d| v o|  ddd  tv S )N.   )rsplitlowerALLOWED_EXTENSIONS)filename r   #/var/www/html/src/routes/content.pyallowed_file   s   r   z/contentGET)methodsc                  C       t j } tdd | D dfS )zGet all content itemsc                 S      g | ]}|  qS r   to_dict.0itemr   r   r   
<listcomp>       z#get_all_content.<locals>.<listcomp>   )r   queryallr   )content_itemsr   r   r   get_all_content   s   
r-   z/content/<section>c                 C   s(   t jj| d }tdd |D dfS )zGet content items by section)sectionc                 S   r!   r   r"   r$   r   r   r   r'      r(   z*get_content_by_section.<locals>.<listcomp>r)   )r   r*   	filter_byr+   r   )r.   r,   r   r   r   get_content_by_section   s   r0   z/content/<section>/<key>c                 C   s8   t jj| |d }|rt| dfS tddidfS )zGet specific content itemr.   keyr)   errorzContent not foundi  )r   r*   r/   firstr   r#   )r.   r2   content_itemr   r   r   get_content_item   s   r6   POSTc                  C   s   t j} | d}| d}| d}| d}| dd}|r!|s)tddid	fS tjj||d
 }|r=tddid	fS t|||||td d}t	j
| t	j  t| dfS )zCreate new content itemr.   r2   value_envalue_hecontent_typetextr3   zSection and key are required  r1   z0Content with this section and key already existsuser_idr.   r2   r8   r9   r:   
updated_by   )r   jsongetr   r   r*   r/   r4   r   r   addcommitr#   )datar.   r2   r8   r9   r:   existing_contentr5   r   r   r   create_content&   s,   



	
rG   z/content/<int:content_id>PUTc                 C   s   t j| }tj}d|v r|d |_d|v r|d |_d|v r$|d |_d|v r-|d |_d|v r6|d |_	t
d |_tj
  t| dfS )zUpdate existing content itemr.   r2   r8   r9   r:   r=   r)   )r   r*   
get_or_404r   rA   r.   r2   r8   r9   r:   r   r?   r   rD   r   r#   )
content_idr5   rE   r   r   r   update_contentG   s   






rK   DELETEc                 C   s2   t j| }tj| tj  tddidfS )zDelete content itemmessagezContent deleted successfullyr)   )r   r*   rI   r   r   deleterD   r   )rJ   r5   r   r   r   delete_content_   s   
rO   z/content/bulkc            
   	   C   s  t j} | dg }|stddidfS g }|D ]S}|d}|d}|d}|d}|d	d
}|r7|s8qtjj||d }	|	rS||	_||	_	||	_
td |	_nt|||||td d}	tj|	 ||	 qtj  tdt| ddd |D ddfS )z"Bulk update multiple content itemsr   r3   zNo content updates providedr<   r.   r2   r8   r9   r:   r;   r1   r=   r>   zUpdated  content itemsc                 S   r!   r   r"   r$   r   r   r   r'      r(   z'bulk_update_content.<locals>.<listcomp>rM   itemsr)   )r   rA   rB   r   r   r*   r/   r4   r8   r9   r:   r   r?   r   rC   appendrD   len)
rE   content_updatesupdated_itemsupdater.   r2   r8   r9   r:   r5   r   r   r   bulk_update_contenti   sH   




rX   z/mediac                  C   r    )zGet all media filesc                 S   r!   r   r"   )r%   filer   r   r   r'      r(   z#get_media_files.<locals>.<listcomp>r)   )r   r*   r+   r   )media_filesr   r   r   get_media_files   s   
r[   z/media/uploadc                  C   s  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	d
 | jddd  }t j d| }tj||}| | t|| jdt
 d| |tj|td d}tj| tj  t| dfS tddidfS )zUpload media filerY   r3   zNo file providedr<    zNo file selected..staticT)exist_okr   r   /r=   )r   original_filename	file_path	file_type	file_sizeuploaded_byr@   zFile type not allowed)r   filesr   r   r   ospathjoindirname__file__UPLOAD_FOLDERmakedirsr   r   uuiduuid4hexsaver   getsizer   r   rC   rD   r#   )rY   
upload_dirfile_extensionunique_filenamerb   
media_filer   r   r   upload_media   s0   




	
rw   z/media/<int:media_id>c                 C   sj   t j| }tjtjtdd|j	d}tj
|r"t| tj| tj  tddidfS )zDelete media filer]   r^   r`   rM   zMedia file deleted successfullyr)   )r   r*   rI   rg   rh   ri   rj   rk   rb   lstripexistsremover   r   rN   rD   r   )media_idrv   rb   r   r   r   delete_media   s   "

r|   z/initialize-contentc                  C   sb  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 ]1}t jj|d/ |d0 d1 }|st |d/ |d0 |d2 |d3 d4td5 d6}tj| || qftj  t	d7t
| d8d9d: |D d;d<fS )=z*Initialize default content for the websiteherotitle_hezSmart City Technologiesu3   טכנולוגיות חכמות לעיר החכמה)r.   r2   r8   r9   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-XXXXr.   r2   r1   r8   r9   r;   r=   r>   zInitialized rP   c                 S   r!   r   r"   r$   r   r   r   r'     r(   z.initialize_default_content.<locals>.<listcomp>rQ   r)   )r   r*   r/   r4   r   r   rC   rS   rD   r   rT   )default_contentcreated_items	item_datarF   r5   r   r   r   initialize_default_content   sX   

r   )!flaskr   r   r   r   src.models.userr   r   r   src.routes.authr	   r
   rg   werkzeug.utilsr   rn   __name__
content_bpr   rl   r   router-   r0   r6   rG   rK   rO   rX   r[   rw   r|   r   r   r   r   r   <module>   sP    



2'