Example #1
0
    def balanco_energetico_detalhado_por_subsistema(self, nome_subsistema):
        
        tag = 'div'        
        balanco_detalhado_extrair = BalancoEnergeticoDetalhado()  
        
        dicionario = DicionarioRegEx()
        
        sistema_interligado = dicionario.sistema_interligado
        
        subsistema = sistema_interligado[nome_subsistema]
        
        balanco_detalhado = {}
        
        balanco_detalhado[subsistema['nome']] = {}
#        print subsistema['nome']
        
        qtd_fontes = subsistema['qtd_programada_fontes']
#                                                                                    (objeto_bs, tag, left_tx, top_tx):  
        [fontes_lista, fontes_json]  = balanco_detalhado_extrair.fontes_energeticas(self.objeto_bs, tag, subsistema['fontes_lf'], subsistema['fontes_tp'] )
        
        balanco_detalhado[subsistema['nome']]['qtd_fontes'] = {'programada':subsistema['qtd_programada_fontes'], 'verificada':len(fontes_lista)-1} # -1 -> retira Total

        if balanco_detalhado[subsistema['nome']]['qtd_fontes']['programada'] <> balanco_detalhado[subsistema['nome']]['qtd_fontes']['verificada']:
            
            ## Log -> modificação na estrutura do arquivo
            self.log_arquivo_ipdo["fontes"] = "Erro: A quantidade de fontes verificadas é diferente da quantidade programada."            
#            self.log_arquivo_ipdo["fontes"]["verificada"] = subsistema[regex["nome"]]["qtd_fontes"]["verificada"]
#            self.log_arquivo_ipdo["fontes"]["programada"] = subsistema[regex["nome"]]["qtd_fontes"]["programada"]            
#            
            print subsistema['nome']          
            print 'Erro: A quantidade de fontes verificadas é diferente da quantidade programada.'
            print 'programada ->'  + str(balanco_detalhado[subsistema['nome']]['qtd_fontes']['programada'])
            print 'verificada ->'  + str(balanco_detalhado[subsistema['nome']]['qtd_fontes']['verificada'])
            
            import sys            
            sys.exit()     
     
        producao_vf = balanco_detalhado_extrair.producao(
                self.objeto_bs, tag, subsistema['prod_verif_lf'], subsistema['prod_verif_tp'] )
        
        producao_pg = balanco_detalhado_extrair.producao(
                self.objeto_bs, tag, subsistema['prod_prog_lf'], subsistema['prod_prog_tp'] )
        
        ##  separa a caga da produção
        if ((len(producao_vf)==(qtd_fontes+2) and (len(producao_pg)==(qtd_fontes+2)))):
            carga_vf = [producao_vf.pop(qtd_fontes+1)]
            carga_pg = [producao_pg.pop(qtd_fontes+1)]
            
        ## lê a carga a partir de uma expressão regular
        elif ((len(producao_vf)==(qtd_fontes+1)) and (len(producao_pg)==(qtd_fontes+1))):  
            
            carga_vf = balanco_detalhado_extrair.carga(
                    self.objeto_bs, tag, subsistema['carga_verif_lf'], subsistema['carga_verif_tp'] )

            carga_pg = balanco_detalhado_extrair.carga(
                self.objeto_bs, tag, subsistema['carga_prog_lf'], subsistema['carga_prog_tp'] )
            
        else:
            print 'Erro ao ler a carga do subsistema ->' +  subsistema['nome']
            print 'O arquivo deve ter mudado de estrutura.'    
        

        for indice, fonte in enumerate(fontes_lista):
            fontes_json[fonte] = {  
                'programada' : producao_pg[indice].replace('.',''), 
                'verificada' : producao_vf[indice].replace('.','')
                }
                
        balanco_detalhado[subsistema['nome']]['energia'] = fontes_json
        
        balanco_detalhado[subsistema['nome']]["carga"] = {
            "programada" : carga_pg[0].replace('.',''),
            "verificada" : carga_vf[0].replace('.','')
            }
        
        energia_natural_afluente_vf = \
                    balanco_detalhado_extrair.energia_narutal_afluente(
                            self.objeto_bs, tag, subsistema['ena_lf'], subsistema['ena_tp'] 
                    )
                    
        balanco_detalhado[subsistema['nome']]['ena'] = {
                    'verificada' : energia_natural_afluente_vf[0].replace('.','')
                    }
        balanco_detalhado[subsistema['nome']]['ena']['verificada'] = \
                        balanco_detalhado[subsistema['nome']]['ena']['verificada'].replace(',','.')


        self.valida_conteudo_numerico(balanco_detalhado)
        
        return balanco_detalhado[subsistema['nome']]