3
i                 @   s  d dl Z d dlZd dlmZ d dlmZmZmZ d dlmZ ee	Z
ee
 ejjdZdd Zdd	 Ze
jd
ddgddd Ze
jdddgddd Ze
jdddgddd Ze
jdddgddd Ze
jdddgddd Ze	dkrd Zed!e  e
jd"ed#d$ dS )%    N)datetime)Flaskrequestjsonify)CORSz~/feeding_data.jsonc           	   C   s0   t jjtsg S ttd} tj| S Q R X d S )Nr)ospathexists	DATA_FILEopenjsonload)f r   /root/feeding_api.py	load_data   s    r   c             C   s,   t td}tj| |ddd W d Q R X d S )Nw   F)ZindentZensure_ascii)r   r   r   dump)datar   r   r   r   	save_data   s    r   z/api/feeding/todayZGETOPTIONS)methodsc                 sV   t jdkrd
S t } tj jd  fdd| D }tdd |D }t ||d	S )Nr       z%Y-%m-%dc                s   g | ]}|j d  kr|qS )date)get).0r   )	today_strr   r   
<listcomp>   s    ztoday.<locals>.<listcomp>c             s   s   | ]}|j d dV  qdS )amountr   N)r   )r   r   r   r   r   	<genexpr>   s    ztoday.<locals>.<genexpr>)r   recordstotal)r   r   )r   methodr   r   nowZstrftimesumr   )r   Ztoday_recordsr$   r   )r   r   today   s    
r(   z/api/feeding/addZPOSTc              C   s  t jdkrdS yt j } | s,tddidfS | jd}| jd}| jd	}| s^| s^|d krntdd
idfS t }d}|rtdd |D d }|||t|tj	 j
 d}|j| t| t|dfS  tk
 r } ztdt|idfS d }~X nX d S )Nr   r   r   erroru   请求体为空i  r   timer!   u'   缺少必要参数 (date, time, amount)   c             s   s   | ]}|j d dV  qdS )idr   N)r   )r   r   r   r   r   r"   5   s    zadd.<locals>.<genexpr>)r,   r   r*   r!   Z
created_at   i  )r   r   )r   r%   Zget_jsonr   r   r   maxintr   r&   	isoformatappendr   	Exceptionstr)bodyr   r*   r!   r   Znew_idZ
new_recorder   r   r   add"   s2    




r6   z/api/feeding/deleteZDELETEc                 s   t jdkrdS t jjd  s.tddidfS yt  W n   tddidfS t }  fd	d
| D }t|t| krtdd  didfS t| td dS )Nr   r   r   r,   r)   u   需要 id 参数i  u   id 必须是整数c                s   g | ]}|j d  kr|qS )r,   )r   )r   r   )	record_idr   r   r    Q   s    zdelete.<locals>.<listcomp>u   记录不存在 (id=)i  T)Zsuccessr,   )r   r   )	r   r%   argsr   r   r/   r   lenr   )r   Znew_datar   )r7   r   deleteD   s    
r;   z/api/feeding/updateZPUTc              C   s   t jdkrdS t j} | s(tddidfS | jd}|sFtddidfS t }xt|D ]\}}|jd|krVd	| kr| d	 || d	< d
| kr| d
 || d
< d| krt| d || d< tj	 j
 || d< t| t|| S qVW tdd| didfS )Nr   r   r   r)   u   请求体为空i  r,   u   需要 id 参数r   r*   r!   Z
updated_atu   记录不存在 (id=r8   i  )r   r   )r   r%   r   r   r   r   	enumerater/   r   r&   r0   r   )r4   r7   r   irecordr   r   r   updateW   s*    

r?   z/api/feeding/dayc                 sh   t jdkrdS t jjd  s.tddidfS t }  fdd	| D }td
d |D }t ||dS )Nr   r   r   r   r)   u   需要 date 参数i  c                s   g | ]}|j d  kr|qS )r   )r   )r   r   )r   r   r   r    x   s    zday.<locals>.<listcomp>c             s   s   | ]}|j d dV  qdS )r!   r   N)r   )r   r   r   r   r   r"   y   s    zday.<locals>.<genexpr>)r   r#   r$   )r   r   )r   r%   r9   r   r   r   r'   )r   Zday_recordsr$   r   )r   r   dayp   s    
r@   __main__i  zFeeding API started on port z0.0.0.0F)hostportdebug)r   r   r   Zflaskr   r   r   Z
flask_corsr   __name__Zappr	   
expanduserr   r   r   Zrouter(   r6   r;   r?   r@   rC   printZrunr   r   r   r   <module>   s$   
"
