# # # Zeiterfassung # Bibliotheksimports import time import datetime import os # Statische Definitionen # Pfade: userfolder = "users" settingsfolder = "settings" program_name = "Zeiterfassung" program_version = "0.0.0" # Funktionen # Zeitstempel schreiben def append_timestamp(filename): # Hole den aktuellen Timestamp in Epoch-Zeit timestamp = int(time.time()) try: # Öffne die Datei im Anhang-Modus ('a') with open(filename, 'a') as file: # Schreibe den Timestamp in die Datei und füge einen Zeilenumbruch hinzu file.write(f"{timestamp}\n") except FileNotFoundError: # Fehlende Verzeichnisse anlegen folder_path = os.path.dirname(filename) os.makedirs(folder_path, exist_ok=True) append_timestamp(filename) # Anzahl der Zeilen zählen def len_timestamps(filename): try: # Öffne die Datei im Lese-Modus ('r') with open(filename, 'r') as file: # Zähle die Zeilen lines = file.readlines() return len(lines) except FileNotFoundError: print(f"Die Datei {filename} wurde nicht gefunden.") return 0 # Stempelzustand auslesen def stempel_zustand(filename): lines = len_timestamps(filename) if lines == 0: print(f"Keine Einträge") elif lines % 2 == 0: return("in") else: return("out") # Stempelübersicht zusammenstellen def overview(filename): # Öffne die Datei im Lese-Modus ('r') with open(filename, 'r') as file: lines = file.readlines() in_times = [] out_times = [] for i in range(0, len(lines)-1): if (i + 1) % 2 == 0: out_times.append(lines[i]) else: in_times.append(lines[i]) for i in range(0, len(in_times) - 1): print(str(in_times[i]) + " - " + str(out_times[i])) # Pfade bestimmen def scriptpath(): return os.path.dirname(os.path.abspath(__file__)) def determine_filename(user): year = str(datetime.datetime.now().year) month = str(datetime.datetime.now().month) completepath = scriptpath() + "/" + userfolder +"/" + user + "/" + year + "-" + month + ".txt" return completepath # Benutzer anhand Verzeichnisse auflisten def list_users(directory): users = [d for d in os.listdir(directory) if os.path.isdir(os.path.join(directory, d))] return users # Hauptfunktion def main(): print(program_name + " " + str(program_version)) print("Welche Funktion soll ausgeführt werden?") print("1: Stempeln") print("2: Stempelübersicht anzeigen") question = int(input("Geben Sie Ihre Antwort ein: ")) if question == 1: which_user = input("Für welchen User soll gestempelt werden? ") append_timestamp(determine_filename(which_user)) print("Stempeleintrag vorgenommen") elif question == 2: which_user = input("Für welchen User sollen die Stempelzeiten angezeigt werden?" ) print("Zustand: " + stempel_zustand(determine_filename(which_user))) overview(determine_filename(which_user)) else: print("Keine Eingabe erkannt.") # Programmstart if __name__ == "__main__": main()