From 0a39ee7f179facab83377cde1118e9953f047f5b Mon Sep 17 00:00:00 2001 From: Alexander Malzkuhn Date: Thu, 17 Apr 2025 09:31:53 +0200 Subject: [PATCH] Klassendefinitionen user --- .idea/Zeiterfassung.iml | 6 +- .idea/misc.xml | 2 +- __pycache__/definitions.cpython-311.pyc | Bin 227 -> 462 bytes definitions.py | 20 +++++- nice_gui.py | 23 +++++++ nicegui_test.py | 12 ++++ ui.py | 23 ++++++- users.py | 78 ++++++++++++++++++++++++ users/test/2025-4.txt | 0 9 files changed, 156 insertions(+), 8 deletions(-) create mode 100644 nice_gui.py create mode 100644 nicegui_test.py create mode 100644 users.py create mode 100644 users/test/2025-4.txt diff --git a/.idea/Zeiterfassung.iml b/.idea/Zeiterfassung.iml index 909438d..68b5ff6 100644 --- a/.idea/Zeiterfassung.iml +++ b/.idea/Zeiterfassung.iml @@ -1,8 +1,10 @@ - - + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index a6218fe..32d08e5 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -3,5 +3,5 @@ - + \ No newline at end of file diff --git a/__pycache__/definitions.cpython-311.pyc b/__pycache__/definitions.cpython-311.pyc index 0ba3c6043969e1fc69c52d9044cb71ef1c9cc150..5c90a03f295d63600f86411b50ec18528f819541 100644 GIT binary patch literal 462 zcmZ3^%ge<81g{_dO+NsnAA>kBzzSu2t^+crGo&!2Fy=5sF{Cg>F{Us_F{LtOF~gKD zV1coaX%rPO(~uP~q_QnzWMEhg#1MeWi(*e7XOQK;Z1pqp zb5r#bb5bi3^MK;|F8SG|xv6<2srmtxB^mj7`Y4XmPf1P7%*!kR+Fh(yQ2C3)CO1E& zG$+-rNDycm$jilUK;i>4BO~Jn4hBZ922K!sz$4wjd4pf9f%^j+1D`-ocz=9X{EVPE l;q&8X#jl9CC~I~_*6bp$`4wLC2Cf^tA`M(1Si}!B3II)WdVv4{ delta 138 zcmX@d{Fu>dIWI340}vd2_ai+BNIwQ~V1N 0: + buttons["OK"].configure(state="active") + else: + buttons["OK"].configure(state="disabled") + + tk.Label(root, text="Benutzernummer:").grid(row=1, column=0) - usernr = tk.Entry(root, width=10) + UserNr = tk.StringVar() + UserNr.trace("w", lambda name, index, mode, UserNr=UserNr: usernr_changed(UserNr)) + usernr = tk.Entry(root, width=10, textvariable=UserNr) usernr.grid(row=1,column=1) # Pinpad @@ -48,8 +61,8 @@ def win_pinpad(): buttons["OK"].configure(state="disabled") # Buttons definieren - button_width = 5 - button_height = 2 + button_width = 7 + button_height = 3 pinframe = tk.Frame(root) pinframe.grid(row=2, column=0, columnspan=3, padx=10, pady=10) buttons = { } @@ -69,7 +82,11 @@ def win_pinpad(): buttons["OK"].configure(state="disabled") + usernr.focus_set() + # Tkinter main loop root.mainloop() +def win_userselection(): + diff --git a/users.py b/users.py new file mode 100644 index 0000000..b733749 --- /dev/null +++ b/users.py @@ -0,0 +1,78 @@ +# Zeiterfassung + +# User bezogene Funktionen + +import os +import datetime +import time + +from definitions import userfolder, scriptpath, usersettingsfilename, photofilename, status_in, status_out + +# Benutzerklasse + +class user: + def __init__(self, name): + self.userfolder = scriptpath + "/" + userfolder + "/" + name + self.settingsfile = self.userfolder + "/" + usersettingsfilename + self.photofile = self.userfolder + "/" + photofilename + + def get_stamp_file(self): + year = str(datetime.datetime.now().year) + month = str(datetime.datetime.now().month) + completepath = self.userfolder + "/" + year + "-" + month + ".txt" + return completepath + + def timestamp(self): + filename = self.get_stamp_file() + 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") + file.close() + except FileNotFoundError: + # Fehlende Verzeichnisse anlegen + folder_path = os.path.dirname(filename) + os.makedirs(folder_path, exist_ok=True) + self.timestamp() + + def stamp_status(self): + try: + # Öffne die Datei im Lese-Modus ('r') + with open(self.get_stamp_file(), 'r') as file: + # Zähle die Zeilen + lines = file.readlines() + file.close() + except FileNotFoundError: + print(f"Die Datei {filename} wurde nicht gefunden.") + if len(lines)== 0: + print(f"Keine Einträge") + elif len(lines) % 2 == 0: + return (status_out) + else: + return (status_in) + + def last_2_timestmaps(self): + + with open(self.get_stamp_file(), 'r') as file: + lines = file.readlines() + file.close() + + if len(lines) > 2: + second_last_line = int(lines[-2]) + last_line = int(lines[-1]) + last_2_timestmaps = [second_last_line, last_line] + return last_2_timestmaps + + elif len(lines) == 1: + return int(lines[0]) + else: + return -1 + +# Benutzer auflisten +def list_users(user): + users = [d for d in os.listdir(userfolder) if os.path.isdir(os.path.join(userfolder, d))] + return users + diff --git a/users/test/2025-4.txt b/users/test/2025-4.txt new file mode 100644 index 0000000..e69de29