# config py este gandit pentru a verifica configurarile raspberiului # verifica hostname-ul si il afiseaza # verifica ce nume are masa si o afiseaza # verifica daca masa este configurata cu sistem de prezenta operator # verifica daca imprimanta este instalata corespunzator import os, time, socket, cups, subprocess import FreeSimpleGUI as psg import FreeSimpleGUI as sg from multiprocessing import Process # import socket host = socket.gethostname() # luam numele de host def set_printer(): # importam codul python pentru printer print("Cheking printer") # acest segment acceseaza fisierul local idmas.txt si verifica ce informatii sunt acolo # in mod normal acolo salvam numele mesei care trebuie sa corespunda cu numele imprimantei f = open("./data/idmasa.txt","r") # deschid fisierul in care am salvat numele printerului test = f.readlines() # citesc toate liniile f.close() # in cazul in care avem fisier corupt il resetam la original try: idmasa = test[0] except IndexError: idmasa = "0" print(idmasa) # citim lista de printere disponibila conn = cups.Connection () printers = conn.getPrinters () printer_stat=0 for printer in printers: print (printer, printers[printer]["device-uri"]) if printer == idmasa: printer_stat = 1 if printer_stat == 1: print("Printer is Ok") else: print("Printer is not ok") p_Name = idmasa print("Installing the new printer") time.sleep(2) cmd = "sudo /usr/sbin/lpadmin -p "+idmasa+" -E -v usb://CITIZEN/CT-S310II?serial=00000000 -m CTS310II.ppd" os.popen(cmd) time.sleep(2) print("Printer Was Installed") conn = cups.Connection() printers = conn.getPrinters() for printer in printers: print(printer, printers[printer]["device-uri"]) time.sleep(1) print("Printerwas seted to "+idmasa+"") print("Test printer App Closed") # partea acesata se ocupa de verificarea existentei celor doua fisiere pentru a nu avea erori # verificam daca exista fisierul care identifica masa path = './data/idmasa.txt' isFile = os.path.isfile(path) #verifica existenta fisierului prin bolean Tru/false if not isFile: # print(path)# nu se face nimic pentru ca exista fisierul #else: fp = open('./data/idmasa.txt', 'w') # cream fisier fp.write('no_config') # scriem in fisier prima line pentru a avea un punct de pornire fp.close() # inchidem fisierul # print("created file") # verificam fisierul de prezenta pe baza acestuia stim daca locul de munca este configurat cu card de prezenta sau nu path1 = './data/idmasa.txt' #verificare existenta al doilea fisier isFile = os.path.isfile(path1)# verifica existenta fisierului #print(path) #urmeaza sa citim fisierele pentru a crea cateva variabile # prima variabila este idmasa f = open("./data/idmasa.txt","r") # deschid fisierul name = f.readlines() # citesc toate liniile f.close() # inchid fisierul try: idmasa = name[0]# se verifica daca exista informatie in text except IndexError: idmasa = "Initial"# daca nu exista informatie in text setam variabila #incepem sa definim primele functii din configurare def notokfunction(): # este functie pentru butonul cancel din formular msg1 = "Id masa a fost actualizat la: "+ idmasa +"" ## pregatim mesajul pentru fereastra pop up msg2 = "Slotul Pentru cartela este configurat by default" # pregatim mesajul pentru fereastra pop up layout = [[sg.Text(msg1)], [sg.Text(msg2)], [sg.Button("Ok")]] window = sg.Window("Configurari", layout) while True: event, values = window.read() if event == "Ok" or event == sg.WIN_CLOSED: break window.close() #am inchis functia notok #functia pentru butonul ok din formular def okfunction(): if idmasa == config1: # variabila config 1 este preluata din formular msg1 = "Masa este setat corect: "+ idmasa +"" # se printeaza mesaj ca nu se actualizeaza id de masa # print(msg1) else: f = open("./data/idmasa.txt","w") # deschidem fisierul config in mod scriere L = config1 f.write(L) # actualizam linia cu noua valuare din config f.close() # inchidem fisierul msg1 = "Id masa a fost actualizat la: "+ config1 +"" # pregatim mesajul pentru fereastra pop up # # definim fereastra pentru ok asemena cu functia notok layout = [[sg.Text(msg1)], [sg.Output(size=(40, 15))], [sg.Button("Ok")]] window = sg.Window("Configurari", layout) while True: event, values = window.read() # End program if user closes window or # presses the OK button if event == "Ok" or event == sg.WIN_CLOSED: break if nook == 1: notokfunction() time.sleep(2) #asteptam 10 secunde si pornim functia de setare printer set_printer() #verificam daca hostul corespunde cu ce este in formular time.sleep(2) if host == host_conf: print("Host name ok") else: print("Host name not ok") time.sleep(2) print("Update Hostname" ) cmd = "sudo hostnamectl set-hostname "+host_conf+"" # comanda sa schimbam hostnameul os.popen(cmd) print("Os hostname updated") time.sleep(2) print("System will reboot in 5 seconds") time.sleep(1) print("System will reboot in 4 seconds") time.sleep(1) print("System will reboot in 3 seconds") time.sleep(1) print("System will reboot in 2 seconds") time.sleep(1) print("System will reboot in 1 seconds") time.sleep(3) window.close() # incepem initializarea feresteri ptrincipale gui sg.theme('dark grey 9') #alegem tema dark grey psg.set_options(font=('Arial Bold', 16)) # setam fontul #setarile de layout layout = [ [sg.Text('Host_Name', size=(20,1)),sg.InputText(default_text= ""+host+"" , enable_events=False)], [sg.Text('Loc De Munca', size=(20,1)),sg.InputText(default_text=""+idmasa+"", enable_events=False)], [sg.Button('Ok'), sg.Button('Cancel')] ] # setam window window = psg.Window('Form', layout, size=(800,190),finalize=True) # citim si configuram widgetul pentru butoanele 1 si 0 din randul while True: nook = 0 # cream o variabila care sa ne spuna daca a fost setao butonul ok sau nu event, values = window.read() # citim valorile intr-o lista numita values host_conf= values[0] # atribuim primul item din lista variabilei Host config # aceasta variabila o vom folosi pentru a scrie sa nu noul hostname print(host_conf) if event == sg.WIN_CLOSED or event == 'Cancel': nook = 1 # daca se da cancel setam variabila nook la 1 break config1 = values[1] # atribuim lui config 1 valuarea din campul Loc de munca care a fost scris cu Id masa # pornim functi care scrie valorile config in fisiere ok function okfunction() # si inchidem formularul # semnalam ca s-a terminat afisarea formularului break #inchidem formularul window.close() # daca variabila nook este 1 time.sleep(2) os.system("sudo reboot now")