
    {g}                     v   S SK JrJrJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJr  S S
KJr  S SKJr  S SKJr  S SKJr  SSKJr  S SKrS SKr S SK!J"r"  S SK#r$S SK%J&r&  S SK'J(r(  S SK)J*r*  S SK)J+r+  S r,S r-S SK JrJr  S SK.J/r/  S SKJr  S SK%J&r&  S SK'J(r(  S SKrS SK0r0\0Rb                  " \25      r3\(S 5       r4\(S 5       r5S SK JrJr  S SK.J6r6  \(S 5       r7S r8SSKJr  \(S  5       r9S SK'J(r(  S S!K:J;r;  S S"K JrJr  S SK%J&r&  SSKJr  \(S# 5       r<S S"K JrJr  S SK'J(r(  SS$K=J>r>  \(S% 5       r?S S&K Jr  SS'K@JArA  \(S( 5       rBS S&K Jr  SS)KCJDrD  \(S* 5       rES S&K Jr  SS+KFJGrG  \(S, 5       rHS S&K Jr  SS-KIJJrJ  \(S. 5       rKS S&K Jr  SS/KLJMrM  \(S0 5       rNS S&K Jr  SS1KOJPrP  \(S2 5       rOS S&K Jr  S SK'J(r(  SS3KQJRrR  \(S4 5       rSS S&K Jr  S SK'J(r(  SS5KTJUrU  \(S6 5       rVS S&K Jr  S SK'J(r(  \(S7 5       rWS SKXrXS S8K.JYrY  S S9KZJ[r[  \[S: 5       r\\(S; 5       r]S S<K^J_r_  \(S= 5       r`S S>KaJbrb  \(S? 5       rcg)@    )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_renovacaoc                 |    SnUS-   nS[         R                  " SU-  US-   -  5      -  nX-  nSU-  SU-
  -  S-  nU$ )	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/cag/ctermica/views.pycalcular_umidade_absolutar$      s[    	Bf$A	!449Lu9TUV	VBA	gk2T9    c                 d   SU R                    S3n[        R                  " USS9  0 SU/_SUR                  /_SUR                  /_SUR
                  /_S	UR                  /_S
UR                  /_SUR                  /_SUR                  /_SUR                  /_SUR                  /_SUR                  /_SUR                  /_SUR                  /_SUR                  /_SUR                   /_SUR"                  /_SUR$                  /_0 SUR&                  /_SUR(                  /_SUR*                  /_SUR,                  /_SUR.                  /_SUR0                  /_SUR2                  /_SUR4                  /_SUR6                  /_SUR8                  /_S UR:                  /_S!UR<                  /_S"UR>                  /_S#UR@                  /_S$URB                  /_S%URD                  /_S&URF                  /_E0 S'URH                  /_S(URJ                  /_S)URL                  /_S*URN                  /_S+URP                  /_S,URR                  /_S-URT                  /_S.URV                  /_S/URX                  /_S0URZ                  /_S1UR\                  /_S2UR^                  /_S3UR`                  /_S4URb                  /_S5URd                  /_S6URf                  /_S7URh                  /_EURj                  /URl                  /URn                  /URp                  /URr                  /URt                  /URv                  /URx                  /URz                  /S8.	En[|        R~                  " U5      n	[        R                  R                  Xq S935      n
U	R                  U
S:S;9  [        S<U
 35        g )=N./var/www/html/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,   r-   r.   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   coeficiente_telhadorY   rZ   r[   r\   r]   r^   r_   r`   ra   r   rb   rc   rd   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{   CGDXDXCYYZ[L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                     U R                   R                  (       a  U R                   R                  (       aj  [        R                  " U R                   R                  R
                  5        [        R                  SU R                   R                  R
                   35        [        [        US9n[        [        X#S9n[        R                  SUR                   SUR                   35        SUR                   S3nUR                   S3n[        R                  R                  XV5      n[        R                  S	U 35        [        R                  R!                  U5      (       d9  [        R#                  S
U 35        [$        R"                  " U S5        ['        SXS9$ [        R(                  " U[        R*                  5      (       d9  [        R#                  SU 35        [$        R"                  " U S5        ['        SXS9$  [-        US5      n[/        USUS9n	SU	S'   SU S3U	S'   U	$ ! [0         aL  n
[        R#                  S[3        U
5       35        [$        R"                  " U S5        ['        SXS9s S n
A
$ S n
A
ff = f! [0         aL  n
[        R#                  S[3        U
5       35        [$        R"                  " U S5        ['        SXS9s S n
A
$ S n
A
ff = f)NzSchema configurado para: idr   rq   z!Tentando baixar CSV para projeto z, ambiente r'   r(   re   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   rg   r*   rh   rm   rn   existserrorr   r   accessR_OKopenr|   	Exceptionstr)requestr   r   rq   ambienterw   nome_arquivocaminho_completofileresponser!   s              r#   download_csvr      sk   3_<<((W\\-@-@!!',,"5"5"A"ABLL4W\\5H5H5T5T4UVW $G
;$X+O89M9M8NkZbZpZpYqrs HH\H\G]]^_"001<77<<C45E4FGH ww~~.//LL45E4FGHNN7$HI1jbb yy)27733LLEFVEWXYNN7$NO1jbb	c($/D#"%H
 (2H^$0F|nTU.VH*+O 	cLL4SVH=>NN7$NO1jbb	c
  _8QABw =>-*^^_sQ   FJ  A"J &H+ +
J5AI<6J7J <JJ 
KAKKKc           
         U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9nSnU R                  S:X  Ga  U R                  R                  SS5      R                  5       nU(       d+  [        R                  " U S5        [        SUR                  S9$ [         R"                  R%                  X2S9n['        U R                  S	S
9n[)        U R                  SS
9n[+        U R                  SS
9n[-        U R                  SS
9n[/        U R                  SS
9n	UUUUU	S.R1                  5        Hg  u  pUR3                  5       (       a  M  [5        SU
 S35        [5        UR6                  5        [        R                  " U SU
 SUR6                   35        Mi     [9        UR3                  5       UR3                  5       UR3                  5       UR3                  5       U	R3                  5       /5      (       Ga  UR;                  SS9nXLl        UR;                  5         UR;                  SS9nXMl        UR;                  5         UR;                  SS9nXNl        UR;                  5         UR;                  SS9nXOl        UR;                  5         U	R;                  SS9nUUl        [?        UR@                  URB                  5      Ul"        UR;                  5         [        RF                  " U S5        [        SUR                  UR                  S9$ URI                  5         O-['        S	S
9n[)        SS
9n[+        SS
9n[-        SS
9n[/        SS
9n	/ SQnU Vs0 s H#  nUUSU 3   USU 3   USU 3   USU 3   S._M%     nnUUUUUU	US.n[K        U S U5      $ s  snf )!Nr~    POSTr*   u#   O nome do ambiente é obrigatório.cadastrar_ambienter   )r*   rq   rr   )prefixrs   rt   ru   rv   )r   r   r   r   u   Térmicou   Formulário u    inválido:u   Erro no formulário z: F)commitz Ambiente cadastrado com sucesso!r   r   )nortesullesteoestearea_porta_coeficiente_porta_tipo_porta_diferencial_insolacao_)areacoeficientetipodiferencial)rq   parede_form
vidro_formcampos_portatelhado_formtermico_formr*   z ctermica/cadastrar_ambiente.html)&r   r   r   r   r   r   r   r   methodr   getstripr   r   r   r   r   objectscreater   r	   r
   r   r   itemsis_validrp   errorsallsaver   r$   rb   r   rc   successdeleter   )r   r   rq   r*   r   r   r   
porta_formr   r   nomeformrr   rs   rt   ru   rv   orientacoes
orientacaor   contextos                        r#   r   r      s   ||$$)<)<gll11==>J7GM~~(("=CCENN7$IJ0WZZHH##***X h?w||G<
w||G<
"7<<	B(iH "#$
 %'JD ==??TF+67dkk"w*>tfBt{{m(TU   "!!!!#!!#
   !%%U%3F&OKKMOO5O1E%NJJLOO5O1E%NJJL"''u'5G'LLN"''u'5G'G/H00++0G, LLNW&HI1gjjV^VaVabb OO !1g.
g.
")4(	: 5K & &J 	ZL9:%(::,&GHZL9:%(>zl&KL	
 	
 &   " $$$&H '=xHH's   !*O$)r   r   )HttpResponsec                 x   U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        [        X#S9nU R                  S:X  a  UR                  5         [        SUS9$ [        S5      $ )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   rq   r   s        r#   deletar_ambienter   4  s     ||$$)<)<gll11==>J7G kKH~~)jAA;<<r%   c                    SU R                    S3n [        R                  " [        R                  R                  US5      5      n[        R                  " [        R                  R                  US5      5      n[        R                  " [        R                  R                  US5      5      n[        R                  " [        R                  " US   5      US   US   US	   S
.5      nUUS   R                  R                  S:  US   R                  R                  S:*  -     nUS   R                  R                  S5      US'   UR                  S5      $ ! [         a     g f = f)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)rg   rk   read_csvrh   rm   rn   rl   to_datetimedthourstrftimeto_dictFileNotFoundError)rq   rw   df_temperaturasdf_umidades_relativasdf_umidades_absolutasdf_climaticos         r#   carregar_dados_climaticosr   H  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   EE 
E$#E$c                 l   U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        R                  R                  US9nU Vs0 s H*  oDR                  [        R                  R                  US9_M,     nnU Vs0 s H*  oDR                  [        R                  R                  US9_M,     nnU Vs0 s H*  oDR                  [        R                  R                  US9_M,     nnU Vs0 s H*  oDR                  [        R                  R                  US9_M,     nnU Vs0 s H*  oDR                  [         R                  R                  US9_M,     n	n[#        U5      n
/ nU GH  n [         R                  R%                  US9n['        UR(                  UR*                  UR,                  UR.                  5      nU(       a  UR%                  S5      (       ap  UR%                  S/ 5       Vs/ s HR  nUR%                  S5      UR%                  S5      (       a%  UR%                  S0 /5      S   R%                  S5      OS	S
.PMT     nnO/ nUR1                  UUU(       a  UR%                  S5      OS	S.5        GM     [5        U SUUUUUUU	U
S.5      $ s  snf s  snf s  snf s  snf s  snf s  snf ! [         R2                   a    UR1                  U/ S	S.5         GMz  f = f)uL   
Renderiza a lista de ambientes de um projeto com informações adicionais.
r~   )rq   r   melhor_combmodelovelocidadesvazao_maxima_m3hN)r   r   vazao_total_ar_exterior)r   	renovadorr   zctermica/lista_ambientes.html)rq   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   ra   r`   r]   rd   appendDoesNotExistr   )r   r   rq   	ambientesr   ambiente_paredesambiente_vidrosambiente_portasambiente_telhadosambiente_termicosr   r   r   renovador_resultadorrenovadoress                   r#   r   r   j  s	   
 ||$$)<)<gll11==>J7G  '''8I^gh^gRZV^^%:%:H%:%MM^gh\ef\ePX{{EMM$8$8($8$KK\eOf\ef\ePX{{EMM$8$8($8$KK\eOf`ij`iT\goo&<&<h&<&OO`ijfopfoZbm&;&;&B&BH&B&UUfop09 "&	$,,00(0CH"=""##''''	# #':'>'>}'M'M 144]BG
 H #$%%/  !uu]33 EE-"6r:>>?QR!% H  
 !%,,$( + (++,EF. 3 R ':%>#!!%%,	= 	 	e iffjp 
. )) 	%,,$+/.  	sD   1K'1K,1K1?1K661K;=BLAL 2L L)L32L3)get_messages)r   r   c                    U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        [        X#S9n[        R                  R                  US9n[        R                  R                  US9n[        R                  R                  US9R                  5       n[        R                  R                  US9n[         R                  R                  US9R                  5       n	[#        U 5       V
s/ s H  n
[%        U
5      PM     nn
['        U SUUUUUUU	US.5      $ s  sn
f )Nr~   r   r   z!ctermica/resultados_ambiente.html)rq   r   r   r   rt   r   r   	mensagens)r   r   r   r   r   r   r   r   r   r   r   r   r   r   firstr   r   r   r   r   )r   r   r   rq   r   r   r   rt   r   r   messager   s               r#   r   r     s-   ||$$)<)<gll11==>J7G kKHnn##X#6G]]!!8!4FMM  ( 399;E%%x%8H$$++X+>DDFH-9'-BC-B'W-BIC'>	A 	 	 Ds   E.)COEFICIENTES_PAREDESc                     U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        U SS[        05      $ )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                 "   U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        R                  " S0 5      n[        U SSU05      $ )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                 R   U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        R                  " S0 5      n[        R                  " S0 5      n[        U SUUS.5      $ )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                     U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        U SS[        05      $ )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                     U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        U SS[        05      $ )Nzctermica/coef_telhados.htmlcoef_telhados)r   r   r   r   r   r   r   r  r  s    r#   r  r    sV    ||$$)<)<gll11==>'8.;  r%   )COEFICIENTES_VIDROSc                     U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        U SS[        05      $ )Nzctermica/coef_vidros.htmlcoef_vidros)r   r   r   r   r   r   r   r  r  s    r#   r  r    r  r%   )DISSIPACAO_EQUIPAMENTOSc           	         U R                   R                  (       aO  [        U R                   S5      (       a4  [        R                  " U R                   R
                  R                  5        [        U SS[        R                  " S0 5      05      $ )Nr   zctermica/dissipequi.htmlequipamentosEquipamentos)
r   r   hasattrr   r   r   r   r   r  r   r  s    r#   
dissipequir  '  sg    ||$$x)H)Hgll11==>'5/33NBG8  r%   )DISSIPACAO_ILUMINACAOc           	      J    [        U SS[        R                  " S0 5      05      $ )uE   
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"  6  s/     '=+//C@  r%   )RECOMENDACAO_UMIDADEc           	      J    [        U SS[        R                  " S0 5      05      $ )u@   
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_recomendadar&  D  s/    
 '2'++,H"M5  r%   c                     U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        U S5      $ )Nzctermica/biblioteca.html)r   r   r   r   r   r   r   r  s    r#   biblioteca_coeficientesr(  T  sG    ||$$)<)<gll11==>'566r%   )JsonResponse)csrf_exemptc                 Z	   U R                   S:X  Ga_  SU R                  ;   GaN   U R                  S   nUR                  5       R                  S5      R	                  5       n[
        R                  " U5      n[        U5      nSUR                  SS5      UR                  SS5      UR                  SS5      UR                  S	S5      UR                  S
S5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      S.UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      UR                  SS5      S .0 S!UR                  S!S5      _S"UR                  S"S5      _S#UR                  S#S5      _S$UR                  S%S5      _S&UR                  S&S5      _S'UR                  S'S5      _S(UR                  S(S5      _S)UR                  S*S5      _S+UR                  S+S5      _S,UR                  S,S5      _S-UR                  S-S5      _S.UR                  S/S5      _S0UR                  S0S5      _S1UR                  S1S5      _S2UR                  S2S5      _S3UR                  S4S5      _UR                  S5S5      UR                  S6S5      UR                  S7S5      UR                  S8S5      S9.UR                  S:S5      UR                  S;S5      UR                  S<S5      UR                  S=S5      UR                  S>S5      UR                  S?S5      UR                  S@S5      UR                  SAS5      UR                  SBS5      UR                  SCS5      UR                  SDS5      SE.SF.n[        U5      $ [        SGSISH.5      $ ! [         a!  n[        SG[        U5      SH.5      s S nA$ S nAff = f)JNr   csv_filezutf-8Tr*   r   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   )r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   )r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rG   !diferencial_insolacao_porta_norterH   rI   rJ   rL   diferencial_insolacao_porta_sulrM   rN   rO   rQ   !diferencial_insolacao_porta_lesterR   rS   rT   rV   !diferencial_insolacao_porta_oesterW   rX   rY   rZ   )rW   rj   rY   rZ   r[   r\   r]   r^   r_   ra   r`   r   rd   rb   rc   )r[   r\   r]   r^   r_   ra   r`   r   rd   rb   rc   )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
DictReadernextr   r)  r   r   )r   r,  decoded_filereaderdataresponse_datar!   s          r#   importar_csvr<  _  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           	         U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        [        US9n [        R                  R                  US9n[        UR                  UR                  UR                  UR                   5      n[#        S UR                  S/ 5       5       5      nUR%                  U['        UR                  S/ 5      5      XvS   :  S.5        [+        U S
UUUS.5      $ ! [        R(                   a    / SSSSS	.n N/f = f)uM   
Exibe os resultados do sistema de renovação para um ambiente específico.
r~   r   c              3   8   #    U  H  nUS    S   S   v   M     g7f)r   r   r   N ).0r   s     r#   	<genexpr>$sistema_renovacao.<locals>.<genexpr>  s'      %
G	 m$Q'(:;Gs   r   r   )vazao_total_combinacaonumero_aparelhosatende_necessidader   F)r   r   rC  rD  rE  zctermica/sistema_renovacao.html)rq   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   ra   r`   r]   rd   sumupdatelenr   r   )r   r   r   rq   r   r   r   rC  s           r#   sistema_renovacaorI    sQ   
 ||$$)<)<gll11==>J7G k:H
 ((,,h,?9####	
 "% %
044]BG%
 "
 	""&< #$7$;$;M2$N O"8Pi<j"j$
 	 '<2?   %% 
'(&' !"'

s   B(E E E )gerar_relatorio_todos_ambientesc                     U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        X5      $ )N)r   r   r   r   r   r   rJ  )r   r   s     r#   relatorio_completo_projeto_viewrL    sD    ||$$)<)<gll11==>*7??r%   )
gerar_pmocc                    U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        X5      $ )Nr~   )	r   r   r   r   r   r   r   r   rM  )r   r   rq   s      r#   gerar_pmoc_viewrO    sP    ||$$)<)<gll11==>J7Gg''r%   )d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   rh   pandasrk   django.confr   numpyr   	django.dbr   django.contrib.auth.decoratorsr   centraltermica.viewsr   r   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  r  
coefvidrosr  r  r  r  dissipiluminr  r"  r%  r#  r&  r(  r5  r)  django.views.decorators.csrfr*  r<  rI  )calculotermica.relatorio_completo_projetorJ  rL  ctermica.pmocrM  rO  r?  r%   r#   <module>rs     s}   @ @ # " $ " " & , !   # )  	       9 8 <
U>t 9 $ #   9 	 			8	$4_ 4_n eI eI^ 9 $= =&@ E ER : 0 6    6 7 9 -  $ )  $ -  $ +  $ /  $ +  $ /  $ 9 /  $ 9 )  $ 97 7  $ 4[i [i~ - -d V@ @ %( (r%   