Exemple #1
0
    def consumer(self):
        O = self.connection
        fields_to_read = ['name', 'cini', 'data_pm', 'expedients_ids',
                          'codi_instalacio', 'id_municipi', 'perc_financament',
                          'descripcio']
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                ct = O.GiscedataCts.read(item, fields_to_read)

                comunitat_codi = ''
                data_pm = ''

                if ct['data_pm']:
                    data_pm_ct = datetime.strptime(str(ct['data_pm']),
                                                   '%Y-%m-%d')
                    data_pm = data_pm_ct.strftime('%d/%m/%Y')

                #funció per trobar la ccaa desde el municipi
                fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi

                if ct['id_municipi']:
                    id_municipi = ct['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat_codi = comunitat_vals['codi']

                output = [
                    '%s' % ct['name'],
                    ct['cini'] or '',
                    ct['descripcio'] or '',
                    str(ct['codi_instalacio']) or '',
                    comunitat_codi or '',
                    round(100 - int(ct['perc_financament'])),
                    data_pm,
                    ''
                ]

                self.output_q.put(output)
            except:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #2
0
    def get_comunitat(self, id_ct):
        """
        Gets the comunitat from a subestacion

        :param id_ct: Id of ct
        :return: Comunitat name
        """
        O = self.connection
        comunitat = ''
        cts = O.GiscedataCts.read(id_ct, ['id_municipi'])
        if cts['id_municipi']:
            id_municipi = cts['id_municipi'][0]
        else:
            id_municipi = get_id_municipi_from_company(O)

        if id_municipi:
            # funció per trobar la ccaa desde el municipi
            fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
            id_comunitat = fun_ccaa(id_municipi)
            comunitat_vals = O.ResComunitat_autonoma.read(
                id_comunitat[0], ['codi'])
            if comunitat_vals:
                comunitat = comunitat_vals['codi']
        return comunitat
Exemple #3
0
    def consumer(self):
        O = self.connection
        fields_to_read = ['name', 'cini', 'data_pm', 'subestacio_id',
                          'cnmc_tipo_instalacion', 'perc_financament', 'tensio']
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)
                o_sub = ''
                sub = O.GiscedataCtsSubestacionsPosicio.read(
                    item, fields_to_read)
                if not sub:
                    txt = ('**** ERROR: El ct %s (id:%s) no està a '
                           'giscedata_cts_subestacions_posicio.\n' %
                           (sub['name'], sub['id']))
                    if not QUIET:
                        sys.stderr.write(txt)
                        sys.stderr.flush()

                    raise Exception(txt)

                # Calculem any posada en marxa
                data_pm = sub['data_pm']
                if data_pm:
                    data_pm = datetime.strptime(str(data_pm), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%Y')

                #Codi tipus de instalació
                codi = sub['cnmc_tipo_instalacion']

                comunitat = ''

                #tensio
                ten = O.GiscedataTensionsTensio.read(sub['tensio'][0],
                                                     ['tensio'])
                tensio = (ten['tensio'] / 1000.0) or 0.0

                cts = O.GiscedataCtsSubestacions.read(sub['subestacio_id'][0],
                                                      ['id_municipi'])

                denominacio = self.get_denom(sub['subestacio_id'][0])


                if cts['id_municipi']:
                    id_municipi = cts['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    #funció per trobar la ccaa desde el municipi
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat = comunitat_vals['codi']
                    o_sub = self.get_description(sub['subestacio_id'][0])

                output = [
                    o_sub,
                    sub['cini'] or '',
                    denominacio,
                    codi,
                    comunitat,
                    format_f(tensio),
                    format_f(round(100 - int(sub['perc_financament']))),
                    data_pm or '',
                ]

                self.output_q.put(output)
            except:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #4
0
    def consumer(self):
        """
        Method that generates the csb file
        :return: List of arrays
        """
        O = self.connection
        fields_to_read = [
            'name', 'data_industria', 'data_pm', 'id_municipi', 'cini',
            'descripcio', 'perc_financament', 'data_baixa', 'posicions',
            'cnmc_tipo_instalacion', self.compare_field
        ]
        data_pm_limit = '{}-01-01'.format(self.year + 1)
        data_baixa_limit = '{}-01-01'.format(self.year)
        error_msg = "**** ERROR: El ct %s (id:%s) no està en giscedata_cts_subestacions.\n"
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                sub = O.GiscedataCtsSubestacions.read(item, fields_to_read)

                if not sub:
                    txt = (error_msg.format((sub['name'], sub['id'])))
                    if not QUIET:
                        sys.stderr.write(txt)
                        sys.stderr.flush()

                    raise Exception(txt)

                # Calculem any posada en marxa
                data_pm = sub['data_pm']

                if data_pm:
                    data_pm = datetime.strptime(str(data_pm), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                comunitat = ''
                if sub['id_municipi']:
                    id_municipi = sub['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    # funció per trobar la ccaa desde el municipi
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat = comunitat_vals['codi']
                if sub['data_baixa']:
                    if sub['data_baixa'] < data_pm_limit:
                        fecha_baja = sub['data_baixa']
                    else:
                        fecha_baja = ''
                else:
                    fecha_baja = ''

                if 'posicions' in sub:
                    num_pos = 0
                    for pos in sub['posicions']:
                        pos_data = O.GiscedataCtsSubestacionsPosicio.read(
                            pos, ['interruptor', 'criteri_regulatori']
                        )
                        if pos_data['interruptor'] == '2' and \
                                pos_data['criteri_regulatori'] != "excloure":
                            num_pos += 1
                else:
                    num_pos = 1

                if sub[self.compare_field]:
                    last_data = sub[self.compare_field]
                    entregada = F3Res4666(**last_data)
                    actual = F3Res4666(
                        sub['name'],
                        sub['cini'],
                        sub['descripcio'],
                        comunitat,
                        format_f(
                            100.0 - sub.get('perc_financament', 0.0), 2
                        ),
                        data_pm,
                        fecha_baja,
                        num_pos,
                        0
                    )
                    if entregada == actual:
                        estado = 0
                    else:
                        self.output_m.put("{} {}".format(sub["name"], adapt_diff(actual.diff(entregada))))
                        estado = 1
                else:
                    if sub['data_pm']:
                        if sub['data_pm'][:4] != str(self.year):
                            self.output_m.put("Identificador:{} No estava en el fitxer carregat al any n-1 i la data de PM es diferent al any actual".format(sub["name"]))
                            estado = '1'
                        else:
                            estado = '2'
                    else:
                        self.output_m.put("Identificador:{} No estava en el fitxer carregat al any n-1".format(sub["name"]))
                        estado = '1'

                output = [
                    '{0}'.format(sub['name']),          # IDENTIFICADOR
                    sub['cini'] or '',                  # CINI
                    sub['descripcio'] or '',            # DENOMINACION
                    comunitat,                          # CODIGO_CCAA
                    format_f(
                        100.0 - sub.get('perc_financament', 0.0), 2
                    ),                                  # FINANCIADO
                    data_pm,                            # FECHA_APS
                    fecha_baja,                         # FECHA_BAJA
                    num_pos,                            # POSICIONES
                    estado                              # ESTADO
                ]

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #5
0
    def consumer(self):
        """
        Method that generates the csv file
        :return: List of arrays
        """
        O = self.connection
        fields_to_read = [
            'name', 'cini', 'data_pm', 'subestacio_id', 'data_baixa',
            'tipus_instalacio_cnmc_id', 'perc_financament', 'tensio',
            self.compare_field
        ]
        not_found_msg = '**** ERROR: El ct {0} (id:{1}) no està a giscedata_cts_subestacions_posicio.\n'
        data_pm_limit = '{0}-01-01'.format(self.year + 1)
        data_baixa_limit = '{0}-01-01'.format(self.year)
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)
                pos = O.GiscedataCtsSubestacionsPosicio.read(
                    item, fields_to_read)
                if not pos:
                    txt = (not_found_msg.format(pos['name'], pos['id']))
                    if not QUIET:
                        sys.stderr.write(txt)
                        sys.stderr.flush()

                    raise Exception(txt)
                o_sub = pos['name']
                # Calculem any posada en marxa
                data_pm = pos['data_pm']
                if data_pm:
                    data_pm = datetime.strptime(str(data_pm), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                #Codi tipus de instalació
                if pos['tipus_instalacio_cnmc_id']:
                    id_ti = pos.get('tipus_instalacio_cnmc_id')[0]
                    codigo_ccuu = O.GiscedataTipusInstallacio.read(
                        id_ti,
                        ['name'])['name']
                else:
                    codigo_ccuu = ''


                comunitat = ''
                provincia = ''
                zona = ''

                #tensio
                ten = O.GiscedataTensionsTensio.read(pos['tensio'][0],
                                                     ['tensio'])
                tensio = (ten['tensio'] / 1000.0) or 0.0

                cts = O.GiscedataCtsSubestacions.read(pos['subestacio_id'][0], [
                    'id_municipi', 'id_provincia', 'zona_id'
                ])

                denominacio = self.get_denom(pos['subestacio_id'][0])

                if cts['id_municipi']:
                    id_municipi, municipi = cts['id_municipi']
                else:
                    id_municipi, municipi = get_id_municipi_from_company(
                        O, get_name=True
                    )
                if cts['id_provincia']:
                    provincia = cts['id_provincia'][1]
                if cts['zona_id']:
                    zona = cts['zona_id'][1]

                if id_municipi:
                    #funció per trobar la ccaa desde el municipi
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat = comunitat_vals['codi']
                    # o_sub = self.get_description(sub['subestacio_id'][0])
                if pos['data_baixa']:
                    if pos['data_baixa'] < data_pm_limit:
                        tmp_date = datetime.strptime(
                            pos['data_baixa'], '%Y-%m-%d %H:%M:%S')
                        fecha_baja = tmp_date.strftime('%d/%m/%Y')
                    else:
                        fecha_baja = ''
                else:
                    fecha_baja = ''
                if pos[self.compare_field]:
                    last_data = pos[self.compare_field]
                    entregada = F4Res4666(**last_data)
                    actual = F4Res4666(
                        o_sub,
                        pos['cini'],
                        denominacio,
                        codigo_ccuu,
                        comunitat,
                        format_f(tensio),
                        format_f(round(100 - int(pos['perc_financament']))),
                        data_pm,
                        fecha_baja,
                        0
                    )
                    if entregada == actual:
                        estado = 0
                    else:
                        estado = 1
                else:
                    estado = 2
                output = [
                    o_sub,
                    pos['cini'] or '',
                    denominacio,
                    codigo_ccuu,
                    comunitat,
                    format_f(tensio, 3),
                    format_f(round(100 - int(pos['perc_financament'])), 3),
                    data_pm or '',
                    fecha_baja,
                    estado,
                    provincia,
                    municipi,
                    zona,
                ]

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #6
0
    def consumer(self):
        O = self.connection
        fields_to_read = ['name', 'data_industria', 'data_pm', 'id_municipi',
                          'posicions', 'cini', 'descripcio', 'perc_financament']
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                sub = O.GiscedataCtsSubestacions.read(item, fields_to_read)

                if not sub:
                    txt = ("**** ERROR: El ct %s (id:%s) no està en "
                           "giscedata_cts_subestacions.\n" %
                           (sub['name'], sub['id']))

                    if not QUIET:
                        sys.stderr.write(txt)
                        sys.stderr.flush()

                    raise Exception(txt)

                # Calculem any posada en marxa
                data_pm = sub['data_pm']

                if data_pm:
                    data_pm = datetime.strptime(str(data_pm), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                comunitat = ''
                id_municipi = None
                if sub['id_municipi']:
                    id_municipi = sub['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    #funció per trobar la ccaa desde el municipi
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat = comunitat_vals['codi']

                output = [
                    '%s' % sub['name'],
                    sub['cini'] or '',
                    sub['descripcio'] or '',
                    comunitat,
                    format_f(round(100 - int(sub['perc_financament']))),
                    data_pm,
                    len(sub['posicions'])
                ]

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #7
0
    def consumer(self):
        """
        Method that generates the csb file
        :return: List of arrays
        """
        O = self.connection
        fields_to_read = [
            'name', 'data_industria', 'data_pm', 'id_municipi', 'cini',
            'descripcio', 'perc_financament', 'data_baixa', 'posicions',
            'cnmc_tipo_instalacion', self.compare_field
        ]
        data_pm_limit = '{}-01-01'.format(self.year + 1)
        data_baixa_limit = '{}-01-01'.format(self.year)
        error_msg = "**** ERROR: El ct %s (id:%s) no està en giscedata_cts_subestacions.\n"
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                sub = O.GiscedataCtsSubestacions.read(item, fields_to_read)

                if not sub:
                    txt = (error_msg.format((sub['name'], sub['id'])))
                    if not QUIET:
                        sys.stderr.write(txt)
                        sys.stderr.flush()

                    raise Exception(txt)

                # Calculem any posada en marxa
                data_pm = sub['data_pm']

                if data_pm:
                    data_pm = datetime.strptime(str(data_pm), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                comunitat = ''
                if sub['id_municipi']:
                    id_municipi = sub['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    #funció per trobar la ccaa desde el municipi
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat = comunitat_vals['codi']
                if sub['data_baixa']:
                    if sub['data_baixa'] < data_pm_limit:
                        fecha_baja = sub['data_baixa']
                    else:
                        fecha_baja = ''
                else:
                    fecha_baja = ''

                if 'posicions' in sub:
                    num_pos = 0
                    for pos in sub['posicions']:
                        pos_data = O.GiscedataCtsSubestacionsPosicio.read(pos, ['interruptor'])
                        if pos_data['interruptor'] == '2':
                            num_pos += 1
                else:
                    num_pos = 1

                if sub[self.compare_field]:
                    last_data = sub[self.compare_field]
                    entregada = F3Res4131(**last_data)
                    actual = F3Res4131(
                        sub['name'],
                        sub['cini'],
                        sub['descripcio'],
                        comunitat,
                        format_f(round(100 - int(sub['perc_financament']))),
                        data_pm,
                        num_pos
                    )
                    if entregada == actual:
                        estado = 0
                    else:
                        estado = 1
                else:
                    estado = 2
                    
                output = [
                    '{0}'.format(sub['name']),
                    sub['cini'] or '',
                    sub['descripcio'] or '',
                    comunitat,
                    format_f(round(100 - int(sub['perc_financament']))),
                    data_pm,
                    fecha_baja,
                    num_pos,
                    estado
                ]

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #8
0
    def consumer(self):
        """
        Method that generates the csb file
        :return: List of arrays
        """
        O = self.connection
        fields_to_read = [
            'cini', 'historic', 'data_pm', 'ct', 'name', 'potencia_nominal',
            'numero_fabricacio', 'perc_financament', 'tipus_instalacio_cnmc_id',
            'conexions', 'data_baixa', self.compare_field
        ]

        con_fields_to_read = ['conectada', 'tensio_primari', 'tensio_p2',
                              'tensio_b1', 'tensio_b2', 'tensio_b3']

        data_pm_limit = '{0}-01-01'.format(self.year + 1)
        data_baixa_limit = '{0}-01-01'.format(self.year)
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                trafo = O.GiscedataTransformadorTrafo.read(
                    item, fields_to_read)

                if trafo['tipus_instalacio_cnmc_id']:
                    id_ti = trafo.get('tipus_instalacio_cnmc_id')[0]
                    codigo_ccuu = O.GiscedataTipusInstallacio.read(
                        id_ti,
                        ['name'])['name']
                else:
                    codigo_ccuu = ''

                data_pm = ''
                if trafo['data_pm']:
                    data_pm = datetime.strptime(
                        str(trafo['data_pm']), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                comunitat = ''
                financiacio = 0
                if 'perc_financament' in trafo:
                    financiacio = round(
                        100.0 - float(trafo['perc_financament']), 2)

                # Unitats en MVA
                capacitat = trafo['potencia_nominal'] / 1000.0

                id_municipi = ''
                sys.stderr.write('CT {0} -> '.format(trafo['ct']))
                if trafo['ct']:
                    cts = O.GiscedataCts.read(trafo['ct'][0],
                                              ['id_municipi', 'descripcio'])
                    if cts['id_municipi']:
                        id_municipi = cts['id_municipi'][0]
                    denominacio = cts['descripcio']
                else:
                    id_municipi = get_id_municipi_from_company(O)
                    denominacio = 'ALMACEN'

                if id_municipi:
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunidad = O.ResComunitat_autonoma.read(
                        id_comunitat, ['codi'])
                    comunitat = comunidad[0]['codi']

                #Càlcul tensions a partir de les connexions
                con_vals = O.GiscedataTransformadorConnexio.read(
                    trafo['conexions'], con_fields_to_read)

                tensio_primari = 0
                tensio_secundari = 0
                for con in con_vals:
                    if not con['conectada']:
                        continue
                    t_prim = max([con['tensio_primari'] or 0,
                                  con['tensio_p2'] or 0])
                    t_sec = max([con['tensio_b1'] or 0,
                                 con['tensio_b2'] or 0,
                                 con['tensio_b3'] or 0])
                    tensio_primari = self.get_norm_tension(t_prim) / 1000.0
                    tensio_secundari = self.get_norm_tension(t_sec) / 1000.0
                if trafo['data_baixa']:
                    if trafo['data_baixa'] < data_pm_limit:
                        tmp_date = datetime.strptime(
                            trafo['data_baixa'], '%Y-%m-%d %H:%M:%S')
                        fecha_baja = tmp_date.strftime('%d/%m/%Y')
                    else:
                        fecha_baja = ''
                else:
                    fecha_baja = ''

                if trafo[self.compare_field]:
                    last_data = trafo[self.compare_field]
                    entregada = F5Res4771(**last_data)
                    actual = F5Res4771(
                        trafo['name'],
                        trafo['cini'],
                        denominacio,
                        codigo_ccuu,
                        comunitat,
                        format_f(tensio_primari),
                        format_f(tensio_secundari),
                        format_f(financiacio),
                        data_pm,
                        format_f(capacitat, 2)
                    )
                    if entregada == actual:
                        estado = '0'
                    else:
                        estado = '1'
                else:
                    estado = '2'

                output = [
                    '{0}'.format(trafo['name']),
                    trafo['cini'] or '',
                    denominacio or '',
                    codigo_ccuu,
                    comunitat or '',
                    format_f(tensio_primari),
                    format_f(tensio_secundari),
                    format_f(financiacio),
                    data_pm,
                    fecha_baja,
                    format_f(capacitat, 3),
                    estado
                ]

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #9
0
    def consumer(self):
        O = self.connection
        fields_to_read = ['cini', 'historic', 'data_pm', 'ct', 'name',
                          'potencia_nominal', 'numero_fabricacio',
                          'perc_financament', 'cnmc_tipo_instalacion',
                          'conexions']

        con_fields_to_read = ['conectada', 'tensio_primari', 'tensio_p2',
                              'tensio_b1', 'tensio_b2', 'tensio_b3']

        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                trafo = O.GiscedataTransformadorTrafo.read(
                    item, fields_to_read)

                codi = trafo['cnmc_tipo_instalacion'] or ''

                data_pm = ''
                if trafo['data_pm']:
                    data_pm = datetime.strptime(
                        str(trafo['data_pm']), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%Y')

                comunitat = ''
                financiacio = 0
                if 'perc_financament' in trafo:
                    financiacio = round(
                        100.0 - float(trafo['perc_financament']), 2)

                # Unitats en MVA
                capacitat = trafo['potencia_nominal'] / 1000.0

                id_municipi = ''
                sys.stderr.write('CT %s -> ' % trafo['ct'])
                if trafo['ct']:
                    cts = O.GiscedataCts.read(trafo['ct'][0],
                                              ['id_municipi', 'descripcio'])
                    if cts['id_municipi']:
                        id_municipi = cts['id_municipi'][0]
                    denominacio = cts['descripcio']
                else:
                    id_municipi = get_id_municipi_from_company(O)
                    denominacio = 'ALMACEN'

                if id_municipi:
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunidad = O.ResComunitat_autonoma.read(
                        id_comunitat, ['codi'])
                    comunitat = comunidad[0]['codi']

                #Càlcul tensions a partir de les connexions
                con_vals = O.GiscedataTransformadorConnexio.read(
                    trafo['conexions'], con_fields_to_read)

                tensio_primari = 0
                tensio_secundari = 0
                for con in con_vals:
                    if not con['conectada']:
                        continue
                    t_prim = max([con['tensio_primari'] or 0,
                                  con['tensio_p2'] or 0])
                    t_sec = max([con['tensio_b1'] or 0,
                                 con['tensio_b2'] or 0,
                                 con['tensio_b3'] or 0])
                    tensio_primari = self.get_norm_tension(t_prim) / 1000.0
                    tensio_secundari = self.get_norm_tension(t_sec) / 1000.0

                output = [
                    '%s' % trafo['name'],
                    trafo['cini'] or '',
                    denominacio or '',
                    codi,
                    comunitat or '',
                    format_f(tensio_primari),
                    format_f(tensio_secundari),
                    format_f(financiacio),
                    data_pm,
                    format_f(capacitat, 3),
                ]

                self.output_q.put(output)
            except:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #10
0
    def consumer(self):
        O = self.connection
        fields_to_read = ['cini', 'historic', 'data_pm', 'ct', 'name',
                          'potencia_nominal', 'codi_instalacio',
                          'numero_fabricacio', 'perc_financament']
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                trafo = O.GiscedataTransformadorTrafo.read(
                    item, fields_to_read)

                codi = ''
                if 'codi_instalacio' in trafo:
                    codi = trafo['codi_instalacio']
                data_pm = ''
                if trafo['data_pm']:
                    data_pm = datetime.strptime(
                        str(trafo['data_pm']), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                comunitat = ''
                financiacio = 0
                if 'perc_financament' in trafo:
                    financiacio = round(
                        100.0 - float(trafo['perc_financament']), 2)
                id_municipi = ''
                if trafo['ct']:
                    cts = O.GiscedataCts.read(trafo['ct'][0], ['id_municipi'])
                    if cts['id_municipi']:
                        id_municipi = cts['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunidad = O.ResComunitat_autonoma.read(
                        id_comunitat, ['codi'])
                    comunitat = comunidad[0]['codi']

                output = [
                    '%s' % trafo['name'],
                    trafo['cini'] or '',
                    trafo['numero_fabricacio'] or '',
                    codi,
                    '',
                    comunitat or '',
                    financiacio,
                    data_pm,
                    '',
                    trafo['potencia_nominal']
                ]

                self.output_q.put(output)
            except:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #11
0
    def consumer(self):
        """
        Method that generates the csb file
        :return: List of arrays
        """
        O = self.connection
        fields_to_read = [
            'cini', 'historic', 'data_pm', 'ct', 'name', 'potencia_nominal',
            'numero_fabricacio', 'perc_financament', 'tipus_instalacio_cnmc_id',
            'conexions', 'data_baixa', self.compare_field
        ]

        con_fields_to_read = ['conectada', 'tensio_primari', 'tensio_p2',
                              'tensio_b1', 'tensio_b2', 'tensio_b3']

        data_pm_limit = '{0}-01-01'.format(self.year + 1)
        data_baixa_limit = '{0}-01-01'.format(self.year)
        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                trafo = O.GiscedataTransformadorTrafo.read(
                    item, fields_to_read)

                if trafo['tipus_instalacio_cnmc_id']:
                    id_ti = trafo.get('tipus_instalacio_cnmc_id')[0]
                    codigo_ccuu = O.GiscedataTipusInstallacio.read(
                        id_ti,
                        ['name'])['name']
                else:
                    codigo_ccuu = ''

                data_pm = ''
                if trafo['data_pm']:
                    data_pm = datetime.strptime(
                        str(trafo['data_pm']), '%Y-%m-%d')
                    data_pm = data_pm.strftime('%d/%m/%Y')

                comunitat = ''
                financiacio = format_f(
                    100.0 - trafo.get('perc_financament', 0.0), 2
                )

                # Unitats en MVA
                capacitat = trafo['potencia_nominal'] / 1000.0

                id_municipi = ''
                sys.stderr.write('CT {0} -> '.format(trafo['ct']))
                if trafo['ct']:
                    cts = O.GiscedataCts.read(trafo['ct'][0],
                                              ['id_municipi', 'descripcio'])
                    if cts['id_municipi']:
                        id_municipi = cts['id_municipi'][0]
                    denominacio = cts['descripcio']
                else:
                    id_municipi = get_id_municipi_from_company(O)
                    denominacio = 'ALMACEN'

                if id_municipi:
                    fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi
                    id_comunitat = fun_ccaa(id_municipi)
                    comunidad = O.ResComunitat_autonoma.read(
                        id_comunitat, ['codi'])
                    comunitat = comunidad[0]['codi']

                #Càlcul tensions a partir de les connexions
                con_vals = O.GiscedataTransformadorConnexio.read(
                    trafo['conexions'], con_fields_to_read)

                tensio_primari = 0
                tensio_secundari = 0
                for con in con_vals:
                    if not con['conectada']:
                        continue
                    t_prim = max([con['tensio_primari'] or 0,
                                  con['tensio_p2'] or 0])
                    t_sec = max([con['tensio_b1'] or 0,
                                 con['tensio_b2'] or 0,
                                 con['tensio_b3'] or 0])
                    tensio_primari = self.get_norm_tension(t_prim) / 1000.0
                    tensio_secundari = self.get_norm_tension(t_sec) / 1000.0
                if trafo['data_baixa']:
                    if trafo['data_baixa'] < data_pm_limit:
                        tmp_date = datetime.strptime(
                            trafo['data_baixa'], '%Y-%m-%d %H:%M:%S')
                        fecha_baja = tmp_date.strftime('%d/%m/%Y')
                    else:
                        fecha_baja = ''
                else:
                    fecha_baja = ''

                if trafo[self.compare_field]:
                    last_data = trafo[self.compare_field]
                    entregada = F5Res4666(**last_data)
                    actual = F5Res4666(
                        trafo['name'],
                        trafo['cini'],
                        denominacio,
                        codigo_ccuu,
                        comunitat,
                        format_f(tensio_primari),
                        format_f(tensio_secundari),
                        financiacio,
                        data_pm,
                        fecha_baja,
                        format_f(capacitat, 3),
                        0
                    )
                    if entregada == actual:
                        estado = '0'
                    else:
                        self.output_m.put("{} {}".format(trafo["name"], adapt_diff(actual.diff(entregada))))
                        estado = '1'
                else:
                    if trafo['data_pm']:
                        if trafo['data_pm'][:4] != str(self.year):
                            self.output_m.put("Identificador:{} No estava en el fitxer carregat al any n-1 i la data de PM es diferent al any actual".format(trafo["name"]))
                            estado = '1'
                        else:
                            estado = '2'
                    else:
                        self.output_m.put("Identificador:{} No estava en el fitxer carregat al any n-1".format(trafo["name"]))
                        estado = '1'

                output = [
                    '{0}'.format(trafo['name']),        # IDENTIFICADOR
                    trafo['cini'] or '',                # CINI
                    denominacio or '',                  # DENOMINACION
                    codigo_ccuu,                        # CODIGO_CCUU
                    comunitat or '',                    # CODIGO_CCAA
                    format_f(tensio_primari, 3),        # TENSION PRIMARIO
                    format_f(tensio_secundari, 3),      # TENSION SECUNDARIO
                    financiacio,                        # FINANCIADO
                    data_pm,                            # FECHA APS
                    fecha_baja,                         # FECHA BAJA
                    format_f(capacitat, 3),             # CAPACIDAD
                    estado                              # ESTADO
                ]

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()
Exemple #12
0
    def consumer(self):
        """
        Method that generates the csb file
        :return: List of arrays
        """
        O = self.connection
        fields_to_read = [
            'name', 'cini', 'data_pm', 'tipus_instalacio_cnmc_id',
            'id_municipi', 'perc_financament', 'descripcio', 'data_baixa',
            self.compare_field, 'id_provincia', 'zona_id'
        ]
        data_pm_limit = '{0}-01-01'.format(self.year + 1)
        data_baixa_limit = '{0}-01-01'.format(self.year)

        while True:
            try:
                item = self.input_q.get()
                self.progress_q.put(item)

                ct = O.GiscedataCts.read(item, fields_to_read)

                comunitat_codi = ''
                data_pm = ''

                if ct['data_pm']:
                    data_pm_ct = datetime.strptime(str(ct['data_pm']),
                                                   '%Y-%m-%d')
                    data_pm = data_pm_ct.strftime('%d/%m/%Y')

                #funció per trobar la ccaa desde el municipi
                fun_ccaa = O.ResComunitat_autonoma.get_ccaa_from_municipi

                if ct['id_municipi']:
                    id_municipi = ct['id_municipi'][0]
                else:
                    id_municipi = get_id_municipi_from_company(O)

                if id_municipi:
                    id_comunitat = fun_ccaa(id_municipi)
                    comunitat_vals = O.ResComunitat_autonoma.read(
                        id_comunitat[0], ['codi'])
                    if comunitat_vals:
                        comunitat_codi = comunitat_vals['codi']

                if ct['data_baixa']:
                    if ct['data_baixa'] < data_pm_limit:
                        tmp_date = datetime.strptime(
                            ct['data_baixa'], '%Y-%m-%d %H:%M:%S')
                        fecha_baja = tmp_date.strftime('%d/%m/%Y')
                    else:
                        fecha_baja = ''
                else:
                    fecha_baja = ''

                if ct[self.compare_field]:
                    last_data = ct[self.compare_field]
                    entregada = F8Res4666(**last_data)

                    id_ti = ct['tipus_instalacio_cnmc_id'][0]
                    ti = O.GiscedataTipusInstallacio.read(
                        id_ti,
                        ['name'])['name']

                    actual = F8Res4666(
                        ct['name'],
                        ct['cini'],
                        ct['descripcio'],
                        ti,
                        comunitat_codi,
                        format_f(
                            100.0 - ct.get('perc_financament', 0.0), 2
                        ),
                        data_pm,
                        fecha_baja,
                        0
                    )
                    if entregada == actual:
                        estado = '0'
                    else:
                        self.output_m.put("{} {}".format(ct["name"], adapt_diff(actual.diff(entregada))))
                        estado = '1'
                else:
                    if ct['data_pm']:
                        if ct['data_pm'][:4] != str(self.year):
                            self.output_m.put("Identificador:{} No estava en el fitxer carregat al any n-1 i la data de PM es diferent al any actual".format(ct["name"]))
                            estado = '1'
                        else:
                            estado = '2'
                    else:
                        self.output_m.put("Identificador:{} No estava en el fitxer carregat al any n-1".format(ct["name"]))
                        estado = '1'
                if ct['tipus_instalacio_cnmc_id']:
                    id_ti = ct['tipus_instalacio_cnmc_id'][0]
                    ti = O.GiscedataTipusInstallacio.read(
                        id_ti,
                        ['name'])['name']

                else:
                    ti = ''
                output = [
                    '{0}'.format(ct['name']),   # IDENTIFICADOR
                    ct['cini'] or '',           # CINI
                    ct['descripcio'] or '',     # DENOMINACION
                    str(ti),                    # CODIGO_CCUU
                    comunitat_codi or '',       # CODIGO_CCAA
                    format_f(
                        100.0 - ct.get('perc_financament', 0.0), 2
                    ),                          # FINANCIADO
                    data_pm,                    # FECHA APS
                    fecha_baja,                 # FECHA BAJA
                    estado                      # ESTADO
                ]
                if self.extended:

                    if 'id_provincia' in ct:
                        provincia = O.ResCountryState.read(
                            ct['id_provincia'][0], ['name']
                        )
                        output.append(provincia.get('name', ""))
                    else:
                        output.append("")

                    if 'id_municipi' in ct:
                        municipi = O.ResMunicipi.read(
                            ct['id_municipi'][0], ['name']
                        )
                        output.append(municipi.get('name', ""))
                    else:
                        output.append("")

                    if 'zona_id' in ct:
                        zona = O.GiscedataCtsZona.read(
                            ct['zona_id'][0], ['name']
                        )
                        output.append(zona.get('name', ""))
                    else:
                        output.append("")

                self.output_q.put(output)
            except Exception:
                traceback.print_exc()
                if self.raven:
                    self.raven.captureException()
            finally:
                self.input_q.task_done()