
    
h5                        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 SK,J-r-  S SK.J/r/  S SK0J1r1  S r2S r3S SK JrJr  S SK4J5r5  S SKJr  S SK%J&r&  S SK'J(r(  S SKrS SK6r6\6Rn                  " \85      r9\(S 5       r:\(S 5       r;S SK JrJr  S S K4J<r<  \(S! 5       r=S" r>SSKJr  \(S# 5       r?S SK'J(r(  S S$K@JArA  S S%K JrJr  S SK%J&r&  SSKJr  \(S& 5       rBS S%K JrJr  S 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  \(S/ 5       rNS S)K Jr  SS0KOJPrP  \(S1 5       rQS S)K Jr  SS2KRJSrS  \(S3 5       rTS S)K Jr  SS4KUJVrV  \(S5 5       rUS S)K Jr  S SK'J(r(  SS6KWJXrX  \(S7 5       rYS S)K Jr  S SK'J(r(  SS8KZJ[r[  \(S9 5       r\S S)K Jr  S SK'J(r(  \(S: 5       r]S SK^r^S S;K4J_r_  S S<K`Jara  \aS= 5       rb\(S> 5       rcS S?KdJere  \(S@ 5       rfS SAKgJhrh  \(SB 5       riS SCKjJkrk  \(SD 5       rlS SEKmJnrn  \(SF 5       ro\(SG 5       rpg)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                 |    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          0/var/www/html/cagpublico_m/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 )=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                     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   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      sl   3_<<((W\\-@-@!!',,"5"5"A"ABLL4W\\5H5H5T5T4UVW $G
;$X+O89M9M8NkZbZpZpYqrs SSZSgSgRhhij"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      nU R                  R                  SS5      R                  5       nU(       d+  [        R                  " U S5        [        SUR                  S	9$ US
:X  a  U R                  R                  S5      nU R                  R                  S5      m[         ["        [$        S.R                  U/ 5      n['        U4S jU 5       S 5      nU(       d+  [        R                  " U S5        [        SUR                  S	9$ [(        R*                  R-                  UUUTUS   SS9  [        R.                  " U ST SU S35        [        SUR                  S	9$ [(        R*                  R-                  X2S9n[1        U R                  SS9n	[3        U R                  SS9n
[5        U R                  SS9n[7        U R                  SS9n[9        U R                  SS9nU	U
UUUS.R;                  5        HC  u  pUR=                  5       (       a  M  [        R                  " U SU SUR>                   35        ME     [A        U	R=                  5       U
R=                  5       UR=                  5       UR=                  5       UR=                  5       /5      (       Ga  U	RC                  S S!9nUUl"        URC                  5         U
RC                  S S!9nUUl"        URC                  5         URC                  S S!9nUUl"        URC                  5         URC                  S S!9nUUl"        URC                  5         URC                  S S!9nUUl"        [G        URH                  URJ                  5      Ul&        URC                  5         [        R.                  " U S"U S#35        [        S$UR                  UR                  S%9$ URO                  5         O-[1        SS9n	[3        SS9n
[5        SS9n[7        SS9n[9        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[Q        U S-U5      $ s  snf ).Nr    POSTfluxocalculor-   u#   O nome do ambiente é obrigatório.cadastrar_ambienter   	existentetipo_aparelhomodelo)hiwalltipodutocassete4viasc              3   <   >#    U  H  oS    T:X  d  M  Uv   M     g7f)r   N ).0mmodelo_nomes     r&   	<genexpr>%cadastrar_ambiente.<locals>.<genexpr>   s     T189SQQs   	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 ##***X h?w||G<
w||G<
"7<<	B(iH "#$
 %'JD ==??w*>tfBt{{m(TU   "!!!!#!!#
   !%%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 & &J 	ZL9:%(::,&GHZL9:%(>zl&KL	
 	
 &   " $$$& $(H '=xHH/s   *S1)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   rt   r   s        r&   deletar_ambienter   Y  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)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   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   )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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
[&        [(        -   [*        -   n[-        U SUUUUUUU	U[&        [(        [*        US.5      $ s  sn
f )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     sM   ||$$)<)<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 ')99<QQ'> $(.A   Ds   F)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&   r1  r1  ;  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   r2  r!  s    r&   r4  r4  G  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   r5  r   r!  s    r&   
dissipequir:  S  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>  b  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_recomendadarB  p  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_coeficientesrD    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/   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   rE  r   r   )r   rH  decoded_filereaderdataresponse_datar$   s          r&   importar_csvrW    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  Nr   )r   r  s     r&   r   $sistema_renovacao.<locals>.<genexpr>   s'      %
G	 m$Q'(:;Gs   r   r  )vazao_total_combinacaonumero_aparelhosatende_necessidader   F)r   r  r[  r\  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  r[  s           r&   sistema_renovacaora    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   rb  )r   r   s     r&   relatorio_completo_projeto_viewrd     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   re  r   r   rt   s      r&   gerar_pmoc_viewri  *  sP    ||$$)<)<gll11==>J7Gg''r(   )gerar_termo_instalacaoc                    U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        X5      $ rg  )	r   r   r   r   r   r   r   r   rj  rh  s      r&   gerar_termo_instalacao_viewrl  6  sP    ||$$)<)<gll11==>J7G!'33r(   )gerar_termo_de_referenciac                    U R                   R                  (       aO  U R                   R                  (       a4  [        R                  " U R                   R                  R
                  5        [        [        US9n[        X5      $ rg  )	r   r   r   r   r   r   r   r   rm  rh  s      r&   gerar_termo_manutencao_viewro  A  sP    ||$$)<)<gll11==>J7G$W66r(   c           	      `   U R                   R                  (       a4  [        R                  " U R                   R                  R                  5        [        [        US9nU R                  S:X  a  U R                  R                  S5      nU R                  R                  S5      nU R                  R                  S5      n[        R                  R                  UUUSSS9  [        R                  " U S	U S
U S35        [        SUR                   S9$ [#        U SU[$        [&        [(        S.5      $ )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_existenterq  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/  r1  
coefvidrosr2  r4  r:  r5  dissipiluminr;  r>  rA  r?  rB  rD  rQ  rE  django.views.decorators.csrfrF  rW  ra  )calculotermica.relatorio_completo_projetorb  rd  ctermica.pmocre  ri  %calculotermica.relatorio_termo_instalrj  rl  )calculotermica.relatorio_termo_manutencaorm  ro  rq  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(   