a
    ;Xh`=                     @   s   d dl mZmZmZ d dlmZ d dlmZmZ d dl	m
Z
 d dlmZ d dlmZmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ d dlmZmZmZmZ d dlmZ d dlmZ dd Z dd Z!dd Z"dd Z#dd Z$dd Z%dd Z&dS )    )renderredirectget_object_or_404)get_user_info)
EstufaFormSelecaoForm)messages)	Semeadura)EstufaLogFinalizacaoEstufaSelecao)Repique)datetime)SumMax)JsonResponse)r   OuterRefExistsSubquery)	mark_safe)timezonec                 C   s(  | j jstdS t| j j}tjjtdt	t
jjtdddjtdddd d	 tt
jjtdd
dttjjtdddt	tjjtddddjtdddd d	 tddtt
jjtddttjjtddd d}g }|D ]}g }g }g }g }g }	g }
g }|jjd
d}|jd urJ|jnd}|jd ur`|jnd}|| }|jd ur~|jnd}|| }|D ]L}|j|kr||jd |t|j ||j ||j q|jr.tjj|dd}|D ]4}|	|jd |
t|j ||j q|r8|ndg}|rH|ndg}|rX|ndg}|rh|ndg}|	rx|	ndg}	|
r|
ndg}
|r|ndg}|dkr||j|j |j!|j"j#j$|j"j#j%|j&|jt'|j||||	||
|j||||j"j(|j"j)|j"j(|j*|j+d qt,| d|||dS )Nindexestufas__quantidade_mortalidadepk	semeadurar   quantidade_repicadatotal_repiquer      F)r   
finalizador   r   Zquantidade_selecao__gtquantidade_selecaototal_quantidade_selecaor$   estufas__data_estufa)total_estufar   repique_nao_finalizadoselecao_existr$   ultima_data_estufaTlote__especier    %d/%m/%Y )semeadura_idnumero_mudadata_semeianome_popularespeciesr)   r&   r   resto_estufa_repiqueresto_selecao_estufa_repiqueestufa_datesselecao_datesZestufa_quantidadesZselecao_quantidadesr$   
estufa_idsselecao_idsr    estimativa_minimaestimativa_maximaestimativa_mediaqtd_sementes_utilizadar'   zestufa/lista_estufa.html)
semeadurasestufas	user_info)-useris_authenticatedr   r   idr	   objectsannotater   r   r   filterr   valuesr   r   r   r
   select_relatedr>   r   r&   r$   quantidade_mortalidadeappenddata_estufastrftimestrr    r(   data_selecaor"   r/   r0   loteespecier1   r2   r)   intr9   r:   r<   r'   r   )requestr?   r=   r>   r   estufas_dataestufas_quantidadesestufas_idsestufas_finalizadoselecoes_dataselecoes_quantidadesselecoes_idsestufas_querysetr   r&   r3   r$   r4   estufaselecoes_querysetselecao r]   5/var/www/viveiro_mudafortebrasil/apps/estufa/views.pylista_estufa   s    *,

r_   c                 C   s  | j jstdS t| j j}| jd}tjj	t
dttjjtdddj	t
ddd	d d
 ttjjtdddj	t
dddd d
 tddd}|rtt|d
d
}tt|dd}|j||fd}|ttjjtdddttjjtdddB }| }tjdd }g }|D ]`}	g }
g }g }g }g }g }g }|	j }|D ]@}|
|jd |t|j ||j ||j  qjtjj|	d}|D ]4}||j!d |t|j" ||j q||	j|	j#|	j$|	j%j&j'|	j%j&j(|	j)|	j*t|	j+|	j+r@|	j*r@|	j+|	j* nd|	j+rl|	j*rl|	j,rl|	j+|	j* |	j, nd|
|||||||	j%j-|	j%j.|	j%j-|	j,d q:t/| d|||||dS )Nr   anor   r   r   r   r   r   r   r   r"   r#   r$   r%   )r&   r   r$   r)   r*         )Zdata_semeia__ranger   )r   Zquantidade_mortalidade__gtr!   r0   yearr,   )r.   r/   r0   r1   r2   r)   r&   r   r3   r4   r5   r6   Zestufa_quantitiesZselecao_quantitiesr7   r8   r    r9   r:   r;   r$   z!estufa/lista_estufa_completa.html)r=   r>   anos_disponiveis
ano_filtror?   )0r@   rA   r   r   rB   GETgetr	   rC   rD   r   r   r   rE   r   rF   r   r   rG   r   rP   r   r
   alldatesdistinctr>   rI   rJ   rK   rL   rH   r    rM   r"   r/   r0   rN   rO   r1   r2   r)   r&   r   r$   r9   r:   r   )rQ   r?   re   semeaduras_queryZdata_inicioZdata_fimr=   rd   r>   r   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r]   r^   lista_estufa_completa   s    

,rl   c                 C   s|   t t|d}| jdkrdt| j}| rj|jdd}||_| j|_	|  t
| td tdS nt }t| d||dS )	Nr   POSTFcommituq   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Mortalidade registrado com êxito.r_   zestufa.htmlformr   )r   r	   methodr   rn   is_validsaver   r@   registrado_porr   successr   r   r   )rQ   r.   r   rr   rZ   r]   r]   r^   rZ      s    


rZ   c                 C   s   t t|d}td|j  | jdkrtt| j}| rz|jdd}||_	| j
|_|  t| td tdS nt }t| d||d	S )
Nrm   zTotal Repique para a Semeadura rn   Fro   un   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong>Seleção registrada com êxito.r_   zselecao.htmlrq   )r   r	   printrB   rs   r   rn   rt   ru   r   r@   rv   r   rw   r   r   r   )rQ   r.   r   rr   r\   r]   r]   r^   r\     s    


r\   c              
   C   s   | j dkr| jddkrz>tjj|d}|rD|  tddiW S tddidd	W S W n> ty } z&tdd
t| idd	W  Y d }~S d }~0 0 tddidd	S )Nrn   x-requested-withXMLHttpRequestrm   messageu    Seleção excluída com sucesso.u   Seleção não encontrado.  statusu   Erro ao excluir Seleção:   E   Método de solicitação inválido ou não é uma solicitação AJAX.  )	rs   headersrg   r   rC   deleter   	ExceptionrL   )rQ   Z
selecao_idr\   er]   r]   r^   excluir_selecao  s    0r   c              
   C   s   | j dkr| jddkrz>tjj|d}|rD|  tddiW S tddidd	W S W n> ty } z&tdd
t| idd	W  Y d }~S d }~0 0 tddidd	S )Nrn   ry   rz   rm   r{   u   Estufa excluído com sucesso.u   Estufa não encontrado.r|   r}   zErro ao excluir Estufa: r   r   r   )	rs   r   rg   r
   rC   r   r   r   rL   )rQ   Z	estufa_idrZ   r   r]   r]   r^   excluir_estufa-  s    0r   c                 C   s$  z| j dkrtjj|d}| jdd}| jdd}|dkrH|rH|}n|}tjj|j|j|t	
 t	
 | j| jj||d	 tjj|djd	d
 t| td tdddW S | j dkrtdddW S W nF ty } z,td|  tdddddW  Y d }~S d }~0 0 tdddS )Nrn   rm   motivo_exclusaor-   motivo_exclusao_outrosOutros)	numero_lote	data_loter.   data_exclusaohora_exclusaousuario_exclusaonome_usuario_exclusaor   r   )r.   Tr+   ul   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Estufa finalizado com êxito.rw   zEstufa finalizado com sucesso.)r~   r{   rf   u+   Solicitação GET permitida para esta view.z Erro na view finalizar_repique: errorzErro interno no servidor.r   r}   u   Método não suportado.)rs   r	   rC   rg   rn   r   creater/   r0   r   nowr@   usernamer
   rE   updater   rw   r   r   r   rx   )rQ   r.   r   r   r   motivo_finalr   r]   r]   r^   finalizar_estufa?  sH    

(r   N)'django.shortcutsr   r   r   apps.dashboard.utilsr   Zapps.estufa.formsr   r   django.contribr   apps.lotes.modelsr	   apps.estufa.modelsr
   r   r   apps.repique.modelsr   r   django.db.modelsr   r   django.httpr   r   r   r   django.utils.safestringr   django.utilsr   r_   rl   rZ   r\   r   r   r   r]   r]   r]   r^   <module>   s&   zf