This commit is contained in:
Alexander Malzkuhn 2025-04-06 21:47:31 +02:00
commit c617c886a1
3 changed files with 122 additions and 0 deletions

View File

@ -0,0 +1,7 @@
1743965819
1743965909
1743966022
1743966045
1743966047
1743966049
1743967346

View File

@ -0,0 +1,2 @@
1743966330
1743966416

113
zeiterfassung.py Normal file
View File

@ -0,0 +1,113 @@
#
#
# 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()