o
    Hhd                     @   s   d Z ddlmZmZmZmZ ddl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 ddlmZ edeZe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 )z
cameras_api.py

Purpose:
  JSON APIs for camera CRUD and metadata retrieval used by the selection page.

Routes:
  - GET /api/kamere
  - POST /api/kamere/add
  - POST /api/kamere/rename
  - POST /api/kamere/delete
    )	BlueprintjsonifyrequestsessionN   )get_db)login_required)STATIC_PATH)latest_from_db_or_fs)	format_dt)_static_exists)validate_api_inputcameras_apiz/api/kamerec               	   C   s   t  } dd | d D }dt|v }d|rdnd }| d| d	td
 f}g }| D ]9}t|d }t||d p?dt\}}	tdrJdnd}
|rR|d nd pUd}|	||d |rbt
|nd|
|d q0td|i}d|jd< d|jd< |S )Nc                 S      g | ]}|d  qS r    .0rowr   r   (/var/www/html/app_modules/cameras_api.py
<listcomp>!       zapi_cameras.<locals>.<listcomp>PRAGMA table_info(cameras)modelz"camera_id, camera_name, file_pathsz, model zSELECT zC FROM cameras WHERE user_id = ? ORDER BY camera_name COLLATE NOCASEuser_id	camera_id
file_pathszcamera_render.pngz/static/camera_render.pngz/static/webicon180x180.pngVision minicamera_namezNema aktivnosti)r   r   last_activethumbnail_urlr   camerasz.no-store, no-cache, must-revalidate, max-age=0zCache-Controlzno-cachePragma)r   executefetchallsetr   strr
   r	   r   appendr   r   headers)dbcols	has_modelselect_fieldscurrowsrcam_id	latest_dt_	thumb_urlr   respr   r   r   api_cameras   s,   


r6   z/api/kamere/addPOST)methodsc                  C   sn  t jddpi } tdddtdddd}t| |\}}}|s(td|dd	fS |d
  }|d  }| r>t|dksGtdddd	fS |sRtdddd	fS t }|	dt
d |f }|rltddddfS dd |	d D }	dt|	v }
z%|
r|	dt
d ||df n|	dt
d ||f |  tddiW S  tjy   tddddf Y S w )NTsilent   )type
max_lengthrequiredd   )r   r   Fsuccessmessage  r   r   u*   Broj kamere mora imati točno 12 znamenki.zIme kamere je obavezno.z5SELECT 1 FROM cameras WHERE user_id=? AND camera_id=?r   u   Kamera već postoji.i  c                 S   r   r   r   r   r   r   r   r   R   r   z"api_add_camera.<locals>.<listcomp>r   r   zPINSERT INTO cameras (user_id, camera_id, camera_name, model) VALUES (?, ?, ?, ?)r   zFINSERT INTO cameras (user_id, camera_id, camera_name) VALUES (?, ?, ?)rA   u   Greška pri spremanju.  )r   get_jsonr'   r   r   stripisdigitlenr   r$   r   fetchoner%   r&   commitsqlite3Error)dataschemavalid	error_msgvalidated_datar   r   r*   existsr+   r,   r   r   r   api_add_camera8   s8   

rS   z/api/kamere/renamec                  C   s   t jddpi } t| dd }| dpd }| r%t|dks.tddd	d
fS |s9tddd	d
fS t }z%|	d|t
d |f}|  |jdkr[tddd	dfW S tddiW S  tjyt   tddd	df Y S w )NTr9   r   r   r   r;   FNeispravan ID kamere.r@   rC   zIme je obavezno.z@UPDATE cameras SET camera_name=? WHERE user_id=? AND camera_id=?r   r      Kamera nije pronađena.  rA      Greška baze.rD   r   rE   r'   getrF   rG   rH   r   r   r$   r   rJ   rowcountrK   rL   )rM   r   new_namer*   r.   r   r   r   api_rename_camera_   s"   
r\   z/api/kamere/deletec                  C   s   t jddpi } t| dd }| rt|dks%tdddd	fS t }z$|	d
t
d |f}|  |jdkrFtddddfW S tddiW S  tjy_   tddddf Y S w )NTr9   r   r   r;   FrT   r@   rC   z3DELETE FROM cameras WHERE user_id=? AND camera_id=?r   r   rU   rV   rA   rW   rD   rX   )rM   r   r*   r.   r   r   r   api_delete_camerat   s   
r]   )__doc__flaskr   r   r   r   rK   r*   r   securityr   pathsr	   images_servicer
   helpersr   assetsr   security_enhancementsr   __name__bprouter6   rS   r\   r]   r   r   r   r   <module>   s.    
%