def get_ine(self, municipi_id): """ Returns the INE code of the given municipi :param municipi_id: Id of the municipi :type municipi_id: int :return: state, ine municipi :rtype:tuple """ O = self.connection muni = O.ResMunicipi.read(municipi_id, ['ine']) return get_ine(O, muni['ine'])
def get_ine(self, municipi_id): O = self.connection muni = O.ResMunicipi.read(municipi_id, ['ine', 'dc']) return get_ine(O, muni['ine'])
def consumer(self): o_codi_r1 = 'R1-%s' % self.codi_r1[-3:] O = self.connection ultim_dia_any = '%s-12-31' % self.year search_glob = [ ('state', 'not in', ('esborrany', 'validar')), ('data_alta', '<=', ultim_dia_any), '|', ('data_baixa', '>=', ultim_dia_any), ('data_baixa', '=', False) ] context_glob = {'date': ultim_dia_any, 'active_test': False} while True: try: item = self.input_q.get() self.progress_q.put(item) fields_to_read = [ 'name', 'id_escomesa', 'id_municipi', 'cne_anual_activa', 'cne_anual_reactiva', 'cnmc_potencia_facturada', 'et' ] cups = O.GiscedataCupsPs.read(item, fields_to_read) if not cups or not cups.get('name'): self.input_q.task_done() continue o_name = cups['name'][:22] o_codi_ine = '' o_codi_prov = '' o_zona = '' o_potencia_facturada = cups['cnmc_potencia_facturada'] or '' if 'et' in cups: o_zona = self.get_zona_qualitat(cups['et']) if cups['id_municipi']: municipi = O.ResMunicipi.read( cups['id_municipi'][0], ['ine'] ) ine = get_ine(self.connection, municipi['ine']) o_codi_ine = ine[1] o_codi_prov = ine[0] o_utmx = '' o_utmy = '' o_utmz = '' o_nom_node = '' o_tensio = '' o_connexio = '' if cups and cups['id_escomesa']: o_connexio = self.get_tipus_connexio( cups['id_escomesa'][0] ) search_params = [('escomesa', '=', cups['id_escomesa'][0])] bloc_escomesa_id = O.GiscegisBlocsEscomeses.search( search_params ) if bloc_escomesa_id: bloc_escomesa = O.GiscegisBlocsEscomeses.read( bloc_escomesa_id[0], ['node', 'vertex'] ) if bloc_escomesa['vertex']: vertex = O.GiscegisVertex.read( bloc_escomesa['vertex'][0], ['x', 'y'] ) o_utmx = round(vertex['x'], 3) o_utmy = round(vertex['y'], 3) if bloc_escomesa['node']: search_params = [('start_node', '=', bloc_escomesa['node'][0])] edge_id = O.GiscegisEdge.search(search_params) if not edge_id: search_params = [('end_node', '=', bloc_escomesa['node'][0])] edge_id = O.GiscegisEdge.search(search_params) if edge_id: edge = O.GiscegisEdge.read( edge_id[0], ['name'] ) o_nom_node = edge['name'] search_params = [('cups', '=', cups['id'])] + search_glob polissa_id = O.GiscedataPolissa.search( search_params, 0, 1, 'data_alta desc', context_glob) o_potencia = '' o_cnae = '' o_pot_ads = '' o_equip = 'MEC' o_cod_tfa = '' o_estat_contracte = 0 if polissa_id: fields_to_read = [ 'potencia', 'cnae', 'tarifa', 'butlletins', 'tensio' ] polissa = O.GiscedataPolissa.read( polissa_id[0], fields_to_read, context_glob ) if polissa['tensio']: o_tensio = polissa['tensio'] / 1000.0 o_potencia = polissa['potencia'] if polissa['cnae']: o_cnae = polissa['cnae'][1] # Mirem si té l'actualització dels butlletins if polissa.get('butlletins', []): butlleti = O.GiscedataButlleti.read( polissa['butlletins'][-1], ['pot_max_admisible'] ) o_pot_ads = butlleti['pot_max_admisible'] comptador_actiu = get_comptador( self.connection, polissa['id'], self.year) if comptador_actiu: comptador_actiu = comptador_actiu[0] comptador = O.GiscedataLecturesComptador.read( comptador_actiu, ['cini', 'tg'] ) if not comptador['cini']: comptador['cini'] = '' if comptador.get('tg', False): o_equip = 'SMT' elif re.findall(CINI_TG_REGEXP, comptador['cini']): o_equip = 'SMT' else: o_equip = 'MEC' if polissa['tarifa']: o_cod_tfa = self.get_codi_tarifa(polissa['tarifa'][1]) else: # Si no trobem polissa activa, considerem # "Contrato no activo (CNA)" o_equip = 'CNA' o_estat_contracte = 1 #energies consumides o_anual_activa = cups['cne_anual_activa'] or 0.0 o_anual_reactiva = cups['cne_anual_reactiva'] or 0.0 o_any_incorporacio = self.year + 1 self.output_q.put([ o_nom_node, o_utmx, o_utmy, o_utmz, o_cnae, o_equip, o_cod_tfa, o_zona, o_name, o_codi_r1, o_codi_ine, o_codi_prov, o_connexio, o_tensio, o_estat_contracte, o_potencia, o_potencia_facturada, o_pot_ads or o_potencia, o_anual_activa, o_anual_reactiva, o_any_incorporacio ]) except: traceback.print_exc() if self.raven: self.raven.captureException() finally: self.input_q.task_done()