a
    ;Xh=                     @   s  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l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Zd dl Z d dlm!Z!mZm"Z"m#Z#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l-m.Z. d dlZd dl/m0Z0 d dl(m)Z) dd Z1edd Z2dd Z3dd Z4dS )     )renderredirect)
LoginForms)auth)login_required)messages)get_user_info)HttpResponseForbidden)Especies)CadastroLote)SumF	functions)Estufa)Repique)SaidasEspeciesSaidas)ExtractMonthN)Countr   CaseWhenBooleanField)	ProtocoloProtocoloSemeadura)r   )UsuarioFuncionario)get_object_or_404)MetasModels)	MetasForm)nowc                 C   s   t  }| jdkrt | j}| r|d  }|d  }tj| ||d}|d urt| | tt	|dj
}t| d|j d td|jd	S t| d
 tdS t| dd|iS )NPOSTnome_usuariosenha)usernamepasswordusuariozBem-vindo, !dashboard_oneuser_idz)Login falhou. Verifique suas credenciais.loginzdashboard/login.htmlform)r   methodr   is_validvaluer   authenticater*   r   r   funcionarior   successnome_completor   iderrorr   )requestr+   r    r!   r%   r0    r6   8/var/www/viveiro_mudafortebrasil/apps/dashboard/views.pyr*      s.    

r*   c           A       C   s  | j j|krtdS tjddjdd}i }d}dgd }|D ]}|jj}||vr|jjdkrj|jj	j
n|jjj}|jj|jjd|d	||< |jr|jnd}	|| d
  |	7  < ||	7 }|jjr@|jjjd }
||
  |	7  < q@t| }tj j}tjjd|djtdddjtddd}dgd }|D ]"}|d d }t|d ||< q<tj dd d }tj }tjjdddd d }tjjdddd d }|ddjtdddd d }tj }|jt t!ddddt" ddjddd d d }|jt t!ddddt" ddjddd d d }|ddjtdd!d"d d }t#j }t#jjddd#d d }t#jjddd#d d }|ddjtd$d%d&d d }t$||d' d(}g }|D ]} tjj| d)j%tdd*d+ p"d}!tjjd| dj%tdd*d+ pHd}"t#jj| d,j%td$d*d+ pld}#|&| t|!t|"t|#d- qtjj|d)jtd.ddjtdd/d}$dgd }%|$D ]}&t|&d0 |%|&d d < qtjj|dd1jtd2ddjtdd3d}'d4gd }(|'D ]4})|)d d }|)d5 d ur^t'|)d5 nd4|(|< q4tj%td6d7 }*|*d urt'|*nd}+t#j%td$d8 },|,d urtt'|,nd}-tj%tdd9 }.|.d urtt'|.nd}/tj%tdd: }0|0d urtt'|0nd}1t(|d;}2t)j* }3t)j d<d d }4tj* }5tj d<d d }6t+  }7t,jj| j dd=d>}8|8d d? }9g }:|9D ]};|;j-|7k r|;j.rd@}<ndA}<ndB}<|;j/dkr|;j0|;j/ dC }=t1|=dC}=nd}=|;j2r8zt3jj4|;j2dD}>|>j5j
}?W n t3j6y4   dE}?Y n0 ndE}?|:&|;j7j8|;9 |;j:|;j-|;j/|;j0|<t|=|?dF	 q|8* }@t;| dG|2||3|4|5|6|+|-|/|1t<=|%t<=|||||||||||| |t<=|(t<=||:|@dHS )INu3   Você não tem permissão para acessar este perfil.	protocolo	semeaduraT)protocolo__finalizador      r   )numero_protocolodata_saida_protocoloquantidade_mudascliente_nomer>      )r:   Z%protocolo__data_saida_protocolo__yearZprotocolo__data_saida_protocolo)mesrA   qtd_especie)total_mudasrC   z-entrada_sementes_kg
   F)
finalizadoz-quantidade_repicadaZ&semeadura__lote__especie__nome_popularZ"semeadura__lote__especie__especiesquantidade_repicada)Ztotal_mudas_produzidasz-total_mudas_produzidas)Zdata_venda__isnullthen)defaultoutput_field)Ztem_data_vendaz-qtd_especie)total_vendasz-total_vendasz-quantidade_mortalidadequantidade_mortalidade)total_mortalidadez-total_mortalidade   )Zdata_repique__year)totalrO   )Zdata_estufa__year)anototal_sementesrJ   rL   data_repique)total_repicadorS   )Zdata_venda__yearZ semeadura__protocolo__finalizado
data_venda)total_vendidog        rU   entrada_sementes_kgZentrada_sementes_kg__sumZquantidade_mortalidade__sumZquantidade_repicada__sumZqtd_especie__sumr(   z-id)
criado_porrE   
data_final   u
   ConcluídaZFalhouzEm andamentod   r$   ZDesconhecido)	especie	tipo_metadata_inicialrX   Zquantidade_metaZquantidade_feitastatus
percentualrW   zdashboard/dashboard_one.html)	user_infor)   numero_de_especiesultimas_especiesnumero_de_lotesultimos_lotesrQ   rL   Ztotal_repicadatotal_qtd_especiesdados_repicadosdados_anuaisdez_maiores_lotes mudas_produzidas_nao_finalizadasmudas_produzidas_finalizadasmudas_produzidas_agrupadas#mudas_mais_vendidas_nao_finalizadasmudas_mais_vendidas_finalizadasmudas_mais_vendidas_agrupadas$maiores_mortalidades_nao_finalizadas maiores_mortalidades_finalizadasmaiores_mortalidades_agrupadasgrouped_finalizadostotal_mudas_vendidasdados_vendasdados_protocolos
metas_infototal_metas)>userr3   r	   r   objectsselect_relatedfilterr8   tipo_clientecliente_fisicor2   cliente_empresanome_fantasianum_protocolor=   rB   monthlistvaluesdatetimedatetodayyearannotater   r   order_byintr   allr   r   r   r   r   r   range	aggregateappendfloatr   r
   countr   r   rX   meta_atingida
quantidadequantidade_acumuladaminrW   r   getr0   DoesNotExistr[   nome_popularget_tipo_meta_displayr]   r   jsondumps)Ar5   r)   Z!protocolos_finalizados_semeadurasrr   rs   Zvendas_por_mes_listapsprotocolo_idr?   r>   Z	mes_vendaZgrouped_finalizados_listZ	ano_atualZprotocolos_por_mesru   r8   Z	mes_indexrh   Zmudas_mais_produzidasri   rj   rk   Zmudas_mais_vendidasrl   rm   rn   Zmaiores_mortalidadesro   rp   rq   Zanosrg   rP   Ztotal_produzidas_anoZtotal_vendidas_anoZtotal_mortalidade_anoZrepiques_por_mesrf   repiqueZvendas_por_mesrt   vendaZtotal_sementes_decimalrQ   Ztotal_mortalidade_decimalrL   Ztotal_repicadas_decimalZtotal_repicadasZtotal_qtd_especies_decimalre   r`   ra   rb   rc   rd   hojemetasZmetas_displayrv   metar^   r_   Zusuario_funcionarioZcriado_por_nomerw   r6   r6   r7   r'   <   sh   
 






	
	
	








r'   c                 C   s   t |  t| d tdS )NzLogout efetuado com sucesso!r*   )r   logoutr   r1   r   )r5   r6   r6   r7   r   r  s    
r   c                 C   s,   | j jstdS t| j j}t| dd|iS )Nindexzdashboard/error.htmlr`   )rx   is_authenticatedr   r   r3   r   )r5   r`   r6   r6   r7   r4   x  s    r4   )5django.shortcutsr   r   Zapps.dashboard.formsr   django.contribr   Zdjango.contrib.auth.decoratorsr   r   Zapps.dashboard.utilsr   django.httpr	   Zapps.especies.modelsr
   apps.lotes.modelsr   django.db.modelsr   r   r   apps.estufa.modelsr   apps.repique.modelsr   Zapps.saidas.modelsr   r   django.db.models.functionsr   r   r   r   r   r   r   Zapps.protocolos.modelsr   r   apps.funcionario.modelsr   r   Zapps.metas.modelsr   Zapps.metas.formsr   django.utils.timezoner   r*   r'   r   r4   r6   r6   r6   r7   <module>   sB   
  7