示例#1
0
文件: F1.py 项目: gisce/libCNMC
 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'])
示例#2
0
文件: F11.py 项目: gisce/libCNMC
 def get_ine(self, municipi_id):
     O = self.connection
     muni = O.ResMunicipi.read(municipi_id, ['ine', 'dc'])
     return get_ine(O, muni['ine'])
示例#3
0
文件: F1.py 项目: gisce/libCNMC
    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()