From 17c11ba9fa4b6e15776859029a243d0f521a912d Mon Sep 17 00:00:00 2001 From: Sven Riwoldt Date: Mon, 21 Oct 2024 10:04:51 +0200 Subject: [PATCH] =?UTF-8?q?Zusammenfassung=20der=20Grundger=C3=A4te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aufbaumaster2CSV.ui | 84 ++--------------- CMDB2CSV_Aufbaumaster.py | 199 ++++----------------------------------- 2 files changed, 24 insertions(+), 259 deletions(-) diff --git a/Aufbaumaster2CSV.ui b/Aufbaumaster2CSV.ui index 7f6fc550..515a5571 100755 --- a/Aufbaumaster2CSV.ui +++ b/Aufbaumaster2CSV.ui @@ -6,85 +6,13 @@ 0 0 - 670 - 258 + 644 + 146 Dialog - - - - 160 - 90 - 160 - 24 - - - - - - - 160 - 140 - 160 - 24 - - - - - - - 40 - 90 - 91 - 16 - - - - Gerätetyp - - - - - - 40 - 140 - 91 - 16 - - - - Gruppierung - - - - - - 40 - 200 - 138 - 21 - - - - nur mit Hostnamen - - - - - - 200 - 200 - 104 - 21 - - - - Alles - - @@ -106,8 +34,8 @@ - 513 - 210 + 150 + 80 121 28 @@ -138,8 +66,8 @@ - 401 - 207 + 38 + 77 155 30 diff --git a/CMDB2CSV_Aufbaumaster.py b/CMDB2CSV_Aufbaumaster.py index f7a9924a..4a0c357a 100755 --- a/CMDB2CSV_Aufbaumaster.py +++ b/CMDB2CSV_Aufbaumaster.py @@ -12,22 +12,11 @@ class MainUI(QDialog): # erbt von QDialog loadUi ("Aufbaumaster2CSV.ui", self) self.filename = None self.path = None - self.df = None + self.df_vte = None + self.df_cmdb = None self.dfb = None self.openBtn.clicked.connect(self.open_file_dialog) self.saveBtn.clicked.connect(self.save_file_dialog) - self.unique_groups = None - self.unique_typs = None - self.gruppierung = self.comboBoxGrp - self.gruppierung.activated.connect(self.changegroup) - self.geraetetyp = self.comboBoxGT - self.geraetetyp.activated.connect(self.changegtyp) - self.rBtnHostnames.setChecked(True) - self.rBtnHostnames.host = "Hostnamen" - self.rBtnAlles.setChecked(False) - self.rBtnAlles.host = "Alles" - self.rBtnHostnames.toggled.connect(self.onClicked) - self.rBtnAlles.toggled.connect(self.onClicked) self.filter = "Hostnamen" self.group = None self.typ = None @@ -58,23 +47,7 @@ class MainUI(QDialog): # erbt von QDialog def onClicked(self): pass -# radioButton = self.sender() -# if radioButton.isChecked(): -# self.filter = radioButton.host -# ic("Filter: ", self.filter) - #print ("Filter ", self.filter) - #if self.filter == "Hostnamen": - # self.df = self.df.dropna(subset=['Hostname']) - #self.df = (self.df['Hostname']).dropna(how="all") - #self.df = self.df['Hostname'].str.len() > 0 - # print(self.df['Hostname']) - #else: - #self.df = self.df.reset_index(drop=True) - # self.df = self.dfb - # self.unique_groups = None - # self.unique_typs = None - # self.changetable() - # print(self.df['Hostname']) + def collectdata(self): @@ -87,17 +60,20 @@ class MainUI(QDialog): # erbt von QDialog # Nach relevanten Spalten filtern 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']) #self.df_vte = self.df_vte.columns.difference(self.df_cmdb.columns) self.df_cmdb = self.df_cmdb[self.df_cmdb['Filter'].isin(['Grundgerät','Erweiterung'])] + self.df_cmdb = self.df_cmdb.drop(columns=['WV-Start','WV-Ende','CMDB-Status']) # Einfügen von Spalten in die CMDB-Tabelle self.dfb = self.df_vte.merge(self.df_cmdb, on=['Hostname'], how='left') + print(self.dfb) #self.dfb = self.dfb.T.drop_duplicates().T - self.dfb = self.dfb.drop(columns=['Bestelldatum_y','Hersteller_y','Lieferant_y','RAM_y','SAP-Nr._y','Lieferschein_y','Lieferschein-Nr._y']) - self.dfb = self.dfb.rename(columns={'Bestelldatum_x':'Bestelldatum','Hersteller_x':'Hersteller','Lieferant_x':'Lieferant'}) + # self.dfb = self.dfb.drop(columns=['Bestelldatum_y','Hersteller_y','Lieferant_y','RAM_y','SAP-Nr._y']) + # self.dfb = self.dfb.rename(columns={'Bestelldatum_x':'Bestelldatum','Hersteller_x':'Hersteller','Lieferant_x':'Lieferant'}) - ic(self.df_cmdb) + # ic(self.df_cmdb) # Zusammenfassen aller geänderten Werte @@ -113,158 +89,20 @@ class MainUI(QDialog): # erbt von QDialog #ic(self.filter) def save_file_dialog(self): - pass -# ic(self.df) - # options = QFileDialog.Options() - # options |= QFileDialog.DontUseNativeDialog - # self.savefilename, _ = QFileDialog.getSaveFileName(self, - # "Save File", "", "CSV(*.csv);;CSV Files(*.csv)", options = options) + ic(self.dfb) + options = QFileDialog.Options() + options |= QFileDialog.DontUseNativeDialog + self.savefilename, _ = QFileDialog.getSaveFileName(self, + "Save File", "", "CSV(*.csv);;CSV Files(*.csv)", options = options) + + self.dfb.to_csv(self.savefilename, index=None, header=True, encoding='utf-8') + print("Datei wurde gespeichert:", self.savefilename) - - #self.df['HE'] = self.df['HE'].apply(lambda x: x if pd.isnull(x) else str(int(x))) - #self.df['Anz. HE'] = self.df['Anz. HE'].apply(lambda x: x if pd.isnull(x) else str(int(x))) - #self.df['Objekt-Titel'] = self.df['Hostname'] - - # für Überarbeitung zwei Spalten - #self.df["Mandanten ID"] = self.df["Hostname"] - - #self.df["Segment"] = self.df["Hostname"] - - #self.df = self.df[self.df['Gerätetyp'] == self.typ] - - - - #self.df = self.df.drop(['Ursprungsdatei', 'Preis aus finaler Bestellung','Bestellung initiiert', 'Kommentar', 'Gruppierung', 'Zuordnung zur Serien-Nr.', 'Bemerkung','in PMA-ISEM erfasst','CMDB erfasst','BSI Kenner'], axis=1) - - #self.df = self.df.rename(columns = {"Modell / Artikel / \nAbweichungen": "Modell", - # "Auftragsnr. Beschaffung": "Auftragsnr.", - # "Name der Bestellung": "Bestellung", - # "SAP Nr": "SAP", - # "Beschaffung und Lieferinfo": "Lieferinfo", - # }) - - #self.df['SAP'] = self.df['SAP'].apply(lambda x: x if pd.isnull(x) else str(int(x))) - - #self.df.loc[self.df['Rack'] == "FT.31_Rack1_Reihe22_Platz584", "Rack"] = "g1.22.584-590" - #self.df.loc[self.df['Rack'] == "FT.42_Rack1_Reihe4_Platz501", "Rack"] = "g2.04.501-507" - - #self.df['Lieferschein-Nr.'] = self.df['Lieferschein-Nr.'].map(str) - #self.df['Angebot-Nr.'] = self.df['Angebot-Nr.'].map(str) - - - #if self.typ == "VM" or self.typ == "SFP" or self.typ == "SFP+": - # self.group = None; - - #if self.typ == "SFP" or self.typ == "SFP+": - # self.df = self.df.drop(["Etage","Raum","Reihe","Rack","HE","Einschub","Montage","Anz. HE", "Formfaktor", "Stadt", "Gebäude", "Lizenz-Key\nWV-Nr.", "RuB-ID","Läuft auf", "Clusterpartner", "CMDB-Status", "Mandanten ID", "Segment"], axis=1) - # #self.df['Angebot-Nr.'].fillna('') - # self.df['Angebot-Nr.'] = self.df['Angebot-Nr.'].replace('nan','', regex=True) - # self.df['Lieferschein-Nr.'] = self.df['Lieferschein-Nr.'].replace('nan','', regex=True) - #self.df['Gerätetyp'] = self.df['Gerätetyp'].replace('SFP+','SFP', regex=False) - - - - # Zeilen mit ungenauen Bezeichnern entfernen -# indexAge = df[(df['Name'] == 'John Holland') | (df['Position'] == 'SG')].index -# df.drop(indexAge, inplace=True) - # S-1110-SFP == Medienkonverter - # indexModell = self.df[ (self.df['Modell'] == 'CISCO TRANSCEIVER MODULE 1000BASE-LX / LH SFP')| - # (self.df['Modell'] == 'Nokia SFP – GIGE Base T RJ45  R6&6 DDM -40/85C') | - # (self.df['Modell'] == 'S-1110-SFP') | - # (self.df['Modell'] == 'Nokia SFP – GIGE LX-LC ROHS 6/6 DDM -40/85C')].index - #self.df.drop(indexModell, inplace=True) - - - - #self.df['Modell'] = self.df['Modell'].replace('SFP-MM-1G / PSFP-1000-M2LC05','PSFP-1000-M2LC05', regex=False) - #self.df['Modell'] = self.df['Modell'].replace('PSFP-1000-M2LC05 / SFP-MM-1G','PSFP-1000-M2LC05', regex=False) - #self.df['Modell'] = self.df['Modell'].replace('Perle PSFP -1000-S2LC10','PSFP-1000-S2LC10', regex=False) - #self.df['Modell'] = self.df['Modell'].replace('10G Base Active Optical SFP + Cable 2m','SFP-10G-AOC2M=', regex=False) - #self.df['Modell'] = self.df['Modell'].replace('10G Base Active Optical SFP + Cable 3m','SFP-10G-AOC3M=', regex=False) -# self.df['Modell'] = self.df['Modell'].replace('10G Base Active Optical SFP + Cable 2m','SFP-10G-AOC2M=', regex=False) - #self.df["Objekt-Bezeichner"] = self.df["Modell"] - - #self.df = self.df[self.df['Gruppierung'] == self.group] - - -# ic(self.typ) -# ic(self.group) -# ic(self.df) - -# Entfernt, da ich neue Objektgruppe Terminalserver angelegt habe -# if self.typ == "Server" and self.group == "Grundgerät": -# self.df['Kategorie'] = "Server" -# elif self.typ == "Terminalserver" and self.group == "Grundgerät": -# self.df['Kategorie'] = "Konsolenserver" - - - #self.df.replace(to_replace=r'ohne', value='', regex=False) - #pd.is_numeric_dtype(self.df['SAP']): - # pd.to_numeric(self.df['A'], errors='coerce') - - - -# ic(self.df) - -# ic(self.filter) - - #if self.filter == "Hostnamen": - # self.df = self.df.dropna(subset=['Hostname']) - # self.df = self.df.apply(self.prüfe_und_setze_wert, axis=1) - - - - - - #ic(type(self.df['Hostname'].str[4:6])) - #self.df["Mandanten ID"] = self.df['Hostname'].str[4:6] - #ic(self.df['Hostname'].str[6:8]) - #self.df["Segment"] = self.df['Hostname'].str[6:8] - - - #https://stackoverflow.com/questions/33266344/np-where-not-working-in-my-pandas - #self.df['Mandanten ID'] = np.where(self.df['Hostname'].str[4:6] == "10", 'm10 CMP Plattform / iM.0 / iM.4 / PAP sIMCP', - #np.where(self.df['Hostname'].str[4:6] == "19", 'm19 Testumgebung', - #np.where(self.df['Hostname'].str[4:6] == "20", 'm20 iM.1 Interner Mandant \(Schutzbedarf sehr hoch\)'))) - #self.df['Mandanten ID'].where(self.df['Mandanten ID'] == "19", "m19 Testumgebung") - #ic(type(self.df['Hostname'].str[4:6]).astype(int)) - #ic(self.df['Hostname'].str[4:6].any()) - - - #ic(self.df['Hostname'].str[4:6].all()) - #if (self.df['Hostname'].str[4:6]).any(): - #tmid = self.mandantenid(self.df['Hostname'] ) - - #ic(tmid[4:6]) - #ic(type(self.mandantenid(self.df['Hostname'])[4:6])) - #tmid = self.mandantenid(self.df['Hostname']) - #if self.mandantenid(self.df["Hostname"]) == "10": - # self.df['Mandanten ID'] = 'm10 CMP Plattform / iM.0 / iM.4 / PAP sIMCP' - #else: - # self.df['Mandanten ID'] = "Test" - # elif self.mandantenid(self.df['Hostname'])[4:6] == "19": - # self.df['Mandanten ID'] = 'm19 Testumgebung' - # else: - # self.df['Mandanten ID'] = self.mandantenid(self.df['Hostname'])[4:6] - - #if self.mandantenid(): - #if self.df['Hostname'].any().str.contains('(?![a-z]{4})[0-9]{2}', regex=True): - #if self.df['Hostname'].any().str.contains('([0-9]{2,2}(?![a-z])', regex=True): - # pass - -# if self.df['Hostname'].str[4:6] =="10": -# self.df['Mandanten ID'] = 'm10 CMP Plattform / iM.0 / iM.4 / PAP sIMCP' - #self.df['Mandanten ID'] = 'm10 CMP Plattform / iM.0 / iM.4 / PAP sIMCP' - # elif (self.df['Hostname'].str[4:6]).any() == "19": - # self.df['Mandanten ID'] = 'm19 Testumgebung' - # else: - # self.df['Mandanten ID'] = self.df["Hostname"].str[4:6] - # match item(self.df['Hostname'].str[4:6]): # case '10': @@ -295,8 +133,7 @@ class MainUI(QDialog): # erbt von QDialog # if self.selected_typ_value != "VM": # self.df = self.df[self.df['Gruppierung'] == selected_group_value] - # self.df.to_csv(self.savefilename, index=None, header=True, encoding='utf-8') - # print("Datei wurde gespeichert:", self.savefilename) + # def changetable(self): # with self.path: