
    hd                        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j/                  d      e
d               Zej/                  ddg      e
d               Zej/                  ddg      e
d               Zej/                  ddg      e
d               Zy)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            	      F   t               } | j                  d      j                         D cg c]  }|d   	 }}dt        |      v }d|rdndz   }| j                  d| dt        d	   f      }g }|j                         D ]n  }t        |d
         }t        ||d   xs dt              \  }	}
t        d      rdnd}|r|d   nd xs d}|j                  ||d   |	rt        |	      nd||d       p t        d|i      }d|j                  d<   d|j                  d<   |S c c}w )NPRAGMA table_info(cameras)r   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rowcols	has_modelselect_fieldscurrowsrcam_id	latest_dt_	thumb_urlr   resps                 JC:\Users\algun\Documents\ceba web\Ceba - Github\app_modules\cameras_api.pyapi_camerasr1      sP    
B jj)EFOOQRQsCFQDR3t9$I8IXZ[M
**w}o-pqt{  }F  uG  tI  JCD\\^Q{^$+FAlO4Ir;W	13ABU3V/\x	(7dD}]+3<9Y/BS&
 	  It$%D$TDLL!'DLLK) Ss   Dz/api/kamere/addPOST)methodsc                     t        j                  d      xs i } t        dddt        dddd}t        | |      \  }}}|st	        d|d      d	fS |d
   j                         }|d   j                         }|j                         rt        |      dk(  st	        ddd      d	fS |st	        ddd      d	fS t               }|j                  dt        d   |f      j                         }|rt	        ddd      dfS |j                  d      j                         D 	cg c]  }	|	d   	 }
}	dt        |
      v }	 |r|j                  dt        d   ||df       n|j                  dt        d   ||f       |j                          t	        ddi      S c c}	w # t        j                   $ r t	        ddd      dfcY S w xY 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  r   r   r   zPINSERT INTO cameras (user_id, camera_id, camera_name, model) VALUES (?, ?, ?, ?)r   zFINSERT INTO cameras (user_id, camera_id, camera_name) VALUES (?, ?, ?)r=   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&   s               r0   api_add_camerarO   8   s    4(.BD "F #3DIF (:$'G$E9n5Y?@#EE{+113I /557KC	Nb$855abcehhh55NOPRUUU	BZZORYZcRdfoQpqzz|F55KLMsRR jj)EFOOQRQsCFQDR3t9$IUJJilst}l~  AJ  LW  Yf  lg  hJJ_bijsbtv  BM  bN  O
			4()) S == U55MNOQTTTUs   F:AF #F>=F>z/api/kamere/renamec                  f   t        j                  d      xs i } t        | j                  dd            j	                         }| j                  d      xs dj	                         }|j                         rt        |      dk(  st        ddd	      d
fS |st        ddd	      d
fS t               }	 |j                  d|t        d   |f      }|j                          |j                  dk(  rt        ddd	      dfS t        ddi      S # t        j                  $ r t        ddd	      dfcY S w xY w)NTr5   r   r   r   r7   FNeispravan ID kamere.r<   r?   zIme je obavezno.z@UPDATE cameras SET camera_name=? WHERE user_id=? AND camera_id=?r   r      Kamera nije pronađena.  r=      Greška baze.r@   r   rA   r    getrB   rC   rD   r   r   r   r   rF   rowcountrG   rH   )rI   r   new_namer#   r(   s        r0   api_rename_camerarY   _   s9    4(.BDDHH["-.446I'-2446HC	Nb$855LMNPSSS55GHI3NN	BLjj[^fhopyhz  }F  ^G  H
		<<1u9RSTVYYY	4())== L5_EFKKLs   2A
D
 =D
 
#D0/D0z/api/kamere/deletec                     t        j                  d      xs i } t        | j                  dd            j	                         }|j                         rt        |      dk(  st        ddd      d	fS t               }	 |j                  d
t        d   |f      }|j                          |j                  dk(  rt        ddd      dfS t        ddi      S # t        j                  $ r t        ddd      dfcY S w xY w)NTr5   r   r   r7   FrQ   r<   r?   z3DELETE FROM cameras WHERE user_id=? AND camera_id=?r   r   rR   rS   r=   rT   r@   rU   )rI   r   r#   r(   s       r0   api_delete_camerar[   t   s     4(.BDDHH["-.446IC	Nb$855LMNPSSS	BLjjNQXYbQcenPop
		<<1u9RSTVYYY	4())== L5_EFKKLs   =A	C C #C:9C:)__doc__flaskr   r   r   r   rG   r#   r   securityr	   pathsr
   images_servicer   helpersr   assetsr   security_enhancementsr   __name__bprouter1   rO   rY   r[        r0   <module>ri      s    7 6   $  0  " 5 }h' -  4 
fX."U  /"UJ 
1L  2L& 
1L  2Lrh   