a
    ¤Q•hÇ6  ã                   @   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 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 d dlmZ d dlmZ d dlmZ d dl m!Z!m"Z"m#Z#m$Z$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l0m1Z1 d dl2Z2d dl3m4Z4 dd„ Z5dd„ Z6dd„ Z7dd„ Z8dd „ Z9d!d"„ Z:d d#l;m<Z< d dl=Z=d$d%„ Z>dS )&é    )ÚrenderÚredirectÚget_object_or_404)Úget_user_info)ÚEspeciesForms)Úmessages)ÚEspecies)ÚPlantioOutrasInformacoesModels)ÚProducaoMudas)ÚObjectDoesNotExist)ÚCadastroLoteÚ	Semeadura)ÚRepique)ÚEstufaÚSelecao)ÚProtocoloSemeadura)Úletter)Úcolors)ÚSimpleDocTemplateÚ	ParagraphÚSpacerÚTableÚ
TableStyleÚImageÚ	PageBreak)ÚgetSampleStyleSheet)Úinch)ÚBytesIO)ÚHttpResponse)ÚsettingsN)Ú	mark_safec                 C   s,   | j jstdƒS t| j jƒ}t| dd|iƒS )NÚindexzespecies/cadastro_especies.htmlÚ	user_info)ÚuserÚis_authenticatedr   r   Úidr   )Úrequestr"   © r'   ú+/var/www/sistema_ama/apps/especies/views.pyÚcadastro_especies   s    r)   c                 C   s¢   t ƒ }| jjstdƒS t| jjƒ}| jdkr�t | j| jƒ}| 	¡ r�|j
d }tjj|d� ¡ rpt | tdƒ¡ n | ¡  t | tdƒ¡ tdƒS t| d||d	œƒS )
Nr!   ÚPOSTÚespecies)r+   ue   <i class="fa-solid fa-circle-exclamation"></i><strong class="mx-1">Erro!</strong> EspÃ©cie ja existe.uo   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong>  EspÃ©cie cadastrada com Ãªxito.Úlista_especiesz"especies/cadastro_de_especies.html)Úformr"   )r   r#   r$   r   r   r%   Úmethodr*   ÚFILESÚis_validÚcleaned_datar   ÚobjectsÚfilterÚexistsr   Úerrorr    ÚsaveÚsuccessr   )r&   r-   r"   r+   r'   r'   r(   Úcadastro_de_especies"   s$    

ÿÿr8   c                 C   s¢   | j jstdƒS t| j jƒ}tj ¡ }tj	}|D ]^}|j
rL|› |j
› �|_
ntj› d�|_
tjj|d� ¡ |_tjj|d� ¡ |_t|j
ƒ|_q0t| d||dœƒS )Nr!   zassets/img/foto_planta.gif)Úespeciezespecies/lista_especies.html)Zcardsr"   )r#   r$   r   r   r%   r   r2   Úallr   Ú	MEDIA_URLÚfoto_especieÚ
STATIC_URLr
   r3   r4   Zproducao_existenter	   Zinformacao_existenteÚboolZimagem_existenter   )r&   r"   r+   Úbase_urlr9   r'   r'   r(   r,   =   s"    
ÿÿr,   c                 C   s¤   t t|d�}| jjstdƒS t| jjƒ}| jdkr„t| j	| j
|d�}| ¡ rŽd| j
v rb| j
d |_| ¡  t | tdƒ¡ tdƒS n
t|d�}t| d||||d	œƒS )
N)Úpkr!   r*   )Úinstancer<   uo   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong>  EspÃ©cie atualizada com Ãªxito.r,   zespecies/editar_especie.html)r-   r"   r9   Ú
especie_id)r   r   r#   r$   r   r   r%   r.   r   r*   r/   r0   r<   r6   r   r7   r    r   )r&   rB   r9   r"   r-   r'   r'   r(   Úeditar_especie[   s     

ÿ

rC   c                 C   s`   z0t jj|d�}| ¡  t | tdƒ¡ tdƒW S  tyZ   t 	| tdƒ¡ tdƒ Y S 0 d S )N©r%   ul   <i class="fa-solid fa-circle-check"></i><strong class="mx-1">Sucesso!</strong> EspÃ©cie excluida com Ãªxito.r,   uƒ   <i class="fa-solid fa-circle-exclamation"></i><strong class="mx-1">Erro!</strong> Ocorreu um problema ao tentar excluir a EspÃ©cie.)
r   r2   ÚgetÚdeleter   r7   r    r   r   r5   )r&   rB   r+   r'   r'   r(   Údeletar_especiesu   s    ÿ
ÿrG   c                 C   sÎ  t j ¡ }tdd�}d|d< tƒ }t|td�}g }tj 	t
jd¡}t|dt dt d	�}g }| |¡ d
}	t|	tƒ d ƒ}
g }| |
¡ ||gg}t|dt dt gd�}| tddgƒ¡ | |¡ | tddt ƒ¡ g }| g d¢¡ |D ]}| |j|j|j|jg¡ qðd}t|ƒ}tddd|fdddtjfddddddtjfddddtjfgƒ}| |¡ | |¡ d}t|tƒ d ƒ}| tddt ƒ¡ | |¡ | |¡ | d¡ | | ¡ ¡ |  ¡  |S ) Nzapplication/pdf)Úcontent_typez'attachment; filename=lista_especies.pdfzContent-Disposition)Zpagesizezassets/img/logo-footer.jpgg      @é   )ÚwidthÚheightu²   
    Telefone: (73) 2011-0214
    Email: ama@viveiroama.com.br
    EndereÃ§o: Rod Br 101 KM 888 s/n Zona Rural (ao lado da parada do pedrao), Teixeira de Freitas, BA, Brazil
    ZNormalé   )Z	colWidths)ÚALIGN©r   r   ©éÿÿÿÿrP   ÚCENTER)ZVALIGNrN   rO   rQ   é   g      Ð?)ZNomezNome PopularZFamiliazRisco Extincaoz#198754Z
BACKGROUNDrN   ©rP   r   Z	TEXTCOLOR)rM   rN   )éýÿÿÿrP   ÚLEFT)ZFONTNAMErN   rS   zHelvetica-Bold)ZBOTTOMPADDINGrN   rS   é   )r   rR   rO   ZGRIDu4   InformaÃ§Ãµes adicionais no rodapÃ©, se necessÃ¡rio.r   )!r   r2   r:   r   r   r   r   ÚosÚpathÚjoinr   ÚSTATIC_ROOTr   r   Úappendr   r   r   ZsetStyler   r   r+   Únome_popularÚfamiliaÚrisco_extincaor   Z
whitesmokeÚblackÚbuildÚseekÚwriteÚreadÚclose)r&   ZdadosÚresponseÚbufferÚdocÚelementsZ	logo_pathZlogoZlogo_contentZempresa_infoZempresa_info_paragraphZempresa_info_contentZ
table_dataÚtableÚdatar9   Z	hex_colorÚstyleZrodape_infoZrodape_info_paragraphr'   r'   r(   Úgenerate_pdf‚   sr    


ÿ

ÿ
ÿþ
ÿ
ù	


ÿ


rl   )Údefaultdictc                 C   sú  | j jstdƒS t| j jƒ}tj ¡ }d }d}d}d}d}d}d}	d}
g }g }g }g }g }| jdk�r¾| j	 
d¡}|sŠ| ¡ rŠt |¡}n|r tjj|d� ¡ }|�r¾|j dd¡ dd¡ d	d¡ ¡ |_|j dd¡ dd¡ d	d¡ ¡ |_|j dd¡ dd¡ d	d¡ ¡ |_|j dd¡ dd¡ d	d¡ ¡ |_tjj|jd
� ¡ }tjj|jd� dd¡}tdd„ ƒ}|D ]R}|jj}|| d  |j�p”d7  < || d  |j�p°d|j�pºd 7  < �qrdd„ | ¡ D ƒ}t dd„ |D ƒƒ}t dd„ |D ƒƒ}t!jj|jd� "dddddddd¡}t d d„ |D ƒƒ}t#jj|jd� "d!d"d#d$d¡}t d%d„ |D ƒƒ}t$jj|jd� "d"d&d'd¡}t d(d„ |D ƒƒ}
t%jj|jd� "d"d)d*d¡}t d+d„ |D ƒƒ}	t&| d,|||||||||
|	|�pêd ddd-œg||||d.œƒS )/Nr!   r   ÚGETÚespecie_selecionadarD   ú[Ú ú]ú')rB   )Zsemeadura__lote__especie_idÚ	protocoloÚ	semeadurac                   S   s
   dddœS )Nr   )Ú
quantidadeÚvalor_monetarior'   r'   r'   r'   r(   Ú<lambda>	  ó    z$relatorio_especies.<locals>.<lambda>rv   rw   c                 S   s$   g | ]\}}||d  |d dœ‘qS )rv   rw   ©rj   rv   rw   r'   )Ú.0rj   Zvaloresr'   r'   r(   Ú
<listcomp>  s   ÿz&relatorio_especies.<locals>.<listcomp>c                 s   s   | ]}|d  V  qdS )rv   Nr'   ©r{   Úitemr'   r'   r(   Ú	<genexpr>  ry   z%relatorio_especies.<locals>.<genexpr>c                 s   s   | ]}|d  V  qdS )rw   Nr'   r}   r'   r'   r(   r     ry   )Zlote__especie_idÚlote__numero_loteÚnumero_mudaÚdata_semeiaÚmetodo_semeaduraÚlocal_semeaduraÚaberturaÚqtd_sementes_utilizadaZregistrado_por__usernamec                 s   s   | ]}|d  V  qdS )r†   Nr'   ©r{   Úsr'   r'   r(   r   $  ry   Úsemeadura__numero_mudaÚsemeadura__lote__numero_loteÚdata_repiqueÚquantidade_repicadac                 s   s   | ]}|d  V  qdS )rŒ   Nr'   )r{   Úrr'   r'   r(   r   0  ry   Údata_estufaÚquantidade_mortalidadec                 s   s   | ]}|d  V  qdS )r�   Nr'   )r{   Úer'   r'   r(   r   ;  ry   Údata_selecaoÚquantidade_selecaoc                 s   s   | ]}|d  V  qdS )r’   Nr'   r‡   r'   r'   r(   r   F  ry   z especies/relatorio_especies.htmlrz   )r+   r"   ro   Útotal_lotesÚtotal_mudas_vendidasÚtotal_valor_monetarioÚtotal_qtd_utilizadaÚtotal_qtd_repicadaÚtotal_qtd_mortalidadeÚtotal_qtd_selecaoÚvendas_por_dataÚsemeaduras_por_especieÚrepiques_por_especieÚestufas_por_especieÚselecoes_por_especie)'r#   r$   r   r   r%   r   r2   r:   r.   rn   rE   r4   ÚrandomÚchoicer3   ÚfirstÚbiomaÚreplaceÚstripÚformacao_vegetalÚfitofisionomiasÚpresenca_estadosr   Úcountr   Úselect_relatedrm   rt   Údata_criacaoÚqtd_especieÚ
valor_unitÚitemsÚsumr   Úvaluesr   r   r   r   )r&   r"   r+   ro   r“   r”   r•   r–   r—   r™   r˜   rš   r›   rœ   r�   rž   Zespecie_selecionada_idZprotocolos_semeadurasZdados_agrupadosÚpsrª   r'   r'   r(   Úrelatorio_especiesÞ   sÌ    
$$$$ÿþ,þÿöÿù	ÿúÿúñr±   )?Údjango.shortcutsr   r   r   Úapps.dashboard.utilsr   Zapps.especies.formsr   Údjango.contribr   Zapps.especies.modelsr   Zapps.outras_informacoes.modelsr	   Zapps.producao.modelsr
   Údjango.core.exceptionsr   Úapps.lotes.modelsr   r   Úapps.repique.modelsr   Úapps.estufa.modelsr   r   Zapps.protocolos.modelsr   Zreportlab.lib.pagesizesr   Zreportlab.libr   Zreportlab.platypusr   r   r   r   r   r   r   Zreportlab.lib.stylesr   Zreportlab.lib.unitsr   Úior   Údjango.httpr   Údjango.confr   rW   Údjango.utils.safestringr    r)   r8   r,   rC   rG   rl   Úcollectionsrm   rŸ   r±   r'   r'   r'   r(   Ú<module>   s<   $Y