From 900e3cfd5aa4a02097810eacaa478541ba0ae5c5 Mon Sep 17 00:00:00 2001 From: alexander Date: Wed, 9 Apr 2025 13:39:35 +0200 Subject: [PATCH] Erste UI Expoerimente --- __pycache__/definitions.cpython-311.pyc | Bin 350 -> 350 bytes __pycache__/jsonhandler.cpython-311.pyc | Bin 1111 -> 1046 bytes __pycache__/timestamping.cpython-311.pyc | Bin 3938 -> 5415 bytes __pycache__/ui.cpython-311.pyc | Bin 0 -> 2829 bytes __pycache__/users.cpython-311.pyc | Bin 2056 -> 2582 bytes definitions.py | 3 +- jsonhandler.py | 18 +++++-- test.json | 22 ++++++++ testing ttk.py | 29 ++++++++++ timestamping.py | 33 ++++++++---- ui.py | 46 ++++++++++++++++ users.py | 11 ++-- users/testuser/2025-4.txt | 65 +++++++++++++++++++++++ users/testuser/settings.json | 22 +++++++- users/testuser2/2025-4.txt | 12 +++++ zeiterfassung.py | 34 +++--------- 16 files changed, 248 insertions(+), 47 deletions(-) create mode 100644 __pycache__/ui.cpython-311.pyc create mode 100644 test.json create mode 100644 testing ttk.py create mode 100644 ui.py diff --git a/__pycache__/definitions.cpython-311.pyc b/__pycache__/definitions.cpython-311.pyc index 6e45d15c4c96d996dc4586e268a56a621252efba..a1630376026eaf9ddd152194a2b6d38bd8cccbaa 100644 GIT binary patch delta 22 ccmcb|bdQO5IWI340}$LX`If$SBX1xh08Ft4(*OVf delta 22 ccmcb|bdQO5IWI340}!x1{F1(VBX1xh07`oXrT_o{ diff --git a/__pycache__/jsonhandler.cpython-311.pyc b/__pycache__/jsonhandler.cpython-311.pyc index ee3f40f89980ec868198b1995cea7cccd8f43ebc..148655fc4dd28c64cab316ce996077e84f98f7f9 100644 GIT binary patch delta 233 zcmcc4F^z+7IWI340}$LX`Ig?uG?7n2O$x}H&XB^8!kEJl#gM|(!Vtxn!VDytQW%37 zG+ADPl>2Q=RAgl32C}3!w==pkdawYQMXW&L7E4NLZhD-s2YF#>V11(5i_%*e?2fro*Sr-2&;KWI$WVNquh0ZIV?G8ZwZ delta 311 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 delta 1681 zcmah}Ur1Y57(eI!$-PPLO-zh2YHZ^4+D6c73$}BcTUsr;t;#5aT45#gUTsd#|hD9B2hS zK<5^i_t-J803jFykUUk5A<`kLtqq_d2n=)3s^qd|SC?M4UZN^`*9Qj)KXBHqe5_UZa+ltrtcNcj?!!KKr7E!08aZN9?(^?!!RLCb#G;V}g z zUGhzVG)p>X@I<@QRK^g<2{+*`drk9Tnosd6n!m16Sp{+AADosIEFHqw@F{TeFiaW!HeZ zYom8b#@<6rh%ipLr05dK|qU3iV&)R1)q z`G^&wUcZvn0u&%n21$pab}6wgWh|%+^(kkQY_Kz!N1Za@hJ^8Qf`SP z5?Wlvf62blkYzug5k0Q57~RR=vUO(8sHSomMs<2;NS2dUO>}W)UPJRyZ2@%>%~8_z zG{n=6_eJ;8&_<1WX&C?Qs9$Wa0FG~8h8vQ+0u{&mTp zeLL5)cD^XJm!$TB`EE&`&qhBP%?{>T)`p6bQj(N{`EClf<&z(zucdG5*%vccSFf%M zNrReA{Ir_h;D>}|R9KKK(R}0!?X?&^>O%#V`OT)88$81qVB@q?Ox5Dm^ zrPC6TsXNBr=X!;&VXrW;bH4b`n(fwFqAXh`XHYC+9J~%FL=+|rV6S`Pe8`Guy+qv< zXabe(sx}#oM~&!ATsP~fSx?McV{W_Y{3SrG)PvTaKg5?~GwR&5){lD0FHIHwWBifl n__z#PD_{?TR!DCA9{2=E3eg^TT#)Y40qo#lJvqt$fI0I&$6bb` diff --git a/__pycache__/ui.cpython-311.pyc b/__pycache__/ui.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db35bf96df21e27081c68ff5e716cd122d0402b4 GIT binary patch literal 2829 zcmb6bT}vES^v=$w?zrpf>Z%E;wlU4d;u@N^nuw*Pr6B}qNuaQ_ETeN>M`vc2nc4Wk z+DHl11R*}O)JLBZLk#$shyH-{ZAM01E(k)&gKw6UKIEzA&N{lQ7TUwvGxy$e&iy!_ z`?RU45dnPr-QW399-%+zB!tM};LR8eenl!$866o+mSN~PqDSu1FRQaz4!)eu8hn-y zcsz`StPqR^T{NVuWHe+Og1M+S8qsVN#?k|nmDL8IO)7f_r5pF@foX=s6l@i8rDD$3 z%)E|ag}E{cly#hG_%s^Wwv{{{E6k=Nq**Bzv8m=94VE3nD3X|t&Eu&J8Z9bzuw`f_ z&P`~*RSY~HzK)&=FGno=-ZV4xr4G;#9J+o8W#$QRo*!}RXAE-aK8Nt%^;BkFKw!`5 z;6~O(2WBCZQD-Ba=Y#Qb>3_1_uKkCF5`0e-Td);l(_EA@ENurCd}A-+B# zk`F{id}+iD@eSMojUPo0OsGkMnEMT$Tpx2&M{-X<=sEnVu)vg=HEN(!Q0r@mC*V7D z|3jejld%dr)kJG3N#pPg$(o3)kz`eNgF6{{d8CLczYu}_Yi@9?b>c;A8GV7if3?6l zt;aHD)@iGmow)ma6mBWZL*1&s=>lJyw^JZhg)&p-%6vIe<|ZPl_<-4voh9GbG!@TV%3v01s-Q$tks75#BlXfyw|0>_4#!kzFG!5oc zpvKkajl{{_otm4hHJ?&~g|blp8U~dkYRh~RLJN`Q-@$u{v$X2HSFJPY*3q|2HxWM` z7?`~_FtGm$6d|wq8BKL2i7<(^{G<~UkA2!}>IyG)0(JbGcY)L=K^Z~0gm8U7alBv{P=qWRQI<>zSP5Cw#1^%Z)dGYtv->om z;9?x~7@crMMV;HHnVfDR5oel2?oJcl(HtEUxo8#gmSW^+CnE81b`M*&RxpW_$58wn zYmSJ}vutf1TlBg_p3%&SLau62!fK{NSmh`-ntG8 z0im9-i|}$Ny79zv>EX=s%;L=oC;v41n9#J=yQWEHwe5Pu5F8J zThTnO+vmDnt~*#uZgI)g57%s$OL|nD~ZmX#HFpoB`~-byo;>KwgKmI(HM~^78}j8LS01WJvB%Lz(bd+qt4mQ&>h+~w zSL%hX^Emb>wsOytF8I;~SGrJ#ON?}g^_xRlSO+z_k58zZrq*?wIc>sRtK z{Ypu*XqzEX6;EiU=0JeiM0BPhdaz~nQK!+kwP=ke^3lI2_~%va-?WMoo(7CvjV;<& z13y2jW=oiPMnNsCx*_hNq#I%drQCX~pbKt2 f?x7*~EUci5Zap3d0`utsIwH*}1_I+W2`u*yZGm>Z literal 0 HcmV?d00001 diff --git a/__pycache__/users.cpython-311.pyc b/__pycache__/users.cpython-311.pyc index 2b379dbc0e6109fae93e31958a00499e46249c46..1c084e8a608481a80a84e1a8ad93fe54c022e51b 100644 GIT binary patch delta 688 zcmZWlO=}ZT6n*#2XA);pOtq#GJH`l&&c-x|j^N6L3lWOC3AiYIu_mUWz8N*C6ik0!`H|AGtAyt_1<~F^9EK0BqB z3(Q=g&vo><{r;Ve$ssI20 delta 239 zcmbOx(jmaNoR^o20SF`?en}5zp2#QRUlEVPbb@R zT;-7hnq8~{BpMi=PFCPFk-x=Kl9`)Y1QNf+osycCnU`6TnV(l&Bn%WOQkh)DsidY2 vWHJJAaTbvHz|6?V_<@6gk*k3d1aB~KH-O>fjht38OpIn97%+(<0iaF*;9fTj diff --git a/definitions.py b/definitions.py index c61471d..e132721 100644 --- a/definitions.py +++ b/definitions.py @@ -6,4 +6,5 @@ userfolder = "users" settingsfolder = "settings" usersettingsfilename = "settings.json" program_name = "Zeiterfassung" -program_version = "Development" \ No newline at end of file +program_version = "Development" + diff --git a/jsonhandler.py b/jsonhandler.py index 2bd4f65..09fba28 100644 --- a/jsonhandler.py +++ b/jsonhandler.py @@ -1,20 +1,28 @@ # Zeiterfassung - # JSON Handling # Imports import json -from users import * -from definitions import * - -# Datenstrutur: +# Datenstruktur: # user: Benutzername # name: Vollständiger Name # password: gehashtes Passwort +# Montatsspezifische Informationen: +# Gültigkeitsdatum, ab wann gülitg +# +# monday: Stunden +# tuesday: Stunden +# wednesday: Stunden +# thursday: Stunden +# friday: Stunden +# saturday: Stunden +# sunday: Stunden +# pto: Tage pro Jahr + def load_settings(filename): with open(filename) as json_file: diff --git a/test.json b/test.json new file mode 100644 index 0000000..f304e61 --- /dev/null +++ b/test.json @@ -0,0 +1,22 @@ +{ + "2024-04-01": { + "0": "0", + "1": "8", + "2": "8", + "3": "8", + "4": "8", + "5": "8", + "6": "0", + "vacation": "30" + }, + "2024-04-07": { + "0": "0", + "1": "6", + "2": "6", + "3": "6", + "4": "8", + "5": "6", + "6": "0", + "vacation": "28" + } +} \ No newline at end of file diff --git a/testing ttk.py b/testing ttk.py new file mode 100644 index 0000000..1431c0d --- /dev/null +++ b/testing ttk.py @@ -0,0 +1,29 @@ +import tkinter as tk +from tkinter import ttk + +# Funktion, die die Farben des Buttons ändert +def aendere_farbe(button, bg_farbe, fg_farbe): + # Ändern der Hintergrund- und Textfarbe des Buttons + button.configure(bg=bg_farbe, fg=fg_farbe) + +# Erstellen des Hauptfensters +root = tk.Tk() +root.title("Buttons mit unterschiedlichen Farben") + +# Liste von Button-Beschriftungen und den gewünschten Farben +button_info = [ + ('Button 1', 'green', 'white'), + ('Button 2', 'blue', 'yellow'), + ('Button 3', 'red', 'black') +] + +# Erstellen der Buttons aus der Liste +buttons = [] +for text, bg, fg in button_info: + # Einen Button erstellen und die Farben ändern + button = tk.Button(root, text=text, command=lambda b=button, bg=bg, fg=fg: aendere_farbe(b, bg, fg)) + button.pack(pady=10) + buttons.append(button) + +# Hauptloop starten +root.mainloop() diff --git a/timestamping.py b/timestamping.py index ce0480b..6ed1981 100644 --- a/timestamping.py +++ b/timestamping.py @@ -15,6 +15,7 @@ def append_timestamp(filename): 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) @@ -28,7 +29,9 @@ def len_timestamps(filename): with open(filename, 'r') as file: # Zähle die Zeilen lines = file.readlines() - return len(lines) + file.close() + print(len(lines)) + return len(lines) except FileNotFoundError: print(f"Die Datei {filename} wurde nicht gefunden.") return 0 @@ -50,23 +53,33 @@ def overview(filename): with open(filename, 'r') as file: lines = file.readlines() - in_times = [] - out_times = [] + timelist = [[] for i in range(3)] for i in range(0, len(lines)): if (i + 1) % 2 == 0: - out_times.append(lines[i]) + timelist[1].append(lines[i]) else: - in_times.append(lines[i]) - if len(in_times) > len(out_times): - out_times.append("") - for i in range(0, len(in_times)): - print(convert_timestamp(in_times[i], "%d.%m.%Y %H:%M") + " - " + convert_timestamp(out_times[i], "%H:%M")) + timelist[0].append(lines[i]) + if len(timelist[0]) > len(timelist[1]): + timelist[1].append("") + for i in range(0, len(timelist[0])): + timelist[2].append(int(timelist[1][i])-int(timelist[0][i])) + + for i in range(0, len(timelist[0])): + print(convert_timestamp(timelist[0][i], "%d.%m.%Y %H:%M") + " - " + convert_timestamp(timelist[1][i], "%d.%m.%Y %H:%M") + " Dauer: " + convert_duration(timelist[2][i])) # Timestamp konvertieren def convert_timestamp(timestamp, format): try: return str(datetime.datetime.fromtimestamp(int(timestamp)).strftime(format)) except: - return ("...") \ No newline at end of file + return ("...") + +#Zeitdauerdarstellung berechnen +def convert_duration(duration): + hours = int(duration / 3600) + minutes = int((duration - hours * 3600) / 60) + seconds = int(duration - hours * 3600 - minutes * 60) + + return(f"{hours:02d}" + ":" + f"{minutes:02d}" + ":" + f"{seconds:02d}") \ No newline at end of file diff --git a/ui.py b/ui.py new file mode 100644 index 0000000..18ce463 --- /dev/null +++ b/ui.py @@ -0,0 +1,46 @@ +# Zeiterfassung +# UI +from wx.lib.agw.aui import aero_up_single + +from definitions import * + +import tkinter as tk +from tkinter import ttk +from tkinter import messagebox + +from timestamping import append_timestamp, len_timestamps +from users import determine_filename + + +def ui_stempeln(button, label): + append_timestamp(determine_filename(label)) + global buttons + if len_timestamps(determine_filename(label)) % 2 == 0: + buttons[button].configure(relief="raised", bg="red") + else: + buttons[button].configure(relief="sunken", bg="green") + +def stempeln(userlist): + stempeln = tk.Tk() + stempeln.title(program_name + " " + program_version) + stempeln.geometry("600x400") + stempeln.minsize(width=200, height=200) + + global buttons + buttons = [ ] + button_index = 0 + windowSize = stempeln.winfo_height() + + + for i in userlist: + buttonheight = int(windowSize / len(userlist) - 10) + button = tk.Button(stempeln, text=i, height=buttonheight, command=lambda b=button_index, label=i: ui_stempeln(b, label)) + if len_timestamps(determine_filename(i)) % 2 == 0: + button.configure(relief="raised", bg ="red") + else: + button.configure(relief="sunken", bg="green") + button.pack(fill="x", pady=5) + buttons.append(button) + button_index+=1 + + stempeln.mainloop() \ No newline at end of file diff --git a/users.py b/users.py index d9406d2..0aedf62 100644 --- a/users.py +++ b/users.py @@ -2,7 +2,6 @@ # Benutzerfunktionen import os -import time import datetime from definitions import * @@ -22,7 +21,13 @@ def determine_filename(user, type="stamping"): completepath = scriptpath() + "/" + userfolder +"/" + user + "/" + usersettingsfilename return completepath +# Benutzerliste anzeigen +def printUserList(): + userlist = list_users(scriptpath() + "/" + userfolder) + for i in range(0, len(userlist)): + print(str(i + 1) + ": " + str(userlist[i])) + return(userlist) + # Installationsverzeichnis bestimmen def scriptpath(): - - return os.path.dirname(os.path.abspath(__file__)) \ No newline at end of file + return os.path.dirname(os.path.abspath(__file__)) diff --git a/users/testuser/2025-4.txt b/users/testuser/2025-4.txt index 1fb89f3..0f2a1af 100644 --- a/users/testuser/2025-4.txt +++ b/users/testuser/2025-4.txt @@ -7,3 +7,68 @@ 1743967346 1744024713 1744024974 +1744107474 +1744194019 +1744194047 +1744194048 +1744194049 +1744194602 +1744194612 +1744194613 +1744194613 +1744194614 +1744194709 +1744196085 +1744196089 +1744196089 +1744196120 +1744196189 +1744196243 +1744196307 +1744196315 +1744196324 +1744196333 +1744196334 +1744196335 +1744196337 +1744196338 +1744196339 +1744196340 +1744196342 +1744196343 +1744196344 +1744196345 +1744196346 +1744196500 +1744196505 +1744196506 +1744196507 +1744196663 +1744196665 +1744196667 +1744196667 +1744196719 +1744196721 +1744196991 +1744197071 +1744197205 +1744197211 +1744197213 +1744197215 +1744197217 +1744197218 +1744197219 +1744197253 +1744197300 +1744197301 +1744197302 +1744197303 +1744197765 +1744197766 +1744197769 +1744197868 +1744197871 +1744198070 +1744198071 +1744198392 +1744198393 diff --git a/users/testuser/settings.json b/users/testuser/settings.json index 6d4dc88..b6c1df5 100644 --- a/users/testuser/settings.json +++ b/users/testuser/settings.json @@ -1,5 +1,25 @@ { "username": "testuser", "name": "Der neue Tester", - "password": "123456789" + "password": "123456789", + "2024-04-01": { + "0": "0", + "1": "8", + "2": "8", + "3": "8", + "4": "8", + "5": "8", + "6": "0", + "vacation": "30" + }, + "2024-04-07": { + "0": "0", + "1": "6", + "2": "6", + "3": "6", + "4": "8", + "5": "6", + "6": "0", + "vacation": "28" + } } \ No newline at end of file diff --git a/users/testuser2/2025-4.txt b/users/testuser2/2025-4.txt index 3502cbb..e1a06f5 100644 --- a/users/testuser2/2025-4.txt +++ b/users/testuser2/2025-4.txt @@ -6,3 +6,15 @@ 1744018696 1744100316 1744100330 +1744194603 +1744196086 +1744196347 +1744196348 +1744196349 +1744196350 +1744196350 +1744196351 +1744197304 +1744197306 +1744197767 +1744197768 diff --git a/zeiterfassung.py b/zeiterfassung.py index 074b0ad..1d25594 100644 --- a/zeiterfassung.py +++ b/zeiterfassung.py @@ -3,31 +3,28 @@ # Zeiterfassung # Bibliotheksimports -import time -import datetime -import os from timestamping import * from users import * from jsonhandler import * from definitions import * +from ui import * # Funktionen -def printUserList(): - userlist = list_users(scriptpath() + "/" + userfolder) - for i in range(0, len(userlist)): - print(str(i + 1) + ": " + str(userlist[i])) - return(userlist) - # Hauptfunktion def main(): + + userList = printUserList() + stempeln(userList) + exit() + +# Konsole while True: print(program_name + " " + str(program_version)) print("Welche Funktion soll ausgeführt werden?") print("1: Stempeln") print("2: Stempelübersicht anzeigen") - print("3: Einstellungen ändern") print("0: Beenden") question = int(input("Geben Sie Ihre Antwort ein: ")) @@ -42,23 +39,6 @@ def main(): print("Zustand: " + stempel_zustand(determine_filename(userlist[int(which_user) -1]))) overview(determine_filename(userlist[int(which_user) - 1])) - elif question == 3: - userlist = printUserList() - which_user = input("Für welchen Benutzer sollen die Einstellungen geändert werden? ") - selected_user = userlist[int(which_user) - 1] - print("Benutzereinstellungen für Benutzer " + str(selected_user) + ":") - settings = load_settings(determine_filename(selected_user, "settings")) - for x in settings: - print(x + ": " + settings[x]) - setting_to_change = input("Welche Einstellung soll geändert werden? ") - if setting_to_change in settings: - new_value = input("Wie ist der neue Wert? ") - settings[setting_to_change] = new_value - for x in settings: - print(x + ": " + settings[x]) - print("Speicher Einstellungen") - write_settings(determine_filename(selected_user, type="settings"), settings) - elif question == 0: exit() else: