
    15gP                        d dl Z d dl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mZ d Zd dlmZ d#dZd dl Z d dl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 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+  ed       d dlmZ d dl Z d Z,d Z-d dlmZ d dlmZ d dl Z  G d de      Z.d$dZ/d dl0m1Z1 d dlm2Z2mZ d d l3m4Z4 d! Z5d" Z6y)%    N)renderget_object_or_404)settings)Projeto)Ambiente)combinations_with_replacement   )HIWALL_MODELOS)TIPODUTO_MODELOS)CASSETE_4VIAS_MODELOSc                 <   |dk(  rt         }n|dk(  rt        }n|dk(  rt        }ny|j                  d        d }t	        d      }t        dd	      D ]:  }t        ||      D ])  }t        d
 |D              }|| z
  }|| k\  s ||k  s&|}|}+ < |rt        |      S dS )Nhiwalltipodutocassete4viasu   Tipo de aparelho não suportadoc                     | d   S )Ncapacidade_resfriamento_w )xs    -C:\grfgraph\atual\cag\centraltermica\views.py<lambda>z%determinar_aparelho.<locals>.<lambda>   s
    #>!?    )keyinfr	      c              3   &   K   | ]	  }|d      yw)r   Nr   ).0aparelhos     r   	<genexpr>z&determinar_aparelho.<locals>.<genexpr>!   s     "^Y]X8,G#HY]s   u,   Não há combinação adequada de aparelhos.)	r
   r   r   sortfloatranger   sumlist)	carga_maxima_wattstipo_aparelho	aparelhosmelhor_combmenor_excessorcombcapacidade_totalexcessos	            r   determinar_aparelhor-      s     "		*	$$		.	()	0 NN?N@K%LM1b\1)Q?D""^Y]"^^&);;G#55'M:Q" ' @  !,4_1__r   )Http404c                 l   | j                   j                  d      }t        t        |      }t        j
                  j                  ||      }g }|D ]0  }|s|j                  xs d}||_        |j                          	 t        j                  j                  t        j                  d|j                         }t        j                  j                  ||j                   d      }	t        j                  j!                  |	      rNt#        j$                  |	d      }
d	|
j&                  v r$|
d	   j)                         }t+        ||      xs g }n	d
}g }nd}g }|j/                  |j                  |||j                  d       3 |||d}t1        | d|      S # t,        $ r}d| }g }Y d }~Ud }~ww xY w)Nr%   idprojetonome_ambienter   !arquivos_cargas_termicas/projeto__resultados_termicos.xlsxopenpyxlengine   Carga Térmica Total Ambienteu   Coluna não encontradau   Arquivo não encontradozErro ao processar arquivo: )nomecarga_termica_maxaparelho_detalhesr%   )r3   lista_ambientesr%   z1centraltermica/lista_ambientes_carga_termica.html)GETgetr   r   r   objectsfilterr%   saveospathjoinr   BASE_DIRnome_projetor4   existspd
read_excelcolumnsmaxr-   	Exceptionappendr   )request
projeto_idambiente_nomer%   r3   	ambientesr>   ambientecaminho_basecaminho_arquivodfr<   aparelhos_recomendadosecontextos                  r   lista_projetos_ambientesr[   .   s   KKOOO4MJ7G  ''}'UIO$22>hM "/	(77<<(9(9=^_f_s_s^t;uvL ggll<H<R<R;SSl9mnO ww~~o.]]?:F2bjj@(*+J(K(O(O(Q%-@ARTa-b-hfh*(@%-/*$=!)+&
 	**!2!7%33	 
 	= L *&H
 'NPXYY!  	("=aS A%'"	(s    CF	F3"F..F3)use)FPDF)datetime)HttpResponse)Parede)Vidro)PortaMadeira)
PortaVidro)Telhado)DadosTermicosAggc           
      t   t        j                  t         j                  j                  |      d       | d   dz  }t	        j
                  d       t	        j                  | d   |dd	d
       t        |      D ]+  \  }}t	        j                  | d   |   ||dddddd       - t	        j                  d       t	        j                  d       t	        j                  d       t	        j                          t	        j                          t	        j                  |       t	        j                          y )NTexist_okr:   i  )
      )figsizeu   Horáriou   Carga Térmica Total (TR)oblue)labelmarkercolorz.2fz TRcenterbottom   black)havafontsizerq   u   Horário do Diau8   Carga Térmica Total do Ambiente ao Longo do Dia (em TR))rD   makedirsrE   dirnamepltfigureplot	enumeratetextxlabelylabeltitlelegendgridsavefigclose)rW   caminho_graficocarga_termica_trivalors        r   gerar_grafico_carga_termicar   z   s    KK04@ 9:TA JJwHHR
^-5PY\djk ./5J"EeC[+<habjqr 0 JJ !JJ*+IIHIJJLHHJ KK IIKr   c                    t         j                  j                  t        j                  d| j
                   d      }t        j                  |d       i d|gd|j                  gd|j                  gd|j                  gd	|j                  gd
|j                  gd|j                  gd|j                  gd|j                  gd|j                  gd|j                   gd|j"                  gd|j$                  gd|j&                  gd|j(                  gd|j*                  gd|j,                  gi d|j.                  gd|j0                  gd|j2                  gd|j4                  gd|j6                  gd|j8                  gd|j:                  gd|j<                  gd|j>                  gd|j@                  gd |jB                  gd!|jD                  gd"|jF                  gd#|jH                  gd$|jJ                  gd%|jL                  gd&|jN                  gi d'|jP                  gd(|jR                  gd)|jT                  gd*|jV                  gd+|jX                  gd,|jZ                  gd-|j\                  gd.|j>                  gd/|j@                  gd0|jB                  gd1|jD                  gd2|jF                  gd3|jH                  gd4|jJ                  gd5|jL                  gd6|jN                  gd7|jP                  gi d8|jR                  gd9|jT                  gd:|jV                  gd;|jX                  gd<|jZ                  gd=|j\                  gd>|j^                  gd?|j`                  gd@|jb                  gdA|jd                  gdB|jf                  gdC|jh                  gdD|jj                  gdE|jl                  gdF|jn                  gdG|jp                  gdH|jr                  g|jt                  g|jv                  g|jx                  gdI}	t{        j|                  |	      }
t         j                  j                  || dJ      }|
j                  |dKL       |
S )MNzarquivos_climaticos/projeto_/Trh   r4   area_parede_nortecoeficiente_parede_nortetipo_parede_nortearea_parede_sulcoeficiente_parede_sultipo_parede_sularea_parede_lestecoeficiente_parede_lestetipo_parede_lestearea_parede_oestecoeficiente_parede_oestetipo_parede_oestearea_vidro_nortecoeficiente_vidro_nortetipo_vidro_nortearea_vidro_sulcoeficiente_vidro_sultipo_vidro_sularea_vidro_lestecoeficiente_vidro_lestetipo_vidro_lestearea_vidro_oestecoeficiente_vidro_oestetipo_vidro_oestearea_porta_madeira_nortecoeficiente_porta_madeira_nortetipo_porta_madeira_norte#diferencial_insolacao_madeira_nortearea_porta_madeira_sulcoeficiente_porta_madeira_sultipo_porta_madeira_sul!diferencial_insolacao_madeira_sularea_porta_madeira_lestecoeficiente_porta_madeira_lestetipo_porta_madeira_leste#diferencial_insolacao_madeira_lestearea_porta_madeira_oestecoeficiente_porta_madeira_oestetipo_porta_madeira_oeste#diferencial_insolacao_madeira_oestearea_porta_vidro_nortecoeficiente_porta_vidro_nortetipo_porta_vidro_norte!diferencial_insolacao_vidro_nortearea_porta_vidro_sulcoeficiente_porta_vidro_sultipo_porta_vidro_suldiferencial_insolacao_vidro_sularea_porta_vidro_lestecoeficiente_porta_vidro_lestetipo_porta_vidro_leste!diferencial_insolacao_vidro_lestearea_porta_vidro_oestecoeficiente_porta_vidro_oestetipo_porta_vidro_oeste!diferencial_insolacao_vidro_oestetipo_telhadocoeficiente_transmissao_telhadoarea_telhadocalor_sensivel_pessoacalor_latente_pessoanumero_pessoastaxa_iluminacaodissipacao_equipamentos
pe_direito	area_pisotemperatura_interna)umidade_relativa_internaumidade_absoluta_internataxa_renovacaoz
_dados.csvF)index)@rD   rE   rF   r   rG   rH   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   area_porta_nortecoeficiente_porta_nortetipo_porta_nortediferencial_insolacao_nortearea_porta_sulcoeficiente_porta_sultipo_porta_suldiferencial_insolacao_sularea_porta_lestecoeficiente_porta_lestetipo_porta_lestediferencial_insolacao_lestearea_porta_oestecoeficiente_porta_oestetipo_porta_oestediferencial_insolacao_oester   coeficiente_telhador   r   r   r   r   r   r   r   r   r   r   r   rJ   	DataFrameto_csv)r3   r4   paredevidroporta_vidroporta_madeiratelhadotermicorU   dadosrW   caminho_csvs               r   salvar_dados_em_csvr      s   77<< 1 15QRYRfRfQggh3ijLKKt,T-T 	f667	T
 	#V%D%D$ET 	f667T 	F223T 	!6#@#@"AT 	F223T 	f667T 	#V%D%D$ET 	f667T 	f667T 	#V%D%D$ET 	f667T$ 	U334%T& 	"E$A$A#B'T( 	U334)T* 	5//0+T, 	 %"="=!>-T. 	5//0/T0 	U3341T2 	"E$A$A#B3T4 	U3345T6 	U3347T8 	"E$A$A#B9T: 	U334;T@ 	#]%C%C$DATB 	*M,Q,Q+RCTD 	#]%C%C$DETF 	.0Y0Y/ZGTH 	!=#?#?"@ITJ 	(-*M*M)NKTL 	!=#?#?"@MTN 	,m.U.U-VOTP 	#]%C%C$DQTR 	*M,Q,Q+RSTT 	#]%C%C$DUTV 	.0Y0Y/ZWTX 	#]%C%C$DYTZ 	*M,Q,Q+R[T\ 	#]%C%C$D]T^ 	.0Y0Y/Z_Td 	!;#?#?"@eTf 	(+*M*M)NgTh 	!;#?#?"@iTj 	,k.U.U-VkTl 	!;!; <mTn 	&(I(I'JoTp 	!;!; <qTr 	*K,Q,Q+RsTt 	!;#?#?"@uTv 	(+*M*M)NwTx 	!;#?#?"@yTz 	,k.U.U-V{T| 	!;#?#?"@}T~ 	(+*M*M)NT@ 	!;#?#?"@ATB 	,k.U.U-VCTH 	--.ITJ 	*G,G,G+HKTL 	--.MTR 	 '"?"?!@STT 	!=!= >UTV 	7112WTX 	G334YTZ 	"G$C$C#D[T\ 	w))*]T^ 	g''(_T` 	 ; ;<aTb &-%E%E$F%,%E%E$F"112gTEl 
e	B'',,|j-IJKIIkI'Ir   c                   $     e Zd Z fdZd Z xZS )	CustomPDFc                 T   t        |   |i | || _        || _        t        j
                  j                  t        j                  ddd      }t        j
                  j                  t        j                  ddd      }| j                  dd|d       | j                  dd	|d       y )
NstaticfontszDejaVuSans.ttfzDejaVuSans-Bold.ttfDejaVu T)uniB)
super__init__r3   rT   rD   rE   rF   r   rG   add_font)selfr3   rT   argskwargsfont_path_regularfont_path_bold	__class__s          r   r   zCustomPDF.__init__   s    $)&)  GGLL):):HgO_`h&7&77Labh$54@h^>r   c                    | j                  ddd       | j                  dddddd	       | j                  ddd
       | j                  dddddd	       | j                  ddd
       | j                  ddd| j                  j                   ddd	       | j                  ddd| j                  j
                   ddd	       | j                  ddd| j                  j                   d| j                  j                   d| j                  j                   dddd	       | j                  dddt        j                         j                  d       ddd	       | j                  d       y )Nr   r            zGRFGraph Sistemas Inteligentesr   r	   C   u+   Relatório de Carga Térmica e Equipamentosr   z	Projeto: z
Ambiente: zCidade: z - Coordenadas: (z, )u   Data de Criação: z%Y-%m-%d %H:%M:%Srj   )set_fontcellr3   rH   rT   r4   cidadelatitude	longituder^   nowstrftimeln)r   s    r   headerzCustomPDF.header  sS   hR(		#q:Aq#FhR(		#qGAsShB'		#qIdll&?&?%@A1aM		#qJt}}'B'B&CDaCP		#qHT\\%8%8$99J4<<K`K`Jaacdhdpdpdzdzc{{|}  @A  CD  FI  	J		#q/0G0GH[0\/]^`acdfijr   )__name__
__module____qualname__r   r  __classcell__)r  s   @r   r   r      s    
?r   r   c           	      
   t        | |      }|j                  dd       |j                          |j                  ddd       |j	                  ddd	d
d       |j                  ddd       ||j
                  sd}d}	|j                  dz  }
|j                  d
   j                         D ]I  \  }}|j	                  ||
|d       |j	                  |	|
t        |      d       |j                  |
       K |j                  d       n|j	                  dddd
d       |j                          |j                  ddd       |j	                  dddd
d       t        j                  j                  |      r#|j                  |d|j                         d       |j                  d       |j                          |j                  ddd       |j	                  ddd|j!                          d
dd       |j                  d       t        j                  j#                  t$        j&                  ddd      t        j                  j#                  t$        j&                  ddd      t        j                  j#                  t$        j&                  ddd      d}|j)                  |      }|rCt        j                  j                  |      r$|j                  |d|j                         d       n|j	                  dddd
dd       |j                  d       |j                  ddd       |j	                  ddd d
d       |j                  ddd!       |rR|D ]K  }|j	                  ddd"d       |j	                  dd|d#   d       |j                  d       |j	                  ddd$d       |j	                  dd|d%    d&|d'    d(d       |j                  d       |j	                  ddd)d       |j	                  dd|d*    d&|d+    d(d       |j                  d       |j	                  ddd,d       |j	                  dd|d-   d       |j                  d       |j	                  ddd.d       |j	                  dd|d/   d       |j                  d0       N n|j	                  ddd1d
d       t        j                  j#                  t$        j&                  d2| j*                   d3|j,                   d4      }t        j.                  t        j                  j1                  |      d5       |j3                  |d6       |S )7NT   )automarginr   r   r  r  rj   zDados do Ambiente Cadastrador   r	   r   Z   g333333?)borderu#   Dados do ambiente não encontrados.u4   Gráfico de Carga Térmica Total do Ambiente (em TR)   )r   ywzTipo de Aparelho Selecionado: r  r  r   imagenszhi-wall-02.jpgzPDuto_Inverter.jpgzPCassete_Inverter.jpg)r   r   r   <   u%   (Imagem do aparelho não disponível)P   u,   Aparelhos Recomendados para o Sistema a Gásr  zModelo:modelozCapacidade de Resfriamento:capacidade_resfriamento_btuz BTU/h (r   z W)zCapacidade de Aquecimento:capacidade_aquecimento_btucapacidade_aquecimento_wu   Fonte de Alimentação:fonte_alimentacaou   Tubulação de Refrigerante:%tubulacao_refrigerante_liquido_gas_mm   z+Nenhum aparelho recomendado foi encontrado.arquivos_relatorios_relatorio_z.pdfrh   F)r   set_auto_page_breakadd_pager
  r  empty	font_sizeilocitemsstrr  rD   rE   rI   imageget_y
capitalizerF   r   rG   r@   rH   r4   ry   rz   output)r3   rT   dados_ambienter   rX   df_dados_ambienter%   pdfcol_width_titlecol_width_value
row_heightcolvalr   caminho_imagem_aparelhor   caminho_pdfs                    r   gerar_relatorio_pdfrB    s   
GX
&Cb1LLN LL3#HHS"4a;LL2r"$->-D-D]]S(
)..q1779HCHH_j#aH@HH_j#c(1HEFF: : 	r
b?AF LLNLL3#HHS"LaQRS	ww~~o&		/R399;#	>FF2J LLNLL3#HHS"6}7O7O7Q6RSUVXY[^_FF1I '',,x00(IGWXGGLL!2!2HiI]^X%6%6)MdeG
 &kk-8277>>2I#J		)R399;"	EbA1aMFF2J LL3#HHS"DaKLL2r".HHHRYqH1HHRXh/H:FF2JHHR:1HEHHR)F GHQYZuQvPwwz{  EFH  GFF2JHHR9!HDHHR)E FGxPXYsPtOuuxy  CDH  EFF2JHHR6qHAHHRX&9:1HEFF2JHHR;AHFHHRX&MNWXHYFF2J /" 	bGAN'',,x002GGL`L`Kaalmu  nD  nD  mE  EI  JJ  KKKK,t<JJ{C r   )messages)redirectr   )reversec                 *   | j                   dk(  r| j                  j                  d      }t        t        |      }t        t
        ||      }||_        |j                          t        j                  | d       t        t        d||d            S y )	NPOSTr%   r0   r2   z%Tipo de aparelho salvo com sucesso!!!r[   )rQ   rR   )r   )methodrG  r@   r   r   r   r%   rC   rC  successrD  rE  )rP   rQ   rR   r%   r3   rT   s         r   salvar_tipo_aparelhorJ  p  s    ~~((9#G
;$Xwm\ "/ 	"IJ  :R\o|C}~  r   c           
      >   t        t        |      }t        t        |      }t        t        |      }t        t        |      }t        t
        |      }t        t        |      }t        t        |      }	t        t        |      }
t        j                  j                  t        j                  d|j                   |j                   d      }t        j                  j!                  |      r5t#        j$                  |d      }|d   j'                         |d   |d	   d
}ndddd
}t)        ||j                  |||||	|
      }t        j                  j                  t        j                  dd      }t+        |       |j,                  }|d   dk7  rt/        |d   |      ng }t1        |||||||      }t3        |d      5 }t5        |j7                         d      }dt        j                  j9                  |       d|d<   d d d        |S # 1 sw Y   S xY w)Nr0   )rT   r5   r6   r7   r8   r:   u    Somatório Carga Sensível Totalu   Somatório Carga Latente Total) carga_termica_total_ambiente_maxsomatorio_carga_sensivel_totalsomatorio_carga_latente_totalzN/Amediazgrafico_carga_termica.pngrL  )r%   rbzapplication/pdf)content_typezattachment; filename=""zContent-Disposition)r   r   r   r`   ra   rb   rc   rd   re   rD   rE   rF   r   rG   rH   r4   rI   rJ   rK   rM   r   r   r%   r-   rB  openr_   readbasename)rP   rQ   ambiente_idr3   rT   r   r   r   r   r   r   r   rW   r8  r9  r   r%   rX   rA  fresponses                        r   gerar_relatorio_ambienterY    s=   J7G k:H v9Feh7E%lXFM#JBK(;GAG '',,x004UV]VjVjUk2lqy  rH  rH  qI  Ib  oc  dK	ww~~k"]];z:023R0S0W0W0Y.01S.T-/0P-Q
 16.3-2
 ,GX5K5KVUZ\givx  BI  J ggll8#4#4g?Z[OO4 **M xF  Gi  xj  ns  xs0@b1cers  y{ &gxZp  sD  Ta  bK 
k4	 A7HI,B277CSCST_C`Baab*c&' 
! O 
! Os   AHH)N)r   )7rD   pandasrJ   django.shortcutsr   r   django.confr   projeto.modelsr   ctermica.modelsr   	itertoolsr   r   r
   r   r   r   r   r-   django.httpr.   r[   matplotlib.pyplotpyplotr{   
matplotlibr\   fpdfr]   r^   r_   paredes.modelsr`   vidros.modelsra   portas.modelsrb   rc   telhados.modelsrd   termicos.modelsre   r   r   r   rB  django.contribrC  rD  django.urlsrE  rJ  rY  r   r   r   <module>rl     s    	  6   " $ 3 # & /`8  1Zf 
      6 $   " $ !  & $ # ) E
   	>^D   	 4Mf $ 8 @.0r   