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()
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
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()
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()
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()
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()
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()
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()
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()
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()
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()
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()