
    
h5                        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 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Z d dl!m"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- d dl.m/Z/ d dl0m1Z1 d Z2d Z3d dl mZmZ d dl4m5Z5 d dlmZ d dl%m&Z& d dl'm(Z( d dlZd dl6Z6 e6jn                  e8      Z9e(d        Z:e(d        Z;d dl mZmZ d d l4m<Z< e(d!        Z=d" Z>ddlmZ e(d#        Z?d dl'm(Z( d d$l@mAZA d d%l mZmZ d dl%m&Z& ddlmZ e(d&        ZBd d%l mZmZ d dl'm(Z( dd'lCmDZD e(d(        ZEd d)l mZ dd*lFmGZG e(d+        ZHd d)l mZ dd,lImJZJ e(d-        ZKd d)l mZ dd.lLmMZM e(d/        ZNd d)l mZ dd0lOmPZP e(d1        ZQd d)l mZ dd2lRmSZS e(d3        ZTd d)l mZ dd4lUmVZV e(d5        ZUd d)l mZ d dl'm(Z( dd6lWmXZX e(d7        ZYd d)l mZ d dl'm(Z( dd8lZm[Z[ e(d9        Z\d d)l mZ d dl'm(Z( e(d:        Z]d dl^Z^d d;l4m_Z_ d d<l`maZa ead=        Zbe(d>        Zcd d?ldmeZe e(d@        Zfd dAlgmhZh e(dB        Zid dCljmkZk e(dD        Zld dElmmnZn e(dF        Zoe(dG        Zpy)H    )renderredirectget_object_or_404)messages)Projeto)
ParedeForm)	VidroForm)	PortaForm)TelhadoForm)DadosTermicosForm)Parede)Vidro)Porta)Telhado)DadosTermicos   )AmbienteN)settings)
connection)login_required)gerar_relatorio_projeto)escolher_aparelho_renovacao)HIWALL_MODELOS)TIPODUTO_MODELOS)CASSETE_4VIAS_MODELOSc                 |    d}|dz   }dt        j                  d|z  |dz   z        z  }| |z  }d|z  d|z
  z  dz  }|S )	Ng     |@gfffffq@g r@gQ1@g     pn@gCl?g     @i  )npexp)umidade_relativatemperatura_internaRvTeseumidade_absolutas          ./var/www/html/cagpublico/cag/ctermica/views.pycalcular_umidade_absolutar'      s]    	Bf$A	!449Lu9TUV	VB2A	gk2T9    c                 n   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|j(                  gd|j*                  gd|j,                  g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i d'|jH                  gd(|jJ                  gd)|jL                  gd*|jN                  gd+|jP                  gd,|jR                  gd-|jT                  gd.|jV                  gd/|jX                  gd0|jZ                  gd1|j\                  gd2|j^                  gd3|j`                  gd4|jb                  gd5|jd                  gd6|jf                  gd7|jh                  g|jj                  g|jl                  g|jn                  g|jp                  g|jr                  g|jt                  g|jv                  g|jx                  g|jz                  gd8	}t}        j~                  |      }	t        j                  j                  || d9      }
|	j                  |
d:;       t        d<|
        y )=N9/var/www/html/cagpublico/cag/arquivos_climaticos/projeto_/T)exist_oknome_ambiente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_nortecoeficiente_porta_nortetipo_porta_nortematerial_porta_nortediferencial_insolacao_nortearea_porta_sulcoeficiente_porta_sultipo_porta_sulmaterial_porta_suldiferencial_insolacao_sularea_porta_lestecoeficiente_porta_lestetipo_porta_lestematerial_porta_lestediferencial_insolacao_lestearea_porta_oestecoeficiente_porta_oestetipo_porta_oestematerial_porta_oestediferencial_insolacao_oestetipo_telhadocoeficiente_transmissao_telhadoarea_telhadodiferencial_insolacao_telhadocalor_sensivel_pessoacalor_latente_pessoa)	numero_pessoastaxa_iluminacaodissipacao_equipamentos
pe_direito	area_pisor    umidade_relativa_internaumidade_absoluta_internataxa_renovacao
_dados.csvF)indexz"Arquivo CSV salvo com sucesso em: )Dnome_projetoosmakedirsr.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   coeficiente_telhador\   r]   r^   r_   r`   ra   rb   rc   rd   r    re   rf   rg   pd	DataFramepathjointo_csvprint)projetor-   paredevidroportatelhadotermicocaminho_basedadosdfcaminho_csvs              r&   salvar_dados_em_csvr~   (   s}   NwOcOcNddefLKKt,K-K 	f667	K
 	#V%D%D$EK 	f667K 	F223K 	!6#@#@"AK 	F223K 	f667K 	#V%D%D$EK 	f667K 	f667K 	#V%D%D$EK 	f667K$ 	U334%K& 	"E$A$A#B'K( 	U334)K* 	5//0+K, 	 %"="=!>-K. 	5//0/K0 	U3341K2 	"E$A$A#B3K4 	U3345K6 	U3347K8 	"E$A$A#B9K: 	U334;K@ 	U334AKB 	"E$A$A#BCKD 	U334EKF 	!;!; <GKH 	&(I(I'JIKL 	5//0MKN 	 %"="=!>OKP 	5//0QKR 	u778SKT 	$e&E&E%FUKX 	U334YKZ 	"E$A$A#B[K\ 	U334]K^ 	!;!; <_K` 	&(I(I'JaKd 	U334eKf 	"E$A$A#BgKh 	U334iKj 	!;!; <kKl 	&(I(I'JmKt 	--.uKv 	*G,G,G+HwKx 	--.yKz 	('*O*O)P{K@ 	 '"?"?!@AKB 	!=!= >CKD #112#334$+$C$C#D))*''( ' ; ;<%,%E%E$F%,%E%E$F"112UKE\ 
e	B'',,|j-IJKIIkI'	.{m
<=r(   )r   r   )FileResponsec                    	 | j                   j                  r| j                   j                  rit        j                  | j                   j                  j
                         t        j                  d| j                   j                  j
                          t        t        |      }t        t        ||      }t        j                  d|j                   d|j                          d|j                   d}|j                   d}t        j                  j                  ||      }t        j                  d	|        t        j                  j!                  |      s<t        j#                  d
|        t%        j"                  | d       t'        d||      S t        j(                  |t        j*                        s<t        j#                  d|        t%        j"                  | d       t'        d||      S 	 t-        |d      }t/        |d|      }	d|	d<   d| d|	d<   |	S # t0        $ rO}
t        j#                  dt3        |
              t%        j"                  | d       t'        d||      cY d }
~
S d }
~
ww xY w# t0        $ rO}
t        j#                  dt3        |
              t%        j"                  | d       t'        d||      cY d }
~
S d }
~
ww xY w)NzSchema configurado para: idr   rt   z!Tentando baixar CSV para projeto z, ambiente r*   r+   rh   zCaminho completo do arquivo: u   Arquivo não encontrado: u"   O arquivo CSV não foi encontrado.resultados_ambiente
projeto_idambiente_idu*   Sem permissão de leitura para o arquivo: u(   Erro de permissão ao acessar o arquivo.rbT)as_attachmentfilenameztext/csvzContent-Typezattachment; filename=""zContent-DispositionzErro ao abrir o arquivo: z(Erro ao processar o download do arquivo.z!Erro inesperado no download_csv: zOcorreu um erro inesperado.)useris_authenticatedtenantr   
set_schemaschema_nameloggerdebugr   r   r   rj   r-   rk   rp   rq   existserrorr   r   accessR_OKopenr   	Exceptionstr)requestr   r   rt   ambienterz   nome_arquivocaminho_completofileresponser$   s              r&   download_csvr      sv   3_<<((W\\-@-@!!',,"5"5"A"ABLL4W\\5H5H5T5T4UVW $G
;$X+wO89M9M8NkZbZpZpYqrs SSZSgSgRhhij"001<77<<lC45E4FGH ww~~./LL45E4FGHNN7$HI1jVabb yy)2773LLEFVEWXYNN7$NO1jVabb	c($/D#"%H
 (2H^$0F|nTU.VH*+O 	cLL4SVH=>NN7$NO1jVabb	c
  _8QABw =>-*R]^^_sQ   FJ AJ <)H& &	I>/AI93I>4J 9I>>J 	K
AKKKc                 
   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }d}| j                  dk(  r| j                  j                  dd      }| j                  j                  dd      j                         }|s-t        j                  | d       t        d|j                  	      S |d
k(  r| j                  j                  d      }| j                  j                  d      t         t"        t$        dj                  |g       }t'        fd|D        d       }|s-t        j                  | d       t        d|j                  	      S t(        j*                  j-                  ||||d   d       t        j.                  | d d| d       t        d|j                  	      S t(        j*                  j-                  ||      }t1        | j                  d      }	t3        | j                  d      }
t5        | j                  d      }t7        | j                  d      }t9        | j                  d      }|	|
|||dj;                         D ]<  \  }}|j=                         rt        j                  | d| d|j>                          > tA        |	j=                         |
j=                         |j=                         |j=                         |j=                         g      r.|	jC                  d !      }||_"        |jC                          |
jC                  d !      }||_"        |jC                          |jC                  d !      }||_"        |jC                          |jC                  d !      }||_"        |jC                          |jC                  d !      }||_"        tG        |jH                  |jJ                        |_&        |jC                          t        j.                  | d"| d#       t        d$|j                  |j                  %      S |jO                          n<t1        d      }	t3        d      }
t5        d      }t7        d      }t9        d      }g d&}|D ci c]"  }||d'|    |d(|    |d)|    |d*|    d+$ }}||	|
||||t         t"        t$        d,
}tQ        | d-|      S c c}w ).Nr    POSTfluxocalculor-   u#   O nome do ambiente é obrigatório.cadastrar_ambienter   	existentetipo_aparelhomodelo)hiwalltipodutocassete4viasc              3   4   K   | ]  }|d    k(  s|  yw)r   N ).0mmodelo_nomes     r&   	<genexpr>z%cadastrar_ambiente.<locals>.<genexpr>   s     T189SQTs   u)   O modelo selecionado não foi encontrado.capacidade_resfriamento_wT)rt   r-   r   modelo_aparelhocarga_termica_total_ambienteequipamento_existenteEquipamento 'z' cadastrado no ambiente ''.)r-   rt   ru   )prefixrv   rw   rx   ry   )r   r   r   r   u   Térmicou   Erro no formulário z: F)commitz
Ambiente 'u/   ' cadastrado com sucesso com cálculo térmico.r   r   )nortesullesteoestearea_porta_coeficiente_porta_tipo_porta_diferencial_insolacao_)areacoeficientetipodiferencial)
rt   parede_form
vidro_formcampos_portatelhado_formtermico_formr-   r   r   cassetez ctermica/cadastrar_ambiente.html))r   r   r   r   r   r   r   r   methodr   getstripr   r   r   r   r   r   r   nextr   objectscreatesuccessr   r	   r
   r   r   itemsis_validerrorsallsaver   r'   re   r    rf   deleter   )r   r   rt   r-   r   r   lista_modelosaparelhor   r   r   
porta_formr   r   nomeformru   rv   rw   rx   ry   orientacoes
orientacaor   contextor   s                            @r&   r   r      s   ||$$)<)<gll11==>J7GM~~  )4(("=CCENN7$IJ0WZZHHK<<##O4D!,,**84K ), 5 c$m	  TTVZ[Hw(ST 4LL##+" +-56Q-R&* $  Wk]B\]j\kkm&no0WZZHH ##**PW*X h?w||G<
w||G<
"7<<	B(iH "#$
 %'	VJD$ ==?w*>tfBt{{m(TU	V   "!!!!#!!#
  !%%U%3F&FOKKMOO5O1E%ENJJLOO5O1E%ENJJL"''u'5G'GLLN"''u'5G'G/H00++0G, LLNW
=/Ap&qr1gjjV^VaVabbOO !1g.
g.
")4(	:4K &  	ZL9:%(::,&GHZL9:%(>zl&KL	
 	
L  " $$$& $(H '=xHH/s   9'T)r   r   )HttpResponsec                 t   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        t        ||      }| j                  dk(  r|j                          t        d|      S t        d      S )Nr   r   r   lista_ambientesr   u!   Confirme a exclusão do ambiente.)r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   rt   r   s        r&   deletar_ambienter   Y  s     ||$$)<)<gll11==>J7G k7KH~~)jAA;<<r(   c                    d| j                    d}	 t        j                  t        j                  j                  |d            }t        j                  t        j                  j                  |d            }t        j                  t        j                  j                  |d            }t        j                  t        j                  |d         |d   |d   |d	   d
      }||d   j                  j                  dk\  |d   j                  j                  dk  z     }|d   j                  j                  d      |d<   |j                  d      S # t        $ r Y y w xY w)Nzarquivos_climaticos/projeto_r+   ztemperaturas.csvzumidades_relativas.csvzumidades_absolutas.csvtimetemperature_2mrelative_humidity_2mr%   )r   temperaturar   r%         z%H:%Mhorarecords)rj   rn   read_csvrk   rp   rq   ro   to_datetimedthourstrftimeto_dictFileNotFoundError)rt   rz   df_temperaturasdf_umidades_relativasdf_umidades_absolutasdf_climaticos         r&   carregar_dados_climaticosr   m  s?   1'2F2F1GqIL++bggll<AS&TU "BGGLLG_,` a "BGGLLG_,` a ||NN?6#:;*+;< 56L M 56H I	%
  $&!$$))Q.<3G3J3J3O3OSU3UV

  ,F366??HV##I.. s   D?E 	EEc                 :   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        j                  j                  |      }|D ci c]-  }|j                  t        j                  j                  |      / }}|D ci c]-  }|j                  t        j                  j                  |      / }}|D ci c]-  }|j                  t        j                  j                  |      / }}|D ci c]-  }|j                  t        j                  j                  |      / }}|D ci c]-  }|j                  t         j                  j                  |      / }	}t#        |      }
g }|D ]  }	 t         j                  j%                  |      }t'        |j(                  |j*                  |j,                  |j.                        }|ry|j%                  d      rh|j%                  dg       D cg c]L  }|j%                  d      |j%                  d      r%|j%                  di g      d   j%                  d      nd	d
N }}ng }|j1                  |||r|j%                  d      nd	d        t5        | d|||||||	|
d      S c c}w c c}w c c}w c c}w c c}w c c}w # t         j2                  $ r |j1                  |g d	d       Y aw xY w)uT   
    Renderiza a lista de ambientes de um projeto com informações adicionais.
    r   )rt   r   melhor_combr   velocidadesvazao_maxima_m3hN)r   r  vazao_total_ar_exterior)r   	renovadorr  zctermica/lista_ambientes.html)rt   ambientes_com_renovadoresparedesvidrosportastelhadostermicosdados_climaticos)r   r   r   r   r   r   r   r   r   r   filterr   r   r   r   r   r   r   r   r   rd   rc   r`   rg   appendDoesNotExistr   )r   r   rt   	ambientesr   ambiente_paredesambiente_vidrosambiente_portasambiente_telhadosambiente_termicosr
  r  r	  renovador_resultadorrenovadoress                   r&   r   r     s   
 ||$$)<)<gll11==>J7G  '''8I^ghRZV^^%:%:H%:%MMhh\efPXx{{EMM$8$8($8$KKfOf\efPXx{{EMM$8$8($8$KKfOf`ijT\goo&<&<h&<&OOjjfopZbm&;&;&B&BH&B&UUpp09 " '&	$,,00(0CH"=""##''''	# #':'>'>}'M 144]BG
  #$%%/  !uu]3 EE-"6r:>>?QR!%
 
 !%,,$( + (++,EF. 3'R ':%>#!!%%,	= 	 	e iffjp 
. )) 	%,,$+/. 	sD   2K2K2K=2K52K$<A=K.9AK)
-K.)K..(LL)get_messages)r   r   c                 >   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        t        ||      }t        j                  j                  |      }t        j                  j                  |      }t        j                  j                  |      j                         }t        j                  j                  |      }t         j                  j                  |      j                         }	t#        |       D 
cg c]  }
t%        |
       }}
t&        t(        z   t*        z   }t-        | d|||||||	|t&        t(        t*        |d      S c c}
w )Nr   r   r   z!ctermica/resultados_ambiente.html)rt   r   r  r  rw   r  r	  	mensagensr   r   r   modelos_completos)r   r   r   r   r   r   r   r   r   r   r   r  r   r   firstr   r   r  r   r   r   r   r   )r   r   r   rt   r   r  r  rw   r  r	  messager  r  s                r&   r   r     sL   ||$$)<)<gll11==>J7G k7KHnn##X#6G]]!!8!4FMM  ( 399;E%%x%8H$$++X+>DDFH-9'-BC'WCIC ')99<QQ'> $(.A   Ds   F)COEFICIENTES_PAREDESc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        | ddt        i      S )Nzctermica/coef_paredes.htmlcoef_paredes)r   r   r   r   r   r   r   r  r   s    r&   r  r    sV    ||$$)<)<gll11==>'7,:  r(   )r   )COEFICIENTE_ARc                 
   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        j                  di       }t        | dd|i      S )NzAmbientes Climatizadoszctermica/coef_renovacao.htmlambientes_climatizados)	r   r   r   r   r   r   r!  r   r   )r   r#  s     r&   coef_renovacao_arr$    sj    ||$$)<)<gll11==>+//0H"M'9 "8<  r(   )COEFICIENTES_PESSOASc                 8   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        j                  di       }t        j                  di       }t        | d||d      S )Nu   Calor Sensível por Pessoa (W)zCalor Latente por Pessoa (W)zctermica/coef_pessoas.html)calor_sensivelcalor_latente)	r   r   r   r   r   r   r%  r   r   )r   r'  r(  s      r&   coef_pessoasr)     s}    ||$$)<)<gll11==>)--.NPRSN(,,-KRPM'7(&:  r(   )COEFICIENTES_PORTASc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        | ddt        i      S )Nzctermica/coef_portas.htmlcoef_portas)r   r   r   r   r   r   r   r*  r   s    r&   r,  r,  /  V    ||$$)<)<gll11==>'6*9  r(   )COEFICIENTES_TELHADOSc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        | ddt        i      S )Nzctermica/coef_telhados.htmlcoef_telhados)r   r   r   r   r   r   r   r.  r   s    r&   r0  r0  ;  sV    ||$$)<)<gll11==>'8.;  r(   )COEFICIENTES_VIDROSc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        | ddt        i      S )Nzctermica/coef_vidros.htmlcoef_vidros)r   r   r   r   r   r   r   r1  r   s    r&   r3  r3  G  r-  r(   )DISSIPACAO_EQUIPAMENTOSc           	         | j                   j                  rIt        | j                   d      r3t        j                  | j                   j
                  j                         t        | ddt        j                  di       i      S )Nr   zctermica/dissipequi.htmlequipamentosEquipamentos)
r   r   hasattrr   r   r   r   r   r4  r   r   s    r&   
dissipequir9  S  sd    ||$$x)Hgll11==>'5/33NBG8  r(   )DISSIPACAO_ILUMINACAOc           	      H    t        | ddt        j                  di       i      S )uM   
    View para exibir os dados de dissipação térmica de iluminação.
    z ctermica/dissipa_iluminacao.html
iluminacaou   Iluminação)r   r:  r   r   s    r&   dissipa_iluminacaor=  b  s/     '=+//C@  r(   )RECOMENDACAO_UMIDADEc           	      H    t        | ddt        j                  di       i      S )uH   
    View para exibir as recomendações de umidade relativa do ar.
    zctermica/umidade.htmlumidadezFaixas de Umidade Relativa)r   r>  r   r   s    r&   umidade_recomendadarA  p  s/    
 '2'++,H"M5  r(   c                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        | d      S )Nzctermica/biblioteca.html)r   r   r   r   r   r   r   r   s    r&   biblioteca_coeficientesrC    sG    ||$$)<)<gll11==>'566r(   )JsonResponse)csrf_exemptc                 P	   | j                   dk(  r\d| j                  v rM	 | j                  d   }|j                         j                  d      j	                         }t        j                  |      }t        |      }d|j                  dd      |j                  dd      |j                  dd      |j                  d	d      |j                  d
d      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      d|j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      |j                  dd      d i d!|j                  d!d      d"|j                  d"d      d#|j                  d#d      d$|j                  d%d      d&|j                  d&d      d'|j                  d'd      d(|j                  d(d      d)|j                  d*d      d+|j                  d+d      d,|j                  d,d      d-|j                  d-d      d.|j                  d/d      d0|j                  d0d      d1|j                  d1d      d2|j                  d2d      d3|j                  d4d      |j                  d5d      |j                  d6d      |j                  d7d      |j                  d8d      d9|j                  d:d      |j                  d;d      |j                  d<d      |j                  d=d      |j                  d>d      |j                  d?d      |j                  d@d      |j                  dAd      |j                  dBd      |j                  dCd      |j                  dDd      dEdF}t        |      S t        dGdIdH      S # t        $ r!}t        dGt        |      dH      cY d }~S d }~ww xY w)JNr   csv_filezutf-8Tr-   r   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   )r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   )r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rJ   !diferencial_insolacao_porta_norterK   rL   rM   rO   diferencial_insolacao_porta_sulrP   rQ   rR   rT   !diferencial_insolacao_porta_lesterU   rV   rW   rY   !diferencial_insolacao_porta_oesterZ   r[   r\   r]   )rZ   rm   r\   r]   r^   r_   r`   ra   rb   rd   rc   r    rg   re   rf   )r^   r_   r`   ra   rb   rd   rc   r    rg   re   rf   )r   r-   r   r   r   r   r   F)r   r   u0   Nenhum arquivo CSV enviado ou formato inválido.)r   FILESreaddecode
splitlinescsv
DictReaderr   r   rD  r   r   )r   rG  decoded_filereaderdataresponse_datar$   s          r&   importar_csvrV    s   ~~J'--$?W	E}}Z0H#==?11':EEGL^^L1F<D  !%/2!> *.2Er)J049SUW0X)-2Er)J'+xx0A2'F.2hh7OQS.T'+xx0A2'F)-2Er)J049SUW0X)-2Er)J)-2Er)J049SUW0X)-2Er)J   )-1CR(H/3xx8QSU/V(,1CR(H&*hh/?&D-1XX6Mr-R&*hh/?&D(,1CR(H/3xx8QSU/V(,1CR(H(,1CR(H/3xx8QSU/V(,1CR(H&1CR(H-txx8QSU/V '1CR(H 2488<_ac3d	 %dhh/?&D ,TXX6Mr-R %dhh/?&D 0:[]_1` '1CR(H .txx8QSU/V '1CR(H 2488<_ac3d  '1CR(H!" .txx8QSU/V#$ '1CR(H%& 2488<_ac3d'. %)HH^R$@+/884UWY+Z$(HH^R$@59XX>]_a5b	! .2XX6Mr-R,0HH5KR,P&*hh/?&D'+xx0A2'F/3xx8QSU/V!%+r!:"&((<"<+/884I2+N&*hh/?&D049SUW0X049SUW0X!LM\  ..
 E4fghh  	EECF CDD	Es   QQ; ;	R%R R% R%c           	         | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        t        |      }	 t        j                  j                  |      }t        |j                  |j                  |j                  |j                         }t#        d |j                  dg       D              }|j%                  |t'        |j                  dg             ||d   k\  d       t+        | d
|||d      S # t        j(                  $ r g ddddd	}Y .w xY w)uU   
    Exibe os resultados do sistema de renovação para um ambiente específico.
    r   r   c              3   2   K   | ]  }|d    d   d     yw)r   r   r  Nr   )r   r  s     r&   r   z$sistema_renovacao.<locals>.<genexpr>   s(      %
 m$Q'(:;%
s   r   r  )vazao_total_combinacaonumero_aparelhosatende_necessidader   F)r   r  rY  rZ  r[  zctermica/sistema_renovacao.html)rt   r   r  )r   r   r   r   r   r   r   r   r   r   r   r   r   rd   rc   r`   rg   sumupdatelenr  r   )r   r   r   rt   r   r	  r  rY  s           r&   sistema_renovacaor_    sT   
 ||$$)<)<gll11==>J7G k:H
 ((,,h,?9####	
 "% %
044]BG%
 "
 	""&< #$7$;$;M2$N O"8<OPi<j"j$
 	 '<2?   %% 
'(&' !"'

s   B,E   EE)gerar_relatorio_todos_ambientesc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        | |      S )N)r   r   r   r   r   r   r`  )r   r   s     r&   relatorio_completo_projeto_viewrb     sF    ||$$)<)<gll11==>*7J??r(   )
gerar_pmocc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        | |      S Nr   )	r   r   r   r   r   r   r   r   rc  r   r   rt   s      r&   gerar_pmoc_viewrg  *  sR    ||$$)<)<gll11==>J7Ggw''r(   )gerar_termo_instalacaoc                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        | |      S re  )	r   r   r   r   r   r   r   r   rh  rf  s      r&   gerar_termo_instalacao_viewrj  6  sR    ||$$)<)<gll11==>J7G!'733r(   )gerar_termo_de_referenciac                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        | |      S re  )	r   r   r   r   r   r   r   r   rk  rf  s      r&   gerar_termo_manutencao_viewrm  A  sR    ||$$)<)<gll11==>J7G$Wg66r(   c           	      b   | j                   j                  r3t        j                  | j                   j                  j                         t        t        |      }| j                  dk(  r| j                  j                  d      }| j                  j                  d      }| j                  j                  d      }t        j                  j                  |||dd       t        j                  | d	| d
| d       t        d|j                         S t#        | d|t$        t&        t(        d      S )Nr   r   r-   r   r   r   T)rt   r-   r   r   r   r   z)' cadastrado como existente no ambiente 'r   r   r   z!ctermica/cadastrar_existente.html)rt   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   rt   r-   r   r   s         r&   cadastrar_equipamento_existentero  L  s   ||gll11==>J7G~~((9||0!!(+')*"& 	  	
 	M&9bcpbqqs"tu,DD'> $(	A  r(   )qdjango.shortcutsr   r   r   django.contribr   projeto.modelsr   paredes.formsr   vidros.formsr	   portas.formsr
   telhados.formsr   termicos.formsr   paredes.modelsr   vidros.modelsr   portas.modelsr   telhados.modelsr   termicos.modelsr   modelsr   rk   pandasrn   django.confr   numpyr   	django.dbr   django.contrib.auth.decoratorsr   centraltermica.viewsr   r   centraltermica.hiwallr   centraltermica.tipodutor   centraltermica.cassete4viasr   r'   r~   django.httpr   logging	getLogger__name__r   r   r   r   r   r   r   django.contrib.messagesr  r   coefparedesr  r  coefrenovacaor!  r$  coefpessoasr%  r)  
coefportasr*  r,  coeftelhadosr.  r0  
coefvidrosr1  r3  r9  r4  dissipiluminr:  r=  r@  r>  rA  rC  rP  rD  django.views.decorators.csrfrE  rV  r_  )calculotermica.relatorio_completo_projetor`  rb  ctermica.pmocrc  rg  %calculotermica.relatorio_termo_instalrh  rj  )calculotermica.relatorio_termo_manutencaork  rm  ro  r   r(   r&   <module>r     s   @ @ # " $ " " & , !   # )  	       9 8 < 0 4 =
U>t 9 $ #   9 	 			8	$4_ 4_t AI AI\ 9 $= =&@ E ER : 0 6    D 7 9 -  $ )  $ -  $ +  $ /  $ +  $ /  $ 9 /  $ 9 )  $ 97 7  $ 4[i [i~ - -d V@ @ %( ( I4 4 P7 7  r(   