Anlage des Repos
This commit is contained in:
@@ -0,0 +1,282 @@
|
||||
#######################################################################################################################
|
||||
##### Import #####
|
||||
#######################################################################################################################
|
||||
from tkinter import*
|
||||
from datetime import datetime
|
||||
import cv2
|
||||
import numpy as np
|
||||
from pyzbar.pyzbar import decode
|
||||
import requests
|
||||
|
||||
|
||||
#######################################################################################################################
|
||||
##### Server-Options #####
|
||||
#######################################################################################################################
|
||||
WebServiceURL = "172.24.12.56"
|
||||
WebServiceBenutzerName = "a"
|
||||
WebServiceBenutzerPasswort = "b"
|
||||
WinLineMandant = "MEDT"
|
||||
WebServiceTemplateSTART = "Zeitnahme"
|
||||
WebServiceTemplateSTOP = "STOP"
|
||||
WebServiceType = "36"
|
||||
WebServiceActioncode = "1"
|
||||
|
||||
#######################################################################################################################
|
||||
##### WinLine-Options #####
|
||||
#######################################################################################################################
|
||||
Fehlzeitenstamm = "1"
|
||||
|
||||
#######################################################################################################################
|
||||
###### Frame ######
|
||||
#######################################################################################################################
|
||||
def BuildMainFrame():
|
||||
fenster = Tk()
|
||||
fenster.configure(bg="white")
|
||||
fenster.title("DD-Zeiterfassung")
|
||||
fenster.geometry("1024x768")
|
||||
|
||||
start_button = Button(fenster, text="Arbeitstag beginnen", fg="white", bg="green", command=Startbutton_action)
|
||||
exit_button = Button (fenster, text="Arbeitstag beenden ", fg="white", bg="red", command=Stopbutton_action)
|
||||
pause_button = Button (fenster, text="Pause beginnen", fg="white", bg="#b47a0e", command=PauseStartbutton_action)
|
||||
pause_end_button = Button (fenster, text="Pause beenden", fg="white", bg="#b47a0e", command=PauseStopbutton_action)
|
||||
anweisungs_label = Label(fenster, justify=CENTER, text="Wählen Sie eine Buchungsart")
|
||||
anweisungs_label2 = Label(fenster, bg="white", justify=CENTER, fg="black")
|
||||
|
||||
anweisungs_label.grid(row=0, column=2, pady=20, padx=10, sticky='ew')
|
||||
anweisungs_label2.grid(row=1, column=2, pady=20, padx=10, sticky='ew')
|
||||
start_button.grid(row=2, column=1, pady=20, padx=10, sticky='ew')
|
||||
exit_button.grid(row=2, column=2, pady=20, padx=10, sticky='ew')
|
||||
pause_button.grid(row=2, column=3, pady=20, padx=10, sticky='ew')
|
||||
pause_end_button.grid(row=2, column=4, pady=20, padx=10, sticky='ew')
|
||||
fenster.mainloop()
|
||||
|
||||
#######################################################################################################################
|
||||
##### Build Start-XML #####
|
||||
#######################################################################################################################
|
||||
def BuildXMLStart(RequestTyp, myData, Datumvon):
|
||||
if RequestTyp == 1:
|
||||
ArbeitsZeitPause = "0"
|
||||
else:
|
||||
ArbeitsZeitPause = "1"
|
||||
myDataListe = myData.split("-")
|
||||
AN_Gruppe_Ressource = myDataListe[0]
|
||||
XML_Start = ""
|
||||
XML_Start = XML_Start + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
XML_Start = XML_Start + "<MESOWebService TemplateType=\"" + WebServiceType + "\"" " Template=\"" + WebServiceTemplateSTART + "\">"
|
||||
XML_Start = XML_Start + "<" + WebServiceTemplateSTART + ">"
|
||||
#Location for WinLine fields
|
||||
XML_Start = XML_Start + "<Datumvon>" + Datumvon + "</Datumvon>"
|
||||
XML_Start = XML_Start + "<Fehlzeitenstamm>" + Fehlzeitenstamm + "</Fehlzeitenstamm>"
|
||||
XML_Start = XML_Start + "<ANGruppeRessource>" + AN_Gruppe_Ressource + "</ANGruppeRessource>"
|
||||
XML_Start = XML_Start + "<TypZeitartPause>" + ArbeitsZeitPause + "</TypZeitartPause>"
|
||||
XML_Start = XML_Start + "</" + WebServiceTemplateSTART + ">"
|
||||
XML_Start = XML_Start + "</MESOWebService>"
|
||||
return XML_Start
|
||||
#######################################################################################################################
|
||||
##### Build Start-URL #####
|
||||
#######################################################################################################################
|
||||
|
||||
def BuildURLStart(XML_Start):
|
||||
URL_Start = "http://%SERVER%/ewlservice/import?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Data=%DATA%"
|
||||
URL_Start = URL_Start.replace("%SERVER%", WebServiceURL)
|
||||
URL_Start = URL_Start.replace("%USER%", WebServiceBenutzerName)
|
||||
URL_Start = URL_Start.replace("%PASSWORD%", WebServiceBenutzerPasswort)
|
||||
URL_Start = URL_Start.replace("%COMPANY%", WinLineMandant)
|
||||
URL_Start = URL_Start.replace("%TYPE%", WebServiceType)
|
||||
URL_Start = URL_Start.replace("%VORLAGE%", WebServiceTemplateSTART)
|
||||
URL_Start = URL_Start.replace("%ACTIONCODE%", WebServiceActioncode)
|
||||
URL_Start = URL_Start.replace("%DATA%", XML_Start)
|
||||
return URL_Start
|
||||
|
||||
#######################################################################################################################
|
||||
##### Build Export-URL #####
|
||||
#######################################################################################################################
|
||||
def BuildURLExport(myData,RequestTyp):
|
||||
myDataListe = myData.split("-")
|
||||
Arbeitnehmernummer = myDataListe[0]
|
||||
if RequestTyp == 4:
|
||||
WebServiceTemplateExport = "ExportPause"
|
||||
Filter = "FilterTestP-" + Arbeitnehmernummer
|
||||
else:
|
||||
WebServiceTemplateExport = "Export"
|
||||
Filter = "FilterTest-" + Arbeitnehmernummer
|
||||
XMLExport = Filter
|
||||
URL_Export = "http://%SERVER%/ewlservice/export?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Key=%KEY%"
|
||||
URL_Export = URL_Export.replace("%SERVER%", WebServiceURL)
|
||||
URL_Export = URL_Export.replace("%USER%", WebServiceBenutzerName)
|
||||
URL_Export = URL_Export.replace("%PASSWORD%", WebServiceBenutzerPasswort)
|
||||
URL_Export = URL_Export.replace("%COMPANY%", WinLineMandant)
|
||||
URL_Export = URL_Export.replace("%TYPE%", WebServiceType)
|
||||
URL_Export = URL_Export.replace("%VORLAGE%", WebServiceTemplateExport)
|
||||
URL_Export = URL_Export.replace("%ACTIONCODE%", WebServiceActioncode)
|
||||
URL_Export = URL_Export.replace("%KEY%", XMLExport)
|
||||
URL_Export = URL_Export.replace("%FILTER%", Filter)
|
||||
print("URL_Export = " + URL_Export)
|
||||
HTTPRequest_Export = requests.post(URL_Export)
|
||||
IndexVonDatum = HTTPRequest_Export.text.find("<Datumvon>")
|
||||
v1 = IndexVonDatum + len("<Datumvon>")
|
||||
v2 = v1 + 19
|
||||
Datumvon = HTTPRequest_Export.text[v1:v2]
|
||||
return Datumvon
|
||||
|
||||
|
||||
#######################################################################################################################
|
||||
##### Build End-XML #####
|
||||
#######################################################################################################################
|
||||
def BuildXMLEnde(RequestTyp, myData, OrgDateTime, ActDateTime):
|
||||
|
||||
if RequestTyp == 2:
|
||||
ArbeitsZeitPause = "0"
|
||||
else:
|
||||
ArbeitsZeitPause = "1"
|
||||
|
||||
myDataListe = myData.split("-")
|
||||
AN_Gruppe_Ressource = myDataListe[0]
|
||||
|
||||
XML_Ende = ""
|
||||
XML_Ende = XML_Ende + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
|
||||
XML_Ende = XML_Ende + "<MESOWebService TemplateType=\"" + WebServiceType + "\"" " Template=\"" + WebServiceTemplateSTOP + "\">"
|
||||
XML_Ende = XML_Ende + "<" + WebServiceTemplateSTOP + ">"
|
||||
XML_Ende = XML_Ende + "<Datumvon>" + OrgDateTime + "</Datumvon>"
|
||||
XML_Ende = XML_Ende + "<Datumbis>" + ActDateTime + "</Datumbis>"
|
||||
XML_Ende = XML_Ende + "<Fehlzeitenstamm>" + Fehlzeitenstamm + "</Fehlzeitenstamm>"
|
||||
XML_Ende = XML_Ende + "<ANGruppeRessource>" + AN_Gruppe_Ressource + "</ANGruppeRessource>"
|
||||
XML_Ende = XML_Ende + "<TypZeitartPause>" + ArbeitsZeitPause + "</TypZeitartPause>"
|
||||
XML_Ende = XML_Ende + "<Importoption>" + "1" + "</Importoption>"
|
||||
XML_Ende = XML_Ende + "</" + WebServiceTemplateSTOP + ">"
|
||||
XML_Ende = XML_Ende + "</MESOWebService>"
|
||||
return XML_Ende
|
||||
|
||||
#######################################################################################################################
|
||||
##### Build End-URL #####
|
||||
#######################################################################################################################
|
||||
def BuildURLEnde(XML_Ende):
|
||||
|
||||
URL_Ende = "http://%SERVER%/ewlservice/import?User=%USER%&Password=%PASSWORD%&Company=%COMPANY%&Type=%TYPE%&Vorlage=%VORLAGE%&Actioncode=%ACTIONCODE%&byref=0&Data=%DATA%"
|
||||
URL_Ende = URL_Ende.replace("%SERVER%", WebServiceURL)
|
||||
URL_Ende = URL_Ende.replace("%USER%", WebServiceBenutzerName)
|
||||
URL_Ende = URL_Ende.replace("%PASSWORD%", WebServiceBenutzerPasswort)
|
||||
URL_Ende = URL_Ende.replace("%COMPANY%", WinLineMandant)
|
||||
URL_Ende = URL_Ende.replace("%TYPE%", WebServiceType)
|
||||
URL_Ende = URL_Ende.replace("%VORLAGE%", WebServiceTemplateSTOP)
|
||||
URL_Ende = URL_Ende.replace("%ACTIONCODE%", WebServiceActioncode)
|
||||
URL_Ende = URL_Ende.replace("%DATA%", XML_Ende)
|
||||
return URL_Ende
|
||||
|
||||
#######################################################################################################################
|
||||
###### WinLine Requests ######
|
||||
#######################################################################################################################
|
||||
|
||||
def MakeWinLineRequest(RequestTyp, myData, actDateTime):
|
||||
if RequestTyp == 1:
|
||||
XMLStart = BuildXMLStart(RequestTyp, myData, actDateTime)
|
||||
URLStart = BuildURLStart(XMLStart)
|
||||
HTTPRequest_Start = requests.post(URLStart)
|
||||
print(HTTPRequest_Start.text)
|
||||
|
||||
elif RequestTyp == 2:
|
||||
OrgDateTime = BuildURLExport(myData, RequestTyp)
|
||||
XMLEnde = BuildXMLEnde(RequestTyp, myData, OrgDateTime, actDateTime)
|
||||
URLEnde = BuildURLEnde(XMLEnde)
|
||||
HTTPRequest_Ende = requests.post(URLEnde)
|
||||
print(HTTPRequest_Ende.text)
|
||||
|
||||
elif RequestTyp == 3:
|
||||
XMLStart = BuildXMLStart(RequestTyp, myData, actDateTime)
|
||||
URLStart = BuildURLStart(XMLStart)
|
||||
HTTPRequest_Start = requests.post(URLStart)
|
||||
print(HTTPRequest_Start.text)
|
||||
|
||||
elif RequestTyp == 4:
|
||||
OrgDateTime = BuildURLExport(myData, RequestTyp)
|
||||
XMLEnde = BuildXMLEnde(RequestTyp, myData, OrgDateTime, actDateTime)
|
||||
URLEnde = BuildURLEnde(XMLEnde)
|
||||
HTTPRequest_Ende = requests.post(URLEnde)
|
||||
print(HTTPRequest_Ende.text)
|
||||
#######################################################################################################################
|
||||
##### Scanner ######
|
||||
#######################################################################################################################
|
||||
def Scanner():
|
||||
cap = cv2.VideoCapture(0)
|
||||
cap.set(3, 640)
|
||||
cap.set(4, 480)
|
||||
x = True
|
||||
myData = None
|
||||
while x == True:
|
||||
success, img = cap.read()
|
||||
for barcode in decode(img):
|
||||
myData = barcode.data.decode('utf-8')
|
||||
|
||||
cv2.imshow('Result', img)
|
||||
cv2.waitKey(1)
|
||||
if myData is not None:
|
||||
x = False
|
||||
return myData
|
||||
#######################################################################################################################
|
||||
###### Button-Action ######
|
||||
# Legende #
|
||||
# RequestTyp = 1 = Arbeitstag beginnen #
|
||||
# RequestTyp = 2 = Arbeitstag beenden #
|
||||
# RequestTyp = 3 = Pause beginnen #
|
||||
# RequestTyp = 4 = Pause beenden #
|
||||
#######################################################################################################################
|
||||
def Button_action(self, RequestTyp):
|
||||
myData = Scanner()
|
||||
myDataListe = myData.split("-")
|
||||
name = myDataListe[1]
|
||||
now = datetime.now()
|
||||
actDateTime = now.strftime('%Y-%m-%d') + "T" + now.strftime('%H:%M:%S')
|
||||
TimeWithoutsec = now.strftime('%H:%M:%S')
|
||||
MakeWinLineRequest(RequestTyp, myData, actDateTime)
|
||||
|
||||
if RequestTyp == 1:
|
||||
anweisungs_label = Label(text="Hallo, " + str(name))
|
||||
anweisungs_label.grid(row=0, column=2, sticky='ew')
|
||||
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
|
||||
anweisungs_label2.grid(row=1, column=2, sticky='ew')
|
||||
self.after(3000, LabelReset)
|
||||
|
||||
elif RequestTyp == 2:
|
||||
anweisungs_label = Label(text="Auf Wiedersehen, " + str(name))
|
||||
anweisungs_label.grid(row=0, column=2, sticky='ew')
|
||||
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
|
||||
anweisungs_label2.grid(row=1, column=2, sticky='ew')
|
||||
|
||||
elif RequestTyp == 3:
|
||||
anweisungs_label = Label(text="Eine schöne Pause, " + str(name))
|
||||
anweisungs_label.grid(row=0, column=2, sticky='ew')
|
||||
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
|
||||
anweisungs_label2.grid(row=1, column=2, sticky='ew')
|
||||
|
||||
elif RequestTyp == 4:
|
||||
anweisungs_label = Label(text="Willkommen zurück, " + str(name))
|
||||
anweisungs_label.grid(row=0, column=2, sticky='ew')
|
||||
anweisungs_label2 = Label(text="Es ist " + str(TimeWithoutsec) + " Uhr ")
|
||||
anweisungs_label2.grid(row=1, column=2, sticky='ew')
|
||||
|
||||
def LabelReset():
|
||||
anweisungs_label = Label(text="Hallo2!!")
|
||||
anweisungs_label.grid(row=0, column=2, sticky='ew')
|
||||
|
||||
#######################################################################################################################
|
||||
###### Diffrent-Buttons ######
|
||||
#######################################################################################################################
|
||||
def Startbutton_action():
|
||||
RequestTyp = 1
|
||||
Button_action(RequestTyp)
|
||||
#######################################################################################################################
|
||||
def Stopbutton_action():
|
||||
RequestTyp = 2
|
||||
Button_action(RequestTyp)
|
||||
#######################################################################################################################
|
||||
def PauseStartbutton_action():
|
||||
RequestTyp = 3
|
||||
Button_action(RequestTyp)
|
||||
#######################################################################################################################
|
||||
def PauseStopbutton_action():
|
||||
RequestTyp = 4
|
||||
Button_action(RequestTyp)
|
||||
#######################################################################################################################
|
||||
##### Main #####
|
||||
#######################################################################################################################
|
||||
BuildMainFrame()
|
||||
Reference in New Issue
Block a user