Arbeitszeiterfassung mit Django

Du hast eine Idee für ein Projekt?
Antworten
Karlirex
User
Beiträge: 126
Registriert: Dienstag 18. August 2020, 18:27

Hallo,
bevor es zum Projekt geht, vielleicht ein bisschen zu mir.
ich programmiere nebenher immer mal wieder. Mehr aus Interesse als aus richtigem Nutzen. Für ein Studium habe ich angefangen mit Grafiken und Rechnungen mit numpy/matplotlib. Da sich bei mir auf der Arbeit ein paar Dinge ergaben, konnte ich ein auf PyQt5/MongoDB basierendes Framework testen und mich da ein wenig einarbeiten (Datenmanagement) und bin so immer weiter in verschiedene Programmieraufgaben gefallen.
Für mich habe ich dann einmal eine Art "Wiki/Nachschlage-Datenbank" mittels Flask und SQLite geschrieben und bin so auch ein bisschen in Richtung "Webentwicklung" gekommen.
Aus diesem Wiki ergab sich in Weiterentwicklung dann eine Anbindung einer migrierten Access-Datenbank (jetzt MySQL) und entsprechendem Frontend. Das ganze ist auch mit einer "Nutzer-Datenbanktabelle" verknüpft, um einen "bösen" Schreibzugriff zu vermeiden.
Wir ihr seht, sind die Projekte mit einem Arbeitshintergrund, aber immer komplett privat ohne "relevante" Daten.
Die Projekte konnte ich dank Google, üben und auch zu sehr großen Teilen durch dieses Forum bewältigen :D , danke dafür.
Aus diesem Grund möchte ich nun auch mein aktuelles und wahrscheinlich erstes "größeres" Projekt hier direkt von vorne vorstellen.

Der aktuelle Arbeitshintergrund und Anlass ist eine "Zeiterfassung" mit Stift und Papier, die jemand irgendwann mal kontrolliert. Dies geht doch bestimmt eleganter für mich zumindest.
Das Ganze soll wieder ähnlich wie mein "Wiki" webbasiert sein und da ich das Flask-Framework "schon kenne" und immer wieder lese, dass Django das "bessere Flask" ist, habe ich mich für eine Umsetzung mittels Django als Backend entschieden, Frontend bleibt Raw-HTML/Raw-JS(falls JS nötig).

Kommen wir also zur Idee:
Grundlegend soll die Arbeitszeit eines Nutzers erfasst , Minus-/Pluszeit erfasst und addiert werden, Möglichkeit auf Angabe von Fehltagen (Krankheit/Urlaub, Abbauzeit), Abbau von Pluszeit, Marker für zu viel Minus-/Pluszeit (bspw. ab 20h) und eine Adminansicht für die Bestätigung von Fehltagen/Kommentaren und Sicht auf die jeweilige Zeit ohne Login von Nutzerdaten.

Daraus ergibt sich für mich:
- eine Welcomeseite mit Login/Registierungsverweis und einem "tollen" Startbild
- es soll eine Nutzerregistrierung und Nutzerlogin geben -> mit Password-Hash (hier stecke ich mit Django schon ein bisschen fest, da die "Forms" noch etwas star auf mich wirken und ich die Hasherzeugung noch nicht klar gefunden habe (anders als bei Flask direkt in der view dazu)
- der eingeloggte Nutzer soll die Möglichkeit haben, den Tag zu beginnen (erster Timestamp in Datenbank zu dem Nutzer) -> per Button "Anmelden/Beginnen"
- der eingeloggte Nutzer soll die Möglichkeit haben, den Tag zu beenden (zweiter Timestamp in Datenbank zu dem Nutzer) -> per Button "Abmelden/Beenden"
- aus den Timestamps wird die vollzogene Arbeitszeit errechnet (Ende - Start - Pause) und in die Datenbank geschrieben
- aus der Arbeitszeit und der Sollarbeitszeit wird +/- Zeit errechnet und addiert.
- Eingabe von Grund für Fehlzeit (Krankheit/Urlaub, Abbauzeit) -> ggf. bei fehlender Arbeitszeit für abgelaufenes Datum auf Anfrage als Fenster (Es fehlt Zeiteintragung für x Tag/e, Grundangabe)
- Bei Grundangabe Info in der Adminansicht zu dem Nutzer -> damit Bestätigung erfolgen kann
- Ausgabe einer Monatstabelle per Excel (zum Drucken, wir sind ja doch bei Stift und Papier)

Mir ist bewusst, dass ein solches Projekt "kommerziell" zick mal schon umgesetzt ist in verschiedensten Sprachen, aber es soll ja um den Spaß und Lerneffekt gehen.
Ich denke persönlich wird die Ansicht des Adminbereichs und das Sicherstellen das jeder Nutzer nur "seine" Daten bearbeitet am schwierigsten, neben dem anderen Framework an sich :D

Aktuell steht eine Djangoapp und eine "User"-Datenbanktabelle, allerdings noch ohne Password und ohne direkte Webansicht dazu.

Meinungen, Ideen, Feedback etc. zum Projekt gerne hier lassen.

Beste Grüße
Karlirex
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Karlirex: Die Beschreibung klingt ein bisschen so, als wenn die An/Abmeldezeiten nur beim Client erfasst werden. Das wäre mir zu ”gefährlich” das man sich anmeldet und dann aus irgendwelchen Gründen der Browser geschlossen wird und damit dieser Zeitpunkt verloren gegangen ist. Ich würde mindestens die Anmeldezeit (oder NULL) pro Benutzer in der Datenbank speichern. Wenn nicht sogar die An- und Abmeldezeiten alle in einer Tabelle protokollieren, und daraus dann die Zeiten berechnen.
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
Antworten