
    hM                        d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lmZ d
dlmZ d
dlmZmZ d
dlmZ d
dlmZmZmZ d
dlmZm Z m!Z! d
dl"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z( d
dlm)Z) d dl*Z+d
dl"m,Z, d dl-Z.d dl/m0Z1 d dl2m3Z4 d dl5m6Z6 d dl7Z7d dl8Z8d dl9m:Z: d dl;m<Z< d dl=m>Z> e<d        Z?d
dl@mAZA e<d        ZBd
dlCmDZD e<d        ZEd dlFmGZG d dl mZ d dlmZ d d	lmZ d dl;m<Z< d
dlHmGZG e<d        ZIy)     )renderget_object_or_404)Projeto)Ambiente)DadosTermicos)Parede)Vidro)Porta)Telhado)
connection   )CalculoTermica)calcular_carga_termica_paredecalcular_carga_insolacao_parede)calcular_cargas_vidros)calcular_carga_insolacao_portacalcular_carga_termica_portacalcular_cargas_portas)calcular_cargas_telhados calcular_carga_insolacao_telhadocalcular_carga_termica_telhado)!calcular_cargas_termicas_ambiente#calcular_calor_sensivel_ar_exterior"calcular_calor_latente_ar_exteriorcalcular_vazao_ar_infiltracaocalcular_vazao_ar_renovacao calcular_vazao_total_ar_exterior)carregar_temperaturas_projeto2N)calcular_densidade_ar)	mark_safe)settings)login_required)messagesc                    | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        t        ||      }|j                  r(t        j                  | d       t        | d||ddd      S t        t        |      }t        j                  j!                  |      }t"        j                  j!                  |      }t$        j                  j!                  |      }t&        j                  j!                  |      }		 t)        |      \  }
}}t)        |      \  }
}}|j0                  }|j2                  |j2                  nd
}t5        |      }t7        |j8                  |j:                        }t=        |j>                  |j@                        }tC        |j8                  |j:                  |j>                  |j@                        }tE        ||
||      }tG        ||||jH                  |      }i }i }tK        |||      \  }}i }i }tM        ||	|      \  }}g d}g d}tO        jP                  tS        |            } tO        jP                  tS        |            }!|D ]_  }"|D ]X  }#tU        ||"||#      }$tW        |"|#      }%| tO        jX                  |$      z  } |!tO        jX                  |%      z  }!|$||# <   |%||# <   Z a | |!z   }&| |!|&d}'tO        jP                  tS        |            }(tO        jP                  tS        |            })|j[                         D ]  \  }#}$|(tO        jX                  |$      z  }( |j[                         D ]  \  }#}%|)tO        jX                  |%      z  }) |(|)z   }*|(|)|*d}+tO        jP                  tS        |            },tO        jP                  tS        |            }-i }i }|D ]_  }|D ]X  }#t]        ||||#      }.t_        ||#      }/|.||# <   |/||# <   |,tO        jX                  |.      z  },|-tO        jX                  |/      z  }-Z a |,|-z   }0|,|-|0d}1tO        jP                  tS        |            }2tO        jP                  tS        |            }3i }i }|	D ]p  }4ta        ||4|      }5tc        ||4|      }6|5|d|4jd                   <   |6|d|4jd                   <   |2tO        jX                  |5      z  }2|3tO        jX                  |6      z  }3r |2|3z   }7|2|3|7d}8tg        |      }9tO        jP                  tS        |            }:tO        jP                  tS        |            };tO        jP                  tS        |            }<tO        jP                  tS        |            }=tO        jP                  tS        |            }>tO        jP                  tS        |            }?d|9v r|:tO        jX                  |9d         z  }:d|9v r|;tO        jX                  |9d         z  };d|9v r|<tO        jX                  |9d         z  }<d|9v r|=tO        jX                  |9d         z  }=d|9v r|>tO        jX                  |9d         z  }>d|9v r|?tO        jX                  |9d         z  }?|:|;|<|=|>|?d}@|&|*z   |0z   |7z   |z   |<z   |=z   |>z   }A|;|z   }B|B|Az   }Cti        |C      }Dtj        jl                  jo                  tp        jr                  d|jt                         }Etk        jv                  |Ed       tj        jl                  jo                  |E|jx                   d      }F||C|B|Ad}Gt{        j|                  |G      }H|Hj                  |Fdd        |Cd!z  }Ig d}t        j                         }J|Jj                  t        j                  ||Cd"d#d$%             |Jj                  t        j                  ||Id"d&d'%             |Jj                  d(d)t        d#t        d*+      t        d*+      d,-      t        d&t        d.+      t        d.+      d/d01      d23       t        j                  |Jd4      }Ki d5|d6|d7|'d8|+d9|1d:|8d;|@d<|d=|d>|d?|d@|dA|dB|dC|dD|9dE|||||||||A|B|C|Dt        |K      dF}Lt        | d|L      S # t*        $ r:}t        j,                  | t/        |             t        | d||dd	      cY d }~S d }~ww xY w)GNidr&   projetoub   Este ambiente foi cadastrado com um equipamento existente. O cálculo térmico não foi realizado.z+calculotermica/resultados_cargatermica.htmlTuj   Este ambiente foi preenchido automaticamente com um modelo existente e não passou pelo cálculo térmico.)r(   ambienteerromensagem)r)   )r(   r)   r*   r   )hlv)nortesullesteoeste)z06:00z07:00z08:00z09:00z10:00z11:00z12:00z13:00z14:00z15:00z16:00z17:00z18:00)total_carga_termicatotal_carga_insolacaototal_parede_calculo)r1   r2   total_vidro_calculo)r1   r2   total_portas_calculotelhado_)r1   r2   total_telhado_calculocarga_sensivel_totalcarga_latente_totalcarga_iluminacaocarga_equipamentoscarga_sensivel_pessoascarga_latente_pessoas)r8   r9   r:   r;   r<   r=   z>/var/www/html/cagpublico/cag/arquivos_cargas_termicas/projeto_)exist_okz_resultados_termicos.xlsx)   Horáriou   Carga Térmica Total Ambienteu   Somatório Carga Latente Totalu    Somatório Carga Sensível TotalFopenpyxl)indexenginei  zlines+markersu   Carga Térmica Total (W)y1)xymodenameyaxisu   Carga Térmica Total (TR)y2u0   Carga Térmica Total do Ambiente ao Longo do Diar?   z#1f77b4)colorleft)title	titlefonttickfontsidez#ff7f0erE   right)rL   rM   rN   
overlayingrO   plotly_white)rL   xaxis_titlerH   yaxis2template)	full_htmlr(   r)   cargas_totais_paredescargas_totais_vidroscargas_totais_portascargas_totais_telhadoscargas_totais_ambientecargas_termocargas_insolacaocargas_termo_vidroscargas_insolacao_vidroscargas_termo_portascargas_insolacao_portascargas_termo_telhadoscargas_insolacao_telhadoscargas_ambientevazao_infiltracao)vazao_renovacaovazao_total_ar_exteriorcalor_sensivel_ar_exteriorcalor_latente_ar_exteriorhorariosaltitudedensidade_arsomatorio_carga_sensivel_totalsomatorio_carga_latente_totalcarga_termica_total_ambiente carga_termica_total_ambiente_maxplot_carga_termica_total)Iuseris_authenticatedtenantr   
set_schemaschema_namer   r   r   equipamento_existenter#   warningr   r   r   objectsfilterr	   r
   r   r   FileNotFoundErrorerrorstrtemperatura_internark   r   r   	area_piso
pe_direitor   numero_pessoastaxa_renovacaor   r   r   umidade_absoluta_internar   r   npzeroslenr   r   arrayitemsr   r   r   r   r&   r   maxospathjoinr!   BASE_DIRnome_projetomakedirsnome_ambientepd	DataFrameto_excelgoFigure	add_traceScatterupdate_layoutdictpioto_htmlr    )Mrequest
projeto_idambiente_idr(   r)   termicosparedesvidrosportatelhadostemperaturas_externasumidade_absoluta_externacalor_latente_aguaer~   rk   rl   re   rf   rg   rh   ri   r\   r]   r^   r_   r`   ra   rb   rc   orientacoesrj   total_carga_termica_paredestotal_carga_insolacao_paredesparede
orientacaocarga_termicacarga_insolacaor3   rW   total_carga_termica_vidrostotal_carga_insolacao_vidrosr4   rX   total_carga_termica_portastotal_carga_insolacao_portascarga_termica_portacarga_insolacao_portar5   rY   total_carga_termica_telhadostotal_carga_insolacao_telhadostelhadocarga_termica_telhadocarga_insolacao_telhador7   rZ   rd   r8   r9   r:   r;   r<   r=   r[   rm   rn   ro   rp   caminho_basecaminho_arquivodadosdfcarga_termica_total_ambiente_trfigrq   contextosM                                                                                4/var/www/html/cagpublico/cag/calculotermica/views.pyresultados_ambiente_termicar   #   sw
    ||$$)<)<gll11==>J7G k7KH %%  #G  	HgL  E	O
  	 !BHnn##X#6G]]!!8!4FMM  ( 3E%%x%8H
NlmwNxK79K KiisJtG35G"66
 $+#3#3#?wQH(2L
 6h6H6H(J]J]^1(2I2I8KbKbcO>H//1H1H(JaJa "E')<>U" !C ))! L3I*V\^f3g007OPZ\dfn7o444K EH
 #%((3x="9$&HHS]$;!  @% 	@J9*fhXbcM=fjQO (288M+BB')RXXo-FF) -:LJ<)0?
|-	@@ 79VV  ;!> 4 "$#h-!8#%88CM#:  &9%>%>%@ >!
M"bhh}&==">'>'D'D'F B#
O$(AA$B 57SS9!=2 "$#h-!8#%88CM#:     L% 	LJ">z5RZ\f"g$B5*$U! 4G:,07L#zl4 '"((3F*GG&(BHH5J,KK(	LL 68TT  :!= 4 $&88CM#: %'XXc(m%<"  "  L >z7T\ ]"B:wX`"a :O56=T!HWZZL"9: 	%1F(GG$&"((3J*KK&L 9;YY  <!?!6 8AO 88CM2((3x=1xxH.#h-0XXc(m4HHS]3 09O)P QQ/rxx8M(NOO_,BHH_5G%HII.bhh7K'LMM?2"((?;S+T"UU/1/:Q*R!SS !52,0"8!6 			 		
 	#	# 		 		 		 #( 	!	" "
 %BDb$b '*+G'H$ 77<< 1 15st{  uI  uI  tJ  4K  LLKKt,ggll<H4J4J3KKd1efO )E*G,J	E 
e	B KKuZK@ 'CT&I# EH
))+C MM"**

&'  MM"**

)(  @,+	*	
 -+	*
  !  (  #{{3%@ 7 H  	 !6  	 4	 
 	 4  	!"8  	!"8  	  	,  	2  	"#:  	2  	"#:  	 !6  	$%>   	?! " 	.# $ +#:&@%>$*H)F(D,L$-.F$G; HD 'H(SSi  wA'gL O
  	s   	b= =	d /c;5d ;d )gerar_relatorio_completoc                 $   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        t        ||      }t        | ||      }|S Nr%   r'   )
rr   rs   rt   r   ru   rv   r   r   r   r   r   r   r   r(   r)   responses         r   relatorio_completo_viewr     j     ||$$)<)<gll11==>J7G k7KH ([IHO    )gerar_relatorio_resumidoc                 $   | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        t        ||      }t        | ||      }|S r   )
rr   rs   rt   r   ru   rv   r   r   r   r   r   s         r   relatorio_resumido_viewr     r   r   )gerar_termo_de_referencia)r   c                     | j                   j                  rI| j                   j                  r3t        j                  | j                   j                  j
                         t        t        |      }t        | |      S )Nr%   )	rr   rs   rt   r   ru   rv   r   r   r   )r   r   r(   s      r   gerar_termo_referencia_viewr     sR    ||$$)<)<gll11==>J7G$Wg66r   )Jdjango.shortcutsr   r   projeto.modelsr   ctermica.modelsr   termicos.modelsr   paredes.modelsr   vidros.modelsr	   portas.modelsr
   telhados.modelsr   	django.dbr   modelsr   cargasparedesr   r   cargasvidrosr   cargasportasr   r   r   cargastelhadosr   r   r   cargastermicosr   r   r   r   r   r   r   pandasr   r   numpyr   plotly.graph_objs
graph_objsr   	plotly.ioior   django.utils.safestringr    r   csvdjango.confr!   django.contrib.auth.decoratorsr"   django.contribr#   r   relatorio_ambiente_completor   r   relatorio_ambiente_resumidor   r   )calculotermica.relatorio_termo_referenciar   relatorio_termo_referenciar    r   r   <module>r      s    6 " $ ) !   #   " Y 0 n n v v  :  1    - 	 
   9 #QT QTn B  & B   P / "   9 A7 7r   