a
    ;Xh5                     @   s  d dl mZmZ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mZ d dl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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 Z"dd Z#e!dd Z$d d
lmZ dd Z%dd Z&dd Z'dS )    )renderredirectget_object_or_404)get_user_info)RepiqueForm)messages)	Semeadura)FuncionarioCargo)RepiqueLogFinalizacaoRepique)datetime)SumMax)JsonResponse)ExistsOuterRef)timezone)	mark_safe)Prefetch)date)require_POSTc                 C   sl  | j jstdS t| j j}| jd}| j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}tjj	t
dtddd }|r|r|j||d!}n|j|d"}|s|r&i }|r||d#< |r||d$< |td%tjjf i |d&d'}n
|d%}| }tjd(d) }g }	|D ]}
t|
d&|
j }g }g }g }g }|D ]@}||jd* |t|j ||j ||j q||r|nd+g}|r|nd+g}|r|nd+g}|r|nd,g}|	|
j|
j|
j|
jjj |
jjj!|
j"|
j#|||||
jj$|
jj%|
jj&|
j'd- qRt(| d.||	|||||d/S )0Nindexanomes   Janeiro)numeronome   	Fevereiro   u   Março   Abril   Maio   Junho   Julho   Agosto	   Setembro
   Outubro   Novembro   Dezembrorepiques__quantidade_repicadarepiques__data_repiquetotal_repicadoultima_data_repiquelote__especie)repiques__data_repique__yearZrepiques__data_repique__month)r:   data_repique__yearZdata_repique__monthrepiquesZfiltrados_repiques)querysetto_attrdata_repiqueyear%d/%m/%Y F)semeadura_idnumero_mudadata_semeianome_popularespeciesr8   r7   repique_datesrepique_quantitiesrepique_ids
finalizadoestimativa_minimaestimativa_maximaestimativa_media
nova_mediaz#repique/lista_repique_completa.html)
semeadurasr<   anos_disponiveis
ano_filtro
mes_filtromeses	user_info))useris_authenticatedr   r   idGETgetr   objectsannotater   r   select_relatedfilterprefetch_relatedr   r   distinctdatesgetattrr<   allappendr?   strftimestrquantidade_repicadarK   rD   rE   loteespecierF   rG   r8   r7   rL   rM   rN   rO   r   )requestrU   rR   rS   rT   Zsemeaduras_queryZrepique_filterrP   rQ   r<   	semeaduraZrepiques_relacionadosrepiques_datarepiques_quantidadesrepiques_idsrepiques_finalizadorepique rq   6/var/www/viveiro_mudafortebrasil/apps/repique/views.pylista_repique_completa   s    
	
rs   c                 C   s  t | jj}tjjddjdd }tjj	t
dtdddttjjtd	d
d }g }|D ].}g }g }g }g }	g }
|j D ]Z}||jd |t|j ||j |	|j |jr|jjnd}|
| q|j}|j}d}|d ur(|d ur(t|}t|d }||k}||j|j|j|jj j!|jj j"|j#|j|j$|p^dg|phdg|prdg|	|jj%|jj&|jj'|j|||
d qht(| d||||dS )Nr   )Zcargo__nome__iexactadmin)Z%usuariofuncionario__usuario__usernamer4   r5   r6   r9   pkT)rk   rK   rA   u   Não informadoFi  rB   )rC   rD   rE   rF   rG   r8   r7   qtd_sementes_utilizadarH   rI   rJ   rK   rL   rM   rN   rO   
show_alertfuncionariosZrepique_funcionarioszrepique/lista_repique.html)rP   r<   rU   rx   ))r   rV   rX   r	   r[   r^   excluder`   r   r\   r   r   r]   r   r   r   r<   rc   rd   r?   re   rf   rg   rK   funcionarionome_completor7   rO   intrD   rE   rh   ri   rF   rG   r8   rv   rL   rM   rN   r   )rj   rU   rx   rP   r<   rk   rl   rm   rn   ro   Zrepique_nomes_funcionariosrp   Znome_funcionarior7   rO   rw   Ztotal_repicado_intZnova_media_intrq   rq   rr   lista_repique   s|    





r}   c              
   C   s   | j ddkrz(tjj|d}|  tddiddW S  tjy\   tddid	d Y S  ty } z&tdd
t| iddW  Y d }~S d }~0 0 tddiddS )Nzx-requested-withXMLHttpRequestru   messageu   Repique excluído com sucesso.   statusu   Repique não encontrado.i  zErro ao excluir repique:      Requisição inválida.i  )	headersrZ   r   r[   deleter   DoesNotExist	Exceptionrf   )rj   Z
repique_idrp   erq   rq   rr   excluir_repique   s    0r   c           	      C   s&  t t|d}| jdkr| jddkrt| j}| jd}| jd}| r
|r
|r
zt	|d
 }W n  ty   tdd	d
 Y S 0 tjj|||d }|rtddd
ddS |jdd}| j|_||_tjj|d|_||_|  tddd
S tddd
S tddd
S )Nr   POSTzX-Requested-Withr~   rz   r?   z%Y-%m-%derroru   Data do repique inválida.r   r   )funcionario_idrk   r?   Z	duplicadou?   Repique já registrado por esse funcionário nesta data e lote.r   r   F)commit)rX   successu   Repique registrado com êxito.u(   Formulário inválido ou dados ausentes.r   )r   r   methodr   rZ   r   r   is_validr   strptimer   
ValueErrorr   r   r[   r^   existssaverV   registrado_porrk   r	   rz   r?   )	rj   rC   rk   formr   Zdata_repique_strr?   Zja_feitorp   rq   rq   rr   rp      s:    

rp   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 )Nr   r   motivo_exclusaorB   motivo_exclusao_outrosOutros)	numero_lote	data_loterC   data_exclusaohora_exclusaousuario_exclusaonome_usuario_exclusaor   r   )rC   T)rK   um   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> Repique finalizado com êxito.r   zRepique finalizado com sucesso.r   rY   u+   Solicitação GET permitida para esta view.z Erro na view finalizar_repique: r   zErro interno no servidor.r   r   u   Método não suportado.)r   r   r[   rZ   r   r   createrD   rE   r   nowrV   usernamer   r^   updater   r   r   r   r   print)rj   rC   rk   r   r   motivo_finalr   rq   rq   rr   finalizar_repique  s<    

(r   c                 C   s   t j d}g }|D ]b}||jj|jjd|j	 d|j
 |jrT|jdnd|jp^d|jtdd|i| dd	 qt|d
dS )Nrk   rA   z + zN/Ar   zpartials/acoes_repique.htmlrp   )rj   )rD   rE   nome_especier8   r7   rv   ZacoesF)safe)r   r[   rc   r]   rd   rk   rD   rE   re   rF   rG   r?   r7   rv   render_to_stringr   )rj   r<   datarp   rq   rq   rr   repique_data_ajax8  s    
	r   N)(django.shortcutsr   r   r   apps.dashboard.utilsr   Zapps.repique.formsr   django.contribr   apps.lotes.modelsr   apps.funcionario.modelsr	   r
   apps.repique.modelsr   r   r   django.db.modelsr   r   django.httpr   r   r   django.utilsr   django.utils.safestringr   r   r   django.views.decorators.httpr   rs   r}   r   rp   r   r   rq   rq   rq   rr   <module>   s.   zG
+*