Version Alpha 1.0 produktionsfähig

This commit is contained in:
Patrick vom Hagen
2024-03-04 15:14:04 +01:00
parent b0067ae057
commit a8b4695413
9 changed files with 1067 additions and 24 deletions

47
main.py
View File

@@ -44,7 +44,7 @@ if __name__ == "__main__":
sys.stdout = Logger.Logger(log_file_path)
print("Schul-IT UCS-Import Tool:\n")
dev = True # CHANGE FOR PRODUCTION RUN <------
dev = True # CHANGE to "False" FOR PRODUCTION RUN <------
# ----------------------------------------------------------------- #
# Step 1 - Dateien wählen, formatieren, einlesen | Variablen setzen #
@@ -52,14 +52,17 @@ if __name__ == "__main__":
# ToDo Daten mit UI einlesen
# lehrer_liste_neu = "./Data/SaM/export_lehrer_SaM.csv"
lehrer_liste_neu = "./Data/RoterHahn/exportLehrer.csv"
lehrer_liste_system = "./Data//RoterHahn/systemLehrer.csv"
lehrer_liste_neu = "./Data/GKS/exportLuL.csv"
lehrer_liste_system = "./Data//GKS/systemLuL.csv"
lul_out_path = './Data/outputLehrer.csv'
schueler_liste_neu = "./Data/RoterHahn/exportSchueler.csv"
schueler_liste_system = "./Data/RoterHahn/systemSchueler.csv"
schueler_liste_neu = "./Data/GKS/exportSuS.csv"
schueler_liste_system = "./Data/GKS/systemSuS.csv"
sus_out_path = './Data/outputSchueler.csv'
# Variablen füllen:
if not dev:
print("Eingabefelder:")
school_id = "HL070" + input("Schul-ID eingeben HL070:")
ox_context = input("OX-Context der Schule eingeben:")
if input("Klassen mit führenden Nullen? (y/n) ").lower() == "y":
@@ -67,44 +70,50 @@ if __name__ == "__main__":
else:
del_zeros = True
print("Schul ID:", school_id, "\nOX-Context:", ox_context, "\nNullen:", del_zeros)
print("\nSchul ID:", school_id, "\nOX-Context:", ox_context, "\nNullen:", del_zeros)
lul_new = step1.check_export_file(lehrer_liste_neu)
# print("Spalten der Import Liste - Lehrer: ", lul_new.columns)
lul_sys = step1.create_dataframe_system(lehrer_liste_system)
sus_new = step1.check_export_file(schueler_liste_neu)
# print("Spalten der Import Liste - Schüler: ", sus_new.columns)
sus_sys = step1.create_dataframe_system(schueler_liste_system)
# Test- und Funktionsuser auslagern
keywords = ['Test', 'test', 'Raum', 'raum', 'User', 'user', 'Tafel', 'tafel', 'Admin', 'admin']
lul_testuser_df = step1.extract_testusers(lul_sys, keywords)
print("Anzahl Test- / Systemuser LuL:", len(lul_testuser_df))
print("\nAnzahl Test- / Systemuser LuL:", len(lul_testuser_df))
sus_testuser_df = step1.extract_testusers(sus_sys, keywords)
print("Anzahl Test- / Systemuser SuS:", len(sus_testuser_df))
# in Datasets aufteilen - Testuser, Abgleich, UUIDs
# ---------------------------------------------------- #
# Step 2 - auf name, vorname reduzieren und abgleichen #
print("\nStep2: Listen abgleichen")
# 2.1 Data Frames für Abgleich erstellen
print(" Lehrer:innen:")
print("\n Lehrer:innen:")
lul_matched, new_lul = step2.compare_data(lul_new, lul_sys)
print("\n Schüler:innen:")
sus_matched, new_sus = step2.compare_data(sus_new, sus_sys,)
print("Step2 completed! \n")
sys.stdout = sys.__stdout__
print("\nStep2: Abgleich abgeschlossen! \n")
# ----------------------------------------------------------------------------------------#
# Step 3 - Import Data generieren - klasse, uuids, weiteres in einer Liste zusammenführen #
# Lul: Namen + UUIDs + Testuser
lul_import = step3.merch_uuids(new_lul, lul_matched, dev)
# lul_import = step3.add_school_data(lul_import, school_id, ox_context, mail_quota_lul, ox_quota_lul)
print(lul_import[['name', 'klasse', 'schuelerid']])
lul_import = step3.add_school_data(lul_import, school_id, ox_context, mail_quota_lul, ox_quota_lul)
lul_import = pd.concat([lul_import, lul_testuser_df], ignore_index=True)
print(f"{len(lul_testuser_df)} Testuser angefügt - {len(lul_import)} Einträge in LuL Liste")
lul_import.to_csv(lul_out_path, sep=';', index=False)
print(f"LuL Import CSV unter {lul_out_path} erfolgreich erstellt!")
# SuS: Namen + UUIDs + Klassen + Testuser
# sus_import = step3.add_school_data(sus_sys, school_id, ox_context, mail_quota_sus, ox_quota_sus)
sus_import = step3.merch_uuids(new_sus, sus_matched, dev)
sus_import = step3.add_school_data(sus_import, school_id, ox_context, mail_quota_sus, ox_quota_sus)
sus_import = pd.concat([sus_import, sus_testuser_df], ignore_index=True)
print(f"{len(sus_testuser_df)} Testuser angefügt - {len(sus_import)} Einträge in SuS Liste")
sus_import.to_csv(sus_out_path, sep=';', index=False)
print(f"SuS Import CSV unter {sus_out_path} erfolgreich erstellt!")
print("\nImport Script beendet.")
# Log Datei fertig - Ausgang schließen
sys.stdout = sys.__stdout__