# 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("/home/pi/Desktop/Prezenta/Files/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 = '/home/pi/Desktop/Prezenta/Files/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('/home/pi/Desktop/Prezenta/Files/idmasa.txt', 'w') # cream fisier fp.write('Initial') # 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 = '/home/pi/Desktop/Prezenta/Files/prezenta.txt' #verificare existenta al doilea fisier isFile = os.path.isfile(path1)# verifica existenta fisierului #print(path) if not isFile: # print(path1)#nu se face nimic #else: fp = open('/home/pi/Desktop/Prezenta/Files/prezenta.txt', 'w')# daca nu exista cream fisierul fp.write("0")# scriem in fisier 0 default pentru Prezenta masa nu exista fp.close() #Inchidem fisierul # print("created file") # se termina partea de verificare a fisierelor #urmeaza sa citim fisierele pentru a crea cateva variabile # prima variabila este idmasa f = open("/home/pi/Desktop/Prezenta/Files/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 # avem o prima variabila idmasa care ne va ajuta sa identificam postul de lucru # urmeaza sa verificam ce-a de a doua variabila #cea care ne zice daca este configurat slotul pentru prezenta card f = open("/home/pi/Desktop/Prezenta/Files/prezenta.txt","r") # deschid fisierul test = f.readlines() # citesc toate liniile f.close() try: prezenta = test[0] except IndexError: prezenta = "0" # avem statusul petntru slotul de card numita prezenta #aceasta variabila poate sa fie 0 ( absent) sau 1 (prezent) #incepem sa definim primele functii din configurare def notokfunction(): # este functie pentru butonul cancel din formular # f = open("/home/pi/Desktop/Prezenta/Files/idmasa.txt","w") # deschidem fisierul idmasa si scriem ce am citit # L = idmasa # f.write(L) # f.close() msg1 = "Id masa a fost actualizat la: "+ idmasa +"" ## pregatim mesajul pentru fereastra pop up # f=open("/home/pi/Desktop/Prezenta/Files/prezenta.txt","w") # L1 = prezenta # f.write(L1) # f.close() 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() # End program if user closes window or # presses the OK button 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("/home/pi/Desktop/Prezenta/Files/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 # print(msg1) if prezenta == config2: # verificam cea de a doua variabila if config2 == "0": # daca e zero trimitem mesaj ca slotul e configurat ca absent msg2 = "Slotul Pentru cartela este configurat ca absent" # pregatim mesajul pentru fereastra pop up else: # daca e 1 trimitem mesaj ca slotul e configurat ca prezent msg2 = "Slotul pentru cartela este configurat ca prezent" # pregatim mesajul pentru fereastra pop up else: # daca variabila perzenta nu e egala cu config 2 f=open("/home/pi/Desktop/Prezenta/Files/prezenta.txt","w") # deschidem fisierul prezenta si scriem noua informatie L1 = config2 f.write(L1) # infrrmatia este luata din form f.close() if config2 == "0": # daca e 0 trimitem mesaj ca e 0 msg2 = "Slotul Pentru cartela este configurat ca absent" # mesaj ca e absent slotul pentru cartela else: msg2 = "Slotul pentru cartela este configurat ca prezent" # mesaj ca e prezent slotul de cartela # definim fereastra pentru ok asemena cu functia notok layout = [[sg.Text(msg1)], [sg.Text(msg2)],[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)], [psg.Text('Card Prezenta(0 nu, 1 da)', size=(20,1)), sg.Radio(" 0","press", key="0", size=(4, 0)), sg.Radio(" 1", "press", key="1",size=(4, 0))], [psg.Text('Se trece 0 in cazul in care nu exista slot de cartela si 1 in cazul in care slotul exista', size=(70,1), font=('Arial Bold', 12))], [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 for key in ("0", "1"): window[key].widget.configure(indicatoron=False) 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 config2 = prezenta # ramane egal cu prezenta if values['0'] == True: # verificam valorile pentru 1 sau 0 config2 = "0" # daca e bifat 0 scriem 0 in variabila config if values['1'] == True: config2 = "1" # daca e bifat 1 scriem 1 in fisierul config # 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")