CMDB2CSV_Aufbaumaster.py isin beim Einlesen des CMDB Sheet entfernt, Erweiterung filtern kommt später

This commit is contained in:
Sven Riwoldt
2024-10-26 08:40:48 +02:00
parent a8d5f65438
commit e310a25b74

View File

@@ -4,6 +4,7 @@ import sys
from pathlib import Path from pathlib import Path
import pandas as pd import pandas as pd
from icecream import ic from icecream import ic
import re
import numpy as np import numpy as np
@@ -46,24 +47,25 @@ class MainUI(QDialog): # erbt von QDialog
def collect_grundgeraete(self): def collect_grundgeraete(self):
# Einlesen der Sheets # Einlesen der Sheets
self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name="VTE-Input", engine='pyxlsb', self.df_vte = pd.read_excel(self.filename, header=7, na_filter=False, sheet_name='VTE-Input',
usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status']) usecols=['Hostname', 'Gruppierung', 'CONFIG-ID', 'CMDB Status'], engine='pyxlsb')
# print(self.df_vte.head)
self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb') self.df_cmdb = pd.read_excel(self.filename, header=2, sheet_name="CMDB", engine='pyxlsb')
# self.df_sw_asset = pd.read_excel(self.filename,sheet_name="SW-Asset", engine='pyxlsb')
# Nach relevanten Spalten filtern # Nach relevanten Spalten filtern
self.df_vte = self.df_vte[self.df_vte['Gruppierung'] == 'Grundgerät'] self.df_vte = self.df_vte[self.df_vte['Gruppierung'] == 'Grundgerät']
# self.df_vte = self.df_vte.drop(columns=['RAM','Bestelldatum','Hersteller','Lieferant','SAP-Nr.','Lieferdatum','Lieferschein-Nr.','WV-Start','WV-Ende','Aufgaben Schritt','Verkehrsart','Anz.\nHE '])
self.df_cmdb = self.df_cmdb[self.df_cmdb['Filter'].isin(['Grundgerät', 'Erweiterung'])] self.df_cmdb = self.df_cmdb[self.df_cmdb['Filter'] == 'Grundgerät']
self.df_cmdb = self.df_cmdb.drop( self.df_cmdb = self.df_cmdb.drop(
columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]', columns=['WV-Start', 'WV-Ende', 'CMDB-Status', 'Aufgabe Schritt', 'Filter', 'Waermeabgabe [BTU/h]',
'kalk. Strom [A]']) 'kalk. Strom [A]'])
# Einfügen von Spalten in die CMDB-Tabelle # Einfügen von Spalten in die CMDB-Tabelle
self.dfb = self.df_vte.merge(self.df_cmdb, on=['Hostname'], how='left') self.dfb = self.df_vte.merge(self.df_cmdb, on=['Hostname'], how='left')
# Spalte für Mandanten Kontaktzuweisung # Spalte für Mandanten Kontaktzuweisung
self.dfb.insert(loc=7, column='Mandanten Kontaktzuweisung', value='Mandant') self.dfb.insert(loc=7, column='Mandanten Kontaktzuweisung', value='Mandant')
@@ -88,9 +90,17 @@ class MainUI(QDialog): # erbt von QDialog
# Masseinheit # Masseinheit
self.dfb.insert(loc=18, column='Masseinheit', value='Zoll') self.dfb.insert(loc=18, column='Masseinheit', value='Zoll')
# Spaltenanmen mit Sonderzeichen anzeigen
columns_with_special_chars = [col for col in self.dfb.columns if self.has_special_characters(col)]
print("Spaltenheader mit Sonderzeichen:", columns_with_special_chars)
# Führende Leerzeichen in allen Spalten entfernen # Führende Leerzeichen in allen Spalten entfernen
self.dfb = self.dfb.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x) self.dfb = self.dfb.apply(lambda x: x.str.lstrip() if x.dtype == "object" else x)
# Alle Floats in Strings umwandeln
self.dfb = self.dfb.applymap(lambda x: str(x) if isinstance(x, float) else x)
self.dfb = self.dfb.apply(self.suche_Einschub, axis=1) self.dfb = self.dfb.apply(self.suche_Einschub, axis=1)
self.dfb = self.dfb.apply(self.montageort, axis=1) self.dfb = self.dfb.apply(self.montageort, axis=1)
@@ -105,15 +115,21 @@ class MainUI(QDialog): # erbt von QDialog
############################################################################################## ##############################################################################################
#def collect_erweiterung(self): #def collect_erweiterung(self):
def has_special_characters(self, s):
# Regex pattern für Sonderzeichen
return bool(re.search(r'[^A-Za-z0-9]', s))
def suche_Einschub(self, einschub): def suche_Einschub(self, einschub):
if einschub['Montageort'][-1] in ('v' 'h'): if einschub['Montageort'][-1] in ('v','h'):
print (einschub['Montageort']) print (einschub['Montageort'])
einschub['Einschub'] = einschub['Montageort'][-1] einschub['Einschub'] = einschub['Montageort'][-1]
return einschub return einschub
def montageort(self, montage): def montageort(self, montage):
# Fehlerbereinigung # Fehlerbereinigung
if montage['ID\nStandort'] not in ("Ber-PS", "Bon-BTW"): ic(montage)
if montage['ID\nStandort']not in ("Ber-PS", "Bon-BTW"):
print("Kein Standort P40 oder BTW") print("Kein Standort P40 oder BTW")
sys.exit(0) sys.exit(0)
else: else: