Exemplo n.º 1
0
 def conv_text(self, data):
     o = self.connection
     t = ""
     for line in data:
         res_srid = convert_srid(self.codi_r1, get_srid(o), [line["x"], line["y"]])
         t += "{0};{1};{2}\n".format(format_f(res_srid[0], decimals=6), format_f(res_srid[1], decimals=6), 0)
     return t[:-1]
Exemplo n.º 2
0
Arquivo: F16.py Projeto: gisce/libCNMC
    def consumer(self):
        o_codi_r1 = 'R1-%s' % self.codi_r1[-3:]
        O = self.connection
        fields_to_read = [
            'name', 'cini', 'ct_id', 'tensio_id', 'potencia_instalada'
        ]
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)
                condensador = O.GiscedataCondensadors.read(item, fields_to_read)
                o_cond = condensador['name']
                o_cini = condensador.get('cini', '')
                o_potencia = condensador['potencia_instalada']

                o_node, posicion = self.get_node_vertex(condensador['name'])
                o_node = o_node.replace('*', '')

                ct = self.get_dades_ct(condensador['ct_id'][0])
                o_propietari = int(ct['propietari'])

                o_ine_muni, o_ine_prov = '', ''
                if ct['id_municipi']:
                    o_ine_prov, o_ine_muni = self.get_ine(ct['id_municipi'][0])
                o_tensio = format_f(
                    float(self.get_tensio(condensador['tensio_id'][0])) / 1000.0,
                    decimals=3
                )

                o_any = self.year
                z = ''
                res_srid = ['', '']
                if posicion:
                    res_srid = convert_srid(
                        self.codi_r1, get_srid(O), posicion)
                self.output_q.put([
                    o_node,                             # NUDO
                    o_cond,                             # CONDENSADOR
                    o_cini,                             # CINI
                    format_f(res_srid[0], decimals=3),  # X
                    format_f(res_srid[1], decimals=3),  # Y
                    z,                                  # Z
                    o_ine_muni,                         # MUNICIPIO
                    o_ine_prov,                         # PROVINCIA
                    o_tensio,                           # NIVEL TENSION
                    format_f(o_potencia, decimals=3),   # POTENCIA INSTALADA
                    o_codi_r1,                          # CODIGO DISTRIBUIDORA
                    o_propietari,                       # PROPIETARIO
                    o_any                               # AÑO INFORMACION
                ])
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemplo n.º 3
0
Arquivo: F15.py Projeto: gisce/libCNMC
    def consumer(self):
        """
        Consumer function that generates each line of the file

        :return: None
        """

        while True:
            try:
                item = self.input_q.get()
                fields_read = [
                    "name", "tensio", "cini", "propietari", "x", "y",
                    "subestacio_id", "node_id"
                ]
                fields_sub_read = [
                    "x", "y", "ct_id","id_municipi","id_provincia"
                ]
                pos = self.connection.GiscedataCtsSubestacionsPosicio.read(
                    item, fields_read
                )

                sub = self.connection.GiscedataCtsSubestacions.read(
                    pos["subestacio_id"][0], fields_sub_read
                )

                point = [sub["x"], sub["y"]]
                point_25830 = convert_srid(self.codi_r1, self.srid, point)

                if "node_id" in sub:
                    nudo = sub["node_id"]
                else:
                    nudo = self.cts_node[sub["ct_id"][0]]
                self.output_q.put(
                    [
                        nudo,                           # Nudo
                        pos.get("name", ""),            # Elemento de fiabilidad
                        "",                             # Tramo
                        pos.get("cini", ""),            # CINI
                        format_f(point_25830[0], decimals=3),
                        format_f(point_25830[1], decimals=3),
                        0,
                        self.municipios[sub["id_municipi"][0]],  # Codigo INE de municipio
                        self.provincias[sub["id_provincia"][0]],  # Codigo de provincia INE
                        self.tensions.get(pos["tensio"][0], 0),  # Nivel de tension
                        self.cod_dis,  # Codigo de la compañia distribuidora
                        int(pos.get("propietari", 1)),  # Propiedad
                        self.year  # Año de inforacion
                     ])
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemplo n.º 4
0
 def consumer(self):
     o_codi_r1 = "R1-%s" % self.codi_r1[-3:]
     o = self.connection
     fields_to_read = ["name", "cini", "propietari", "id_municipi", "id_provincia", "ct_id", "descripcio"]
     while True:
         try:
             # generar linies
             item = self.input_q.get()
             self.progress_q.put(item)
             sub = o.GiscedataCtsSubestacions.read(item, fields_to_read)
             ids_sub = {"id_municipi": sub["id_municipi"], "id_provincia": sub["id_provincia"]}
             vertex = self.get_vertex(sub["ct_id"][0])
             ines = self.get_ines(ids_sub)
             o_subestacio = sub["name"]
             o_cini = sub["cini"]
             o_denominacio = sub["descripcio"]
             x = ""
             y = ""
             z = ""
             if vertex[0]:
                 x = format_f(float(vertex[0]), decimals=3)
             if vertex[1]:
                 y = format_f(float(vertex[1]), decimals=3)
             o_municipi = ines["ine_municipi"]
             o_provincia = ines["ine_provincia"]
             o_prop = int(sub["propietari"])
             o_any = self.year
             res_srid = ["", ""]
             if vertex:
                 res_srid = convert_srid(self.codi_r1, get_srid(o), vertex)
             self.output_q.put(
                 [
                     o_subestacio,
                     o_cini,
                     o_denominacio,
                     format_f(res_srid[0], decimals=3),
                     format_f(res_srid[1], decimals=3),
                     z,
                     o_municipi,
                     o_provincia,
                     o_codi_r1,
                     o_prop,
                     o_any,
                 ]
             )
         except:
             traceback.print_exc()
             if self.raven:
                 self.raven.captureException()
         finally:
             self.input_q.task_done()
Exemplo n.º 5
0
 def consumer(self):
     o = self.connection
     fields_to_read = [
         'installacio', 'cini', 'propietari', 'name'
     ]
     while True:
         try:
             # generar linies
             item = self.input_q.get()
             self.progress_q.put(item)
             celles = o.GiscedataCellesCella.read(
                 item, fields_to_read
             )
             dict_linia = self.obtenir_camps_linia(celles['installacio'])
             o_fiabilitat = celles['name']
             o_node, vertex, o_tram = self.get_node_vertex_tram(o_fiabilitat)
             o_cini = celles['cini']
             z = ''
             o_municipi = dict_linia.get('municipi')
             o_provincia = dict_linia.get('provincia')
             o_tensio = format_f(dict_linia.get('tensio'), decimals=3)
             o_cod_dis = 'R1-%s' % self.codi_r1[-3:]
             o_prop = int(celles['propietari'])
             o_any = self.year
             res_srid = ['', '']
             if vertex:
                 res_srid = convert_srid(
                     self.codi_r1, get_srid(o), vertex)
             self.output_q.put([
                 o_node,
                 o_fiabilitat,
                 o_tram,
                 o_cini,
                 format_f(res_srid[0], decimals=3),
                 format_f(res_srid[1], decimals=3),
                 z,
                 o_municipi,
                 o_provincia,
                 o_tensio,
                 o_cod_dis,
                 o_prop,
                 o_any
             ])
         except:
             traceback.print_exc()
             if self.raven:
                 self.raven.captureException()
         finally:
             self.input_q.task_done()
Exemplo n.º 6
0
Arquivo: F9.py Projeto: gisce/libCNMC
    def conv_text(self, data):
        """
        Converts the projection of a data

        :param data: list of elemnets to convert
        :return: Elements with the projection converted
        """
        o = self.connection
        t = ''
        for line in data:
            res_srid = convert_srid(
                self.codi_r1,
                get_srid(o),
                [line['x'], line['y']]
            )
            t += '{0};{1};{2}\n'.format(
                format_f(res_srid[0], decimals=6),
                format_f(res_srid[1], decimals=6),
                '')
        return t[:-1]
Exemplo n.º 7
0
Arquivo: F11.py Projeto: gisce/libCNMC
    def consumer(self):
        o_codi_r1 = 'R1-%s' % self.codi_r1[-3:]
        O = self.connection
        fields_to_read = [
            'name', 'cini', 'id_municipi',   'tensio_p', 'id_subtipus',
            'perc_financament', 'propietari', 'numero_maxim_maquines',
            'potencia',"node_id"
        ]
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)
                ct = O.GiscedataCts.read(item, fields_to_read)
                if ct.get("node_id"):
                    o_node = ct["node_id"][1]
                    node = O.GiscegisNodes.read(ct["node_id"][0],["geom"])
                    coords = wkt.loads(node["geom"]).coords[0]
                    vertex = [coords[0], coords[1]]
                else:
                    o_node, vertex = self.get_node_vertex(item)
                o_node = o_node.replace('*', '')
                o_ct = ct['name']
                o_cini = ct['cini'] or ''
                if ct['id_municipi']:
                    o_ine_prov, o_ine_muni = self.get_ine(ct['id_municipi'][0])
                else:
                    o_ine_muni, o_ine_prov = '', ''

                try:
                    o_tensio_p = format_f(
                        float(ct['tensio_p']) / 1000.0, decimals=3) or ''
                except:
                    o_tensio_p = ''

                if ct['id_subtipus']:
                    o_tipo = self.get_tipus(ct['id_subtipus'][0])
                else:
                    o_tipo = ''
                o_potencia = float(self.get_potencia_trafos(item))
                cups = O.GiscedataCupsPs.search([
                    ('et', '=', ct['name']),
                    ('polissa_polissa.tarifa.name', 'not in', ["RE", "RE12"])
                ])
                o_energia = sum(
                    x['cne_anual_activa']
                    for x in O.GiscedataCupsPs.read(
                        cups, ['cne_anual_activa']
                    )
                )
                o_pic_activa = format_f(
                    self.get_saturacio(ct['id']), decimals=3)
                o_pic_reactiva = ''
                o_s_utilitades, o_s_disponibles = self.get_sortides_ct(
                    ct['name']
                )
                o_propietari = int(ct['propietari'])
                o_num_max_maquines = ct['numero_maxim_maquines']
                o_incorporacio = self.year
                z = ''
                res_srid = ['', '']
                if vertex:
                    res_srid = convert_srid(
                        self.codi_r1, get_srid(O), vertex)
                self.output_q.put([
                    o_node,                             # NUDO ALTA
                    o_ct,                               # CT
                    o_cini,                             # CINI
                    format_f(res_srid[0], decimals=3),  # X
                    format_f(res_srid[1], decimals=3),  # Y
                    z,                                  # Z
                    o_ine_muni,                         # MUNICIPIO
                    o_ine_prov,                         # PROVINCIA
                    o_tensio_p,                         # NIVEL TENSION
                    o_tipo,                             # TIPO
                    format_f(o_potencia, decimals=3),   # POTENCIA TOTAL INSTALADA
                    format_f(o_energia, decimals=3),    # ENERGIA ANUAL CIRCULADA
                    o_pic_activa,                       # DEMANDA PICO ACTIVA
                    o_pic_reactiva,                     # DEMANDA PICO REACTIVA
                    o_s_utilitades,                     # NUMERO SALIDAS UTILIZADAS
                    o_s_disponibles,                    # MAXIMO SALIDAS UTILIZADAS
                    o_codi_r1,                          # CODIGO DISTRIBUIDORA
                    o_propietari,                       # PROPIEDAD
                    o_num_max_maquines,                 # NUM MAX MAQUINAS
                    o_incorporacio                      # AÑO INFORMACION
                ])
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemplo n.º 8
0
    def consumer(self):
        o_codi_r1 = 'R1-%s' % self.codi_r1[-3:]
        O = self.connection
        fields_to_read = [
            'name', 'cini', 'id_municipi',   'tensio_p', 'id_subtipus',
            'perc_financament', 'propietari', 'numero_maxim_maquines',
            'potencia'
        ]
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)
                ct = O.GiscedataCts.read(item, fields_to_read)
                o_node, vertex = self.get_node_vertex(item)
                o_ct = ct['name']
                o_cini = ct['cini'] or ''
                if ct['id_municipi']:
                    o_ine_prov, o_ine_muni = self.get_ine(ct['id_municipi'][0])
                else:
                    o_ine_muni, o_ine_prov = '', ''

                try:
                    o_tensio_p = format_f(
                        float(ct['tensio_p']) / 1000.0, decimals=3) or ''
                except:
                    o_tensio_p = ''

                if ct['id_subtipus']:
                    o_tipo = self.get_tipus(ct['id_subtipus'][0])
                else:
                    o_tipo = ''
                o_potencia = format_f(self.get_potencia_trafos(item),
                                      decimals=3)
                cups = O.GiscedataCupsPs.search([('et', '=', ct['name'])])
                o_energia = sum(
                    x['cne_anual_activa']
                    for x in O.GiscedataCupsPs.read(
                        cups, ['cne_anual_activa']
                    )
                )
                o_pic_activa = format_f(
                    self.get_saturacio(ct['id']), decimals=3)
                o_pic_reactiva = ''
                o_s_utilitades, o_s_disponibles = self.get_sortides_ct(
                    ct['name']
                )
                o_propietari = int(ct['propietari'])
                o_num_max_maquines = ct['numero_maxim_maquines']
                o_incorporacio = self.year
                x = ''
                y = ''
                z = ''
                res_srid = ['', '']
                if vertex:
                    res_srid = convert_srid(
                        self.codi_r1, get_srid(O), vertex)
                self.output_q.put([
                    o_node,
                    o_ct,
                    o_cini,
                    format_f(res_srid[0], decimals=3),
                    format_f(res_srid[1], decimals=3),
                    z,
                    o_ine_muni,
                    o_ine_prov,
                    o_tensio_p,
                    o_tipo,
                    o_potencia,
                    format_f(o_energia, decimals=3),
                    o_pic_activa,
                    o_pic_reactiva,
                    o_s_utilitades,
                    o_s_disponibles,
                    o_codi_r1,
                    o_propietari,
                    o_num_max_maquines,
                    o_incorporacio
                ])
            except:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemplo n.º 9
0
Arquivo: F15.py Projeto: gisce/libCNMC
    def consumer(self):
        """
        Function that generates each line of the file

        :return: None
        """

        o = self.connection
        fields_to_read = [
            'installacio', 'cini', 'propietari', 'name', 'tram_id', 'tensio',
            "node_id"
        ]
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)
                cella = o.GiscedataCellesCella.read(
                    item, fields_to_read
                )
                o_fiabilitat = cella['name']
                o_cini = cella['cini']
                o_prop = int(cella['propietari'])
                if "node_id" in cella:
                    o_node = cella["node_id"][1]
                    geom = o.GiscegisNodes.read(cella["node_id"][0],["geom"])["geom"]
                    vertex = wkt.loads(geom).coords[0]

                dict_linia = self.obtenir_camps_linia(cella['installacio'])
                model, element_id = cella['installacio'].split(',')
                x = ''
                y = ''
                z = ''
                if model == "giscedata.cts":
                    ct_x_y = o.GiscedataCts.read(element_id, ["x", "y"])
                    vertex = False
                    o_tram = ""
                    if "node_id" not in cella:
                        o_node = self.get_node_ct(element_id)
                    point = (ct_x_y["x"], ct_x_y["y"])
                    p25830 = convert_srid(self.codi_r1, get_srid(o), point)
                    x = format_f(p25830[0], decimals=3)
                    y = format_f(p25830[1], decimals=3)
                else:
                    if "node_id" not in cella:
                        if not cella['tram_id']:
                            o_node, vertex, o_tram = self.get_node_vertex_tram(
                                o_fiabilitat)
                        else:
                            o_node, vertex = self.get_node_vertex(o_fiabilitat)
                    else:
                        if "tram_id" in cella:
                            o_tram = "A{0}".format(o.GiscedataAtTram.read(
                                    cella['tram_id'][0], ['name']
                                )['name'])

                o_node = o_node.replace('*', '')
                o_municipi = dict_linia.get('municipi')
                o_provincia = dict_linia.get('provincia')
                if cella['tensio']:
                    tensio = o.GiscedataTensionsTensio.read(
                        cella['tensio'][0], ['tensio']
                    )
                    o_tensio = format_f(int(tensio['tensio'])/1000.0, decimals=3)
                else:
                    o_tensio = dict_linia.get('tensio')

                o_any = self.year
                res_srid = ['', '']
                if vertex:
                    res_srid = convert_srid(
                        self.codi_r1, get_srid(o), vertex)
                    x = format_f(res_srid[0], decimals=3)
                    y = format_f(res_srid[1], decimals=3)
                self.output_q.put([
                    o_node,         # NUDO
                    o_fiabilitat,   # ELEMENTO FIABILIDAD
                    o_tram,         # TRAMO
                    o_cini,         # CINI
                    x,              # X
                    y,              # Y
                    z,              # Z
                    o_municipi,     # MUNICIPIO
                    o_provincia,    # PROVINCIA
                    o_tensio,       # NIVEL TENSION
                    self.cod_dis,   # CODIGO DISTRIBUIDORA
                    o_prop,         # PROPIEDAD
                    o_any           # AÑO INFORMACION
                ])
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemplo n.º 10
0
Arquivo: F1.py Projeto: gisce/libCNMC
    def consumer(self):
        """
        Consumer function to generate F1

        :return: None
        """

        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',
                    'polisses', 'potencia_conveni', 'potencia_adscrita',
                    "node_id"
                ]
                cups = O.GiscedataCupsPs.read(item, fields_to_read)
                if not cups or not cups.get('name'):
                    self.input_q.task_done()
                    continue
                if self.reducir_cups:
                    o_name = cups['name'][:20]
                else:
                    o_name = cups['name'][:22]
                o_codi_ine_mun = ''
                o_codi_ine_prov = ''
                o_zona = ''
                o_potencia_facturada = format_f(
                    cups['cnmc_potencia_facturada'], 3) or ''
                if 'et' in cups:
                    o_zona = self.get_zona_qualitat(cups['et'])
                if cups['id_municipi']:
                    id_mun = cups["id_municipi"][0]
                    o_codi_ine_prov, o_codi_ine_mun = self.get_ine(id_mun)
                o_nom_node = cups.get("node_id")[1]
                o_tensio = ''
                o_connexio = ''
                vertex = False
                if cups and cups['id_escomesa'] and "node_id" not in cups:
                    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']
                            )
                            if bloc_escomesa['node']:
                                node = O.GiscegisNodes.read(
                                    [bloc_escomesa['node'][0]], ['name'])
                                o_nom_node = node[0]['name']
                o_nom_node = o_nom_node.replace('*', '')
                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 = cups.get('potencia_adscrita', '0,000') or '0,000'
                o_equip = 'MEC'
                o_cod_tfa = ''
                o_estat_contracte = 0
                # energies consumides
                o_anual_activa = format_f(
                    cups['cne_anual_activa'] or 0.0, decimals=3)
                o_anual_reactiva = format_f(
                    cups['cne_anual_reactiva'] or 0.0, decimals=3)

                if polissa_id:
                    fields_to_read = [
                        'potencia', 'cnae', 'tarifa', 'butlletins', 'tensio'
                    ]

                    polissa = O.GiscedataPolissa.read(
                        polissa_id[0], fields_to_read, context_glob
                    )
                    if 'RE' in polissa['tarifa'][1]:
                        continue
                    if polissa['tensio']:
                        o_tensio = format_f(
                            float(polissa['tensio']) / 1000.0, decimals=3)
                    o_potencia = polissa['potencia']
                    if polissa['cnae']:
                        cnae_id = polissa['cnae'][0]
                        if cnae_id in self.cnaes:
                            o_cnae = self.cnaes[cnae_id]
                        else:
                            o_cnae = O.GiscemiscCnae.read(
                                cnae_id, ['name']
                            )['name']
                            self.cnaes[cnae_id] = o_cnae
                    else:
                        try:
                            polissa_act = O.GiscedataPolissa.read(
                                polissa_id[0], fields_to_read
                            )
                            cnae_id = polissa_act['cnae'][0]
                            if cnae_id in self.cnaes:
                                o_cnae = self.cnaes[cnae_id]
                            else:
                                o_cnae = O.GiscemiscCnae.read(
                                    cnae_id, ['name']
                                )['name']
                                self.cnaes[cnae_id] = o_cnae
                        except:
                            pass
                    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

                    search_modcon = [
                        ('id', 'in', cups['polisses']),
                        ('data_inici', '<=', ultim_dia_any)
                    ]
                    modcons = None
                    if len(cups['polisses']):
                        modcons = O.GiscedataPolissaModcontractual.search(
                            search_modcon, 0, 1, 'data_inici desc'
                            , {'active_test': False})
                    if modcons:
                        modcon_id = modcons[0]

                        fields_to_read_modcon = [
                            'cnae',
                            'tarifa',
                            'tensio',
                            'potencia'
                        ]

                        modcon = O.GiscedataPolissaModcontractual.read(
                            modcon_id, fields_to_read_modcon)

                        if modcon['tarifa']:
                            o_cod_tfa = self.get_codi_tarifa(
                                modcon['tarifa'][1]
                            )
                        if modcon['cnae']:
                            cnae_id = modcon['cnae'][0]
                            if cnae_id in self.cnaes:
                                o_cnae = self.cnaes[cnae_id]
                            else:
                                o_cnae = O.GiscemiscCnae.read(
                                    cnae_id, ['name']
                                )['name']
                                self.cnaes[cnae_id] = o_cnae
                        if modcon['tensio']:
                            o_tensio = format_f(
                                float(modcon['tensio']) / 1000.0, decimals=3)
                        if modcon['potencia']:
                            o_potencia = format_f(
                                float(modcon['potencia']), decimals=3)
                    else:
                        # No existeix modificació contractual per el CUPS
                        o_potencia = cups['potencia_conveni']
                        if cups.get('id_escomesa', False):
                            search_params = [
                                ('escomesa', '=', cups['id_escomesa'][0])
                            ]
                            id_esc_gis = O.GiscegisEscomesesTraceability.search(
                                search_params
                            )

                            if id_esc_gis:
                                tensio_gis = O.GiscegisEscomesesTraceability.read(
                                    id_esc_gis, ['tensio']
                                )[0]['tensio']
                                o_tensio = format_f(
                                    float(tensio_gis) / 1000.0, decimals=3)
                        else:
                            o_tensio = ''
                        if self.default_o_cnae:
                            o_cnae = self.default_o_cnae
                        if self.default_o_cod_tfa:
                            o_cod_tfa = self.default_o_cod_tfa

                o_any_incorporacio = self.year
                res_srid = ['', '']
                if vertex:
                    res_srid = convert_srid(
                        self.codi_r1, get_srid(O), (vertex['x'], vertex['y']))

                self.output_q.put([
                    o_nom_node,     # Nudo
                    format_f(res_srid[0], decimals=3),  # X
                    format_f(res_srid[1], decimals=3),  # Y
                    '',                 # Z
                    o_cnae,             # CNAE
                    o_equip,            # Equipo de medida
                    o_cod_tfa,          # Codigo de tarifa
                    o_zona,             # Zona de calidad
                    o_name,             # CUPS
                    o_codi_r1,          # Codigo de la distribuidora
                    o_codi_ine_mun,     # Municipio
                    o_codi_ine_prov,    # Provincia
                    o_connexio,         # Conexion
                    o_tensio,           # Tension de alimentacion
                    o_estat_contracte,  # Estado de contrato
                    format_f(o_potencia or '0,000', decimals=3),    # Potencia contratada
                    format_f(o_potencia_facturada, decimals=3),     # Potencia facturada
                    format_f(o_pot_ads, decimals=3),        # Potencia adscrita a la instalacion
                    format_f(o_anual_activa, decimals=3),   # Energia activa anual consumida
                    format_f(o_anual_reactiva, decimals=3), # Energia reactiva anual consumida
                    o_any_incorporacio  # Año informacion
                ])
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemplo n.º 11
0
    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',
                    'polisses'
                ]

                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 = format_f(
                    cups['cnmc_potencia_facturada'], 3) 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 = ''
                vertex = False
                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']:
                                node = O.GiscegisNodes.read(
                                    [bloc_escomesa['node'][0]], ['name'])
                                o_nom_node = node[0]['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
                #energies consumides
                o_anual_activa = format_f(
                    cups['cne_anual_activa'] or 0.0, decimals=3)
                o_anual_reactiva = format_f(
                    cups['cne_anual_reactiva'] or 0.0, decimals=3)

                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 = format_f(
                            float(polissa['tensio']) / 1000.0, decimals=3)
                    o_potencia = format_f(
                        polissa['potencia'], decimals=3)
                    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 = format_f(
                            butlleti['pot_max_admisible'], decimals=3)
                    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
                    o_potencia_facturada = 0
                    o_pot_ads = 0
                    o_potencia = 0
                    o_anual_activa = 0
                    o_anual_reactiva = 0

                    search_modcon = [
                        ('id', 'in', cups['polisses']),
                        ('data_inici', '<=', ultim_dia_any)
                    ]
                    modcons = O.GiscedataPolissaModcontractual.search(
                        search_modcon, 0, 1, 'data_inici desc'
                        , {'active_test': False})
                    if modcons:
                        modcon_id = modcons[0]

                        fields_to_read_modcon   = ['cnae', 'tarifa', 'tensio']

                        modcon = O.GiscedataPolissaModcontractual.read(
                            modcon_id, fields_to_read_modcon)

                        if modcon['tarifa']:
                            o_cod_tfa = self.get_codi_tarifa(modcon['tarifa'][1])
                        if modcon['cnae']:
                            o_cnae = modcon['cnae'][1]
                        if modcon['tensio']:
                            o_tensio = format_f(
                                float(modcon['tensio']) / 1000.0, decimals=3)


                o_any_incorporacio = self.year
                res_srid = ['', '']
                if vertex:
                    res_srid = convert_srid(
                        self.codi_r1, get_srid(O), [vertex['x'], vertex['y']])

                self.output_q.put([
                    o_nom_node,
                    format_f(res_srid[0], decimals=3),
                    format_f(res_srid[1], decimals=3),
                    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()