diff --git a/GUI/import_gui.py b/GUI/import_gui.py new file mode 100644 index 0000000..a760c6b --- /dev/null +++ b/GUI/import_gui.py @@ -0,0 +1,16 @@ +from kivy.app import App +from kivy.uix.gridlayout import GridLayout +from kivy.uix.image import Image + + +class ImportGUI(App): + def build(self): + self.window = GridLayout() + self.window.cols = 3 + self.window.add_widget(Image(source="add.png")) + + return self.window + + +if __name__ == '__main__': + ImportGUI().run() diff --git a/README.md b/README.md index d24aa72..4fdbc75 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# UCS Import mit Python Script \ No newline at end of file +# UCS Import mit Python Script + +© Patrick vom Hagen - 2024 + +## Konzept + +Mit diesem Tool soll ein Listenabgleich zwischen einer neuen Liste einer \ No newline at end of file diff --git a/first_try/format_csv.py b/first_try/format_csv.py index bea1352..e383518 100644 --- a/first_try/format_csv.py +++ b/first_try/format_csv.py @@ -8,18 +8,18 @@ def check_file(path): result = chardet.detect(file.read()) detected_encoding = result['encoding'] - try: - pd.read_csv(path, encoding=detected_encoding) - except pd.errors.ParserError as e: - # Wenn ein Parserfehler auftritt, gibt eine Fehlermeldung aus - print(f"Fehler beim Einlesen der CSV-Datei: {e}") - print() - data = open(path, "r") - data = ''.join([i for i in data]).replace(",", "") - x = open(path, "w") - x.writelines(data) - x.close() - print(f"Alle Kommas entfernt") + # try: + # pd.read_csv(path, encoding=detected_encoding) + # except pd.errors.ParserError as e: + # # Wenn ein Parserfehler auftritt, gibt eine Fehlermeldung aus + # print(f"Fehler beim Einlesen der CSV-Datei: {e}") + # print() + # data = open(path, "r") + # data = ''.join([i for i in data]).replace(",", "") + # x = open(path, "w") + # x.writelines(data) + # x.close() + # print(f"Alle Kommas entfernt") # Prüft Formatierung der CSV, formatiert diese zu utf-8 und speichert das Ergebnis als neue Liste @@ -30,6 +30,7 @@ def format_csv(path, type): detected_encoding = result['encoding'] # CSV-Datei mit Pandas einlesen + # in step1 nicht notwendig, da nicht mit csv, sondern mit pandas frame gearbeitet wird try: df = pd.read_csv(path, encoding=detected_encoding) print("Datei erfolgreich eingelesen.") diff --git a/main.py b/main.py index 0435b14..983811c 100644 --- a/main.py +++ b/main.py @@ -7,24 +7,25 @@ ############################################################### # IMPORT - standard Python imports für benötigte Bibliotheken # -import pandas as pd # pandas für Datenmanagement -import chardet # chardet erkennt Formatierung - Umwandlung des erkannten Formats in UTF-8 -import csv # zur Verarbeitung von .csv Dateien -import uuid # zur Generierung von neuen UUIDs +from src import step1 +import pandas as pd # pandas für Datenmanagement +import chardet # chardet erkennt Formatierung - Umwandlung des erkannten Formats in UTF-8 +import csv # zur Verarbeitung von .csv Dateien +import uuid # zur Generierung von neuen UUIDs ############################# # Flags / globale Variablen # -del_zeros = False # Boolean, ob führende Nullen bei Klassen entfernt werden sollen -get_typos = False # Boolean, ob geringe Unterschiede zwischen den Listen ausgegeben werden sollen -test_user = [] # Array in dem Spezialuser gespeichert und wieder eingefügt werden +del_zeros = False # Boolean, ob führende Nullen bei Klassen entfernt werden sollen +get_typos = False # Boolean, ob geringe Unterschiede zwischen den Listen ausgegeben werden sollen +test_user = [] # Array in dem Spezialuser gespeichert und wieder eingefügt werden -school_id = 'HL' # HL-Tag für Klassen -ox_context = 0 # OX Context pro Schule -mail_quota_lul = 2048 # MailUserQuota LuL -ox_quota_lul = 20480 # oxUserQuota LuL -mail_quota_sus = 1024 # MailUserQuota SuS -ox_quota_sus = 5120 # oxUserQuota LuL +school_id = 'HL' # HL-Tag für Klassen +ox_context = 0 # OX Context pro Schule +mail_quota_lul = 2048 # MailUserQuota LuL +ox_quota_lul = 20480 # oxUserQuota LuL +mail_quota_sus = 1024 # MailUserQuota SuS +ox_quota_sus = 5120 # oxUserQuota LuL ####################### # MAIN FUNCTION START # @@ -50,6 +51,8 @@ if __name__ == "__main__": else: del_zeros = True + # step1.check_file() + # ---------------------------------------------------- # # Step 2 - auf name, vorname reduzieren und abgleichen # diff --git a/requirements.txt b/requirements.txt index b4fa6ca..1e4b83d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,2 +1,5 @@ panads -chardet \ No newline at end of file +chardet~=5.2.0 +Kivy~=2.3.0 +pandas~=2.0.3 +Levenshtein~=0.23.0 \ No newline at end of file diff --git a/src/step1.py b/src/step1.py index e69de29..85b0798 100644 --- a/src/step1.py +++ b/src/step1.py @@ -0,0 +1,40 @@ +import pandas as pd +import chardet +import csv + + +# prüft aktuelles Format mittels chardet Lib +def check_export_file(path): + with open(path, 'rb') as file: + result = chardet.detect(file.read()) + + detected_encoding = result['encoding'] + + # Try: Datei in pandas einlesen + try: + return pd.read_csv(path, encoding=detected_encoding) + # Catch: zusätzliche Kommas entfernen + except pd.errors.ParserError as e: + # Wenn ein Parserfehler auftritt, gibt eine Fehlermeldung aus + print(f"Fehler beim Einlesen der CSV-Datei: {e}") + print() + data = open(path, "r") + data = ''.join([i for i in data]).replace(",", "") + x = open(path, "w") + x.writelines(data) + x.close() + print(f"Alle Kommas entfernt, einlesen wir erneut versucht ...") + # Nach Komma Ersetzung erneut versuchen + try: + return pd.read_csv(path, encoding=detected_encoding) + except pd.errors.ParserError as e: + print(f"Erneut Fehler in CSV-Datei: {e}") + print(f"Datei muss manuell geändert werden.") + + +# zum Einlesen der bisherigen Systemdaten +def create_dataframe_system(path): + try: + return pd.read_csv(path, encoding='utf') + except pd.errors.ParserError as e: + print(f"Fehler beim Einlesen der CSV")