From 224ded90151298e3ab5d4fd5f3bdd30e92bde9e6 Mon Sep 17 00:00:00 2001 From: Amal Prasad Date: Thu, 26 May 2022 22:52:36 +0530 Subject: [PATCH 01/22] Student Search Portion Done --- Data Records/Student.txt | 1 + Data Records/Vehicle.txt | 3 +- update.py => Updations.py | 0 p.py => connection.py | 0 gui.py | 403 ++++++++++++++++++++++++++++++++++++-- 5 files changed, 386 insertions(+), 21 deletions(-) create mode 100644 Data Records/Student.txt rename update.py => Updations.py (100%) rename p.py => connection.py (100%) diff --git a/Data Records/Student.txt b/Data Records/Student.txt new file mode 100644 index 0000000..c7861cc --- /dev/null +++ b/Data Records/Student.txt @@ -0,0 +1 @@ +2022-05-26|9:00pm|AMAL|4DM19IS007|7306557354|HOME|IN diff --git a/Data Records/Vehicle.txt b/Data Records/Vehicle.txt index 74e6403..b20d09d 100644 --- a/Data Records/Vehicle.txt +++ b/Data Records/Vehicle.txt @@ -1,4 +1,5 @@ 2022-05-22|12:02:42|KL79G7900|IN|AMAL PRASAD|7306557354|CAR|HOME 2022-05-22|20:54:11|TN65H654|OUT|SUBIN ANAND|1234567890|BIKE|MOODBIDRI 2022-05-24|19:01:47|KL14A1000|OUT|SABU TV|896756551|BIKE|OUTSIDE -2022-05-26|17:36:41|TN19IS0089|OUT|ASEEL|78906754|TRUCK|VEGITABLES +2022-05-24|19:01:47|KL14A1000|OUT|LARIN LAGI|896756551|BIKE|OUTSIDE +2022-05-26|19:15:07:PM|GJ98H457|OUT|SUNNY |994763821|TRUCK|HOME diff --git a/update.py b/Updations.py similarity index 100% rename from update.py rename to Updations.py diff --git a/p.py b/connection.py similarity index 100% rename from p.py rename to connection.py diff --git a/gui.py b/gui.py index 868df1a..825e24a 100644 --- a/gui.py +++ b/gui.py @@ -9,13 +9,14 @@ from tkinter import ttk from datetime import date from datetime import datetime +from time import strftime from tkinter import messagebox # from tkinter import * # Explicit imports to satisfy Flake8 from tkinter import Tk, Canvas, Entry, Text, Button, PhotoImage -from turtle import bgcolor +from turtle import bgcolor, color @@ -29,8 +30,9 @@ def relative_to_assets(path: str) -> Path: window = Tk() -# window.geometry("1493x950") -window.state('zoomed') +window.geometry("1493x950") +# window.state('zoomed') +window.wm_title("TID-SECURITY ASSISTANT") window.configure(bg = "#FFFFFF") # -----------------------------------------------Vehicle Section------------------------------------------------# # Variables for Vehicle record inserition @@ -52,7 +54,10 @@ def relative_to_assets(path: str) -> Path: now = datetime.now() -time = now.strftime("%H:%M:%S") +time = now.strftime("%H:%M:%S:%p") +# vlTime.set(time)string = strftime('%H:%M:%S %p') +# vlTime.config(text = string) +# vlTime.after(1000, time) vlTime.set(time) # method for Insertion of vhl rcd def insertData(): @@ -66,7 +71,7 @@ def insertData(): vreason=vlReason.get() print("Details:",time,"|",date,"|",vehiclenum,"|",Vinout,"|",Vowner,"|",Vowner,"|",Vlmob,"|",vltyp,"|",vreason) VhlReader=open("Data Records/Vehicle.txt","a") - VhlReader.write(date+"|"+time+"|"+vehiclenum+"|"+Vinout+"|"+Vowner+"|"+Vlmob+"|"+vltyp+"|"+vreason+"\n") + VhlReader.write(str(date)+"|"+time+"|"+vehiclenum+"|"+Vinout+"|"+Vowner+"|"+Vlmob+"|"+vltyp+"|"+vreason+"\n") VhlReader.close() # variables for vhl search-> s_date=StringVar() @@ -120,9 +125,224 @@ def removeData(): selected_item=treev.selection()[0] treev.delete(selected_item) # Update section implemention-> - - - # ended +# ---------------------------------------UPDATE---------------------------- +def update_sec(): + update_section=Toplevel(window) + update_section.configure(bg = "#FFFFFF") + update_section.geometry("960x620") + update_section.wm_title("Record Updation") + + u_date=StringVar() + u_num=StringVar() + up_name=StringVar() + up_num=StringVar() + up_mob=StringVar() + # methods-> + def clicked_up(e): + set_value() + def updateData(): + date=u_date.get() + vnum=u_num.get().upper() + for record in treev.get_children(): + treev.delete(record) + + print("Function called") + filereader=open("Data Records/Vehicle.txt","r") + lines=filereader.readlines() + temp=[] + for line in lines: + if line.startswith(date): + if line.find(vnum): + nl=line.split("|") + temp.append(nl) + print(temp) + else: + print("line Not Found ") + if(u_num=="" and date==""): + print("not found!") + else: + for i in range(0,len(temp)): + treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6],temp[i][7])) + + filereader.close() + + def set_value(): + + record=treev.focus() + temp=treev.item(record,'values') + temp_list=list(temp) + + up_name.set(temp_list[4]) + up_num.set(temp_list[2]) + up_mob.set(temp_list[5]) + return temp_list + + def update(): + u_name=up_name.get() + u_num=up_num.get() + u_mob=up_mob.get() + temp_list=set_value() + print("up",temp_list) + temp_list[7]=temp_list[7]+"\n" + filereader=open("Data Records/Vehicle.txt","r") + lines=filereader.readlines() + temp=[] + for line in lines: + if line.startswith(temp_list[0]): + nl=line.split("|") + if nl[1]==temp_list[1]: + print("up to",nl) + up_record=[] + up_record.append(nl[0]) + up_record.append(nl[1]) + up_record.append(u_num) + up_record.append(nl[3]) + up_record.append(u_name) + up_record.append(u_mob) + up_record.append(nl[6]) + up_record.append(nl[7]) + print("up record:",up_record) + + update_file="|".join(up_record) + # print(update_file) + + INDEX=lines.index(line) + lines[INDEX]=update_file + print(lines) + + filereader2=open("Data Records/Vehicle.txt","w+") + for i in lines: + filereader2.write(i) + filereader2.close() + update_section.mainloop() + + + + + + # print("Up:",temp) + + # date of vhl + vdate = Entry(update_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=u_date + ) + vdate.place( + x=20.0, + y=100.0, + width=182.0, + height=48.0 + ) + + # vhl number + vhlnum = Entry(update_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=u_num + ) + vhlnum.place( + x=250.0, + y=100.0, + width=182.0, + height=48.0 + ) + addbtn = Button( + update_section, + borderwidth=0, + highlightthickness=0, + command=updateData, + relief="flat", + text="UPDATE" + ) + addbtn.place( + x=470.0, + y=100.0, + width=100.0, + height=50.0 + ) + # vhl owner name + u_name = Entry(update_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=up_name + ) + u_name.place( + x=20.0, + y=480.0, + width=182.0, + height=48.0 + ) + # Vehicle number + vhlnum = Entry(update_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=up_num + ) + vhlnum.place( + x=250.0, + y=480.0, + width=182.0, + height=48.0 + ) + mob = Entry(update_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=up_mob + ) + mob.place( + x=470.0, + y=480.0, + width=182.0, + height=48.0 + ) + updatebtn = Button(update_section, + + borderwidth=0, + highlightthickness=0, + command=update, + relief="flat", + text="UPDATE" + ) + updatebtn.place( + x=700.0, + y=480.0, + width=100.0, + height=50.0 + ) + # table-> + treev = ttk.Treeview(update_section, selectmode ='browse') + treev.place(x=20,y=220) + + + + treev["columns"] = ("1", "2", "3","4","5","6","7","8") + treev['show'] = 'headings' + treev.column("1", width = 100, anchor ='c') + treev.column("2", width = 100, anchor ='se') + treev.column("3", width = 100, anchor ='se') + treev.column("4", width = 100, anchor ='se') + treev.column("5", width = 100, anchor ='se') + treev.column("6", width = 100, anchor ='se') + treev.column("7", width = 100, anchor ='se') + treev.column("8", width = 100, anchor ='se') + treev.bind('',clicked_up) + treev.heading("1", text ="DATE") + treev.heading("2", text ="TIME") + treev.heading("3", text ="VEHICLE NUMBER") + treev.heading("4", text ="IN/OUT") + treev.heading("5", text ="OWNER NAME") + treev.heading("6", text ="MOBILE") + treev.heading("7", text ="TYPE") + treev.heading("8", text ="REASON") + + +# --------------------------------------UPDATE ENDED----------------------- # ----------------------------------------------------------Student Section------------------------------------------------# @@ -133,6 +353,8 @@ def removeData(): s_mob=StringVar() s_reason=StringVar() s_inout=StringVar() +ss_Date=StringVar() +ss_Usn=StringVar() # Method for insertion od data @@ -157,9 +379,33 @@ def studentadd(): else: print("Details:{",time,"|",t_date,"|",name,"|",usn,"|",mobile,"|",reason,"|",inout,"\n") messagebox.showinfo("Status", "Record added Successfully ") + stud_file=open("Data Records/Student.txt","a") + stud_file.write(str(t_date)+"|"+time+"|"+name+"|"+usn+"|"+mobile+"|"+inout+"|"+reason+"\n") + stud_file.close() +#--------------SEARCH FOR STUD---------- +def searchStudent(): + o_date=ss_Date.get() + usn=ss_Usn.get() + studentfile=open("Data Records/Student.txt") + lines=studentfile.readlines() + match=[] + for line in lines: + if line.startswith(o_date): + if line.find(usn): + s_line=line.split("|") + match.append(s_line) + print(match) + else: + print("line not found!") + if(o_date=="" and usn==""): + print("Field is empty") + else: + for i in range(0,len(match)): + s_treev.insert("",'end',text="L"+str(i),values=(match[i][0],match[i][1],match[i][2],match[i][3],match[i][4],match[i][5],match[i][6])) + studentfile.close() - - +# +# ---------------Ended-------------------------> # checking for textbox def getname(): @@ -408,6 +654,7 @@ def getname(): image=entry_image_9 ) # Name for student +S_NAME = Label(window,text = "Name:",bg="#FFFFFF").place(x = 173.0,y = 440) student_Name = Entry( bd=0, bg="#C4C4C4", @@ -428,6 +675,7 @@ def getname(): 568.0, image=entry_image_10 ) +S_REASON = Label(window,text = "Reason:",bg="#FFFFFF").place(x = 413,y = 518) # Reason For student S student_Reason = Entry( bd=0, @@ -450,6 +698,7 @@ def getname(): image=entry_image_11 ) # Student mobile S +S_MOB = Label(window,text = "Mobile:",bg="#FFFFFF").place(x = 173.0,y = 518) student_mob = Entry( bd=0, bg="#C4C4C4", @@ -471,6 +720,7 @@ def getname(): image=entry_image_12 ) # USN +S_USN = Label(window,text = "USN:",bg="#FFFFFF").place(x = 413,y = 440) usn_S = Entry( bd=0, bg="#C4C4C4", @@ -492,6 +742,7 @@ def getname(): image=entry_image_13 ) # Time for Student S +S_TIME = Label(window,text = "Time:",bg="#FFFFFF").place(x = 29.0,y = 440) student_Time = Entry( bd=0, bg="#C4C4C4", @@ -512,6 +763,7 @@ def getname(): 568.0, image=entry_image_14 ) +S_INOUT = Label(window,text = "IN/OUT:",bg="#FFFFFF").place(x = 29.0,y = 518) # IN Or OUT for Student S inout_s = Entry( bd=0, @@ -543,7 +795,7 @@ def getname(): ) -# jhfkgjgf +# Search date vhl-----------------------> entry_image_20 = PhotoImage( file=relative_to_assets("TextBox.png")) entry_bg_20 = canvas.create_image( @@ -609,7 +861,7 @@ def getname(): -# Treeview-> +# Treeview----------------------> treev = ttk.Treeview(window, selectmode ='browse') treev.place(x=670,y=220) @@ -635,9 +887,9 @@ def getname(): treev.heading("7", text ="TYPE") treev.heading("8", text ="REASON") -# # ended-< +# -------------------------- ended-< -# Button For removal +# ------------Button For removal----------------- button_image_22 = PhotoImage( file=relative_to_assets("REMOVE.png")) v_removetn = Button( @@ -653,12 +905,119 @@ def getname(): width=210.0, height=50.0 ) -def update(): - exec(open("update.py").read()) +# ------------usn--------> +entry_image_28 = PhotoImage( + file=relative_to_assets("TextBox.png")) +entry_bg_28 = canvas.create_image( + 1070.0, + 544.0, + image=entry_image_21 +) +st_date = Label(window,text = "USN:",bg="#FFFFFF").place(x = 965,y = 490) +ss_usn = Entry( + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=ss_Usn + +) +ss_usn.place( + x=975.0, + y=520.0, + width=188.0, + height=48.0 +) + +# -----------------------ended-> +# -------------------------date-------------- +entry_image_29 = PhotoImage( + file=relative_to_assets("TextBox.png")) +entry_bg_20 = canvas.create_image( + 770.0, + 544.0, + image=entry_image_29 +) +ssearch_date = Label(window,text = "Date:",bg="#FFFFFF").place(x = 665,y = 490) +ss_date = Entry( + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=ss_Date + +) +ss_date.place( + x=675.0, + y=520.0, + width=192.0, + height=48.0 +) +# ------button for remove ss--------------------> +button_image_30 = PhotoImage( + file=relative_to_assets("REMOVE.png")) +v_removetn = Button( + image=button_image_30, + borderwidth=0, + highlightthickness=0, + command="", + relief="flat" +) +v_removetn.place( + x=1250.0, + y=840.0, + width=210.0, + height=50.0 +) +# --------------------------------------ened--> + +# --------------------------------TABLE FOR SYUDENT------------------ +s_treev = ttk.Treeview(window, selectmode ='browse') +s_treev.place(x=670,y=600) + + + +s_treev["columns"] = ("1", "2", "3","4","5","6","7") +s_treev['show'] = 'headings' +s_treev.column("1", width = 100, anchor ='c') +s_treev.column("2", width = 100, anchor ='se') +s_treev.column("3", width = 100, anchor ='se') +s_treev.column("4", width = 100, anchor ='se') +s_treev.column("5", width = 100, anchor ='se') +s_treev.column("6", width = 100, anchor ='se') +s_treev.column("7", width = 100, anchor ='se') + + +s_treev.heading("1", text ="DATE") +s_treev.heading("2", text ="TIME") +s_treev.heading("3", text ="NAME") +s_treev.heading("4", text ="USN") +s_treev.heading("5", text ="MOBILE") +s_treev.heading("6", text ="REASON") +s_treev.heading("7", text ="IN/OUT") + +# Btn For Student Search +button_image_25 = PhotoImage( + file=relative_to_assets("SEARCH.png")) +s_searchbtn = Button( + image=button_image_25, + borderwidth=0, + highlightthickness=0, + command=searchStudent, + relief="flat" +) +s_searchbtn.place( + x=1250.0, + y=520.0, + width=210.0, + height=50.0 +) + + + +# --------------------ENDED---------------------------------- menubar = Menu(window,background='blue') edit = Menu(menubar, tearoff = 0) menubar.add_cascade(label ='Updations', menu = edit) -edit.add_command(label ='Vehicle Record Updation', command =update) +edit.add_command(label ='Vehicle Record Updation', command =update_sec) edit.add_command(label ='Student Record Updation', command = "") @@ -670,9 +1029,9 @@ def update(): help.add_command(label ='Contact us', command = "") Contribute = Menu(menubar, tearoff = 0) -menubar.add_cascade(label ='Open Sourse',menu=Contribute) -menubar.add_command(label ='Get me to Repo',command="" ) -menubar.add_command(label ='Donate',command="") +menubar.add_cascade(label ='Repo',menu=Contribute) +Contribute.add_command(label ='Take me to repository',command="" ) +Contribute.add_command(label ='Contribute now',command="") about = Menu(menubar, tearoff = 0) menubar.add_cascade(label ='More', menu = about) @@ -690,6 +1049,10 @@ def update(): up_mob=StringVar() width= window.winfo_screenwidth() height= window.winfo_screenheight() +# ----------------------------bootom tab--------------------> +statusbar =Label(window, text="Records:200 Updated Records:7 🌎:Live", bd=1, relief=SUNKEN, anchor=W,bg="#0F52FF",fg="#FFFFFF") +statusbar.pack(side=BOTTOM, fill=X) +# ended------------> window.resizable(False,False) # window.attributes('-fullscreen', True) window.mainloop() From ebab55428638b02d231a06e3cc928b54162c9989 Mon Sep 17 00:00:00 2001 From: Amal Prasad Date: Sun, 29 May 2022 11:10:45 +0530 Subject: [PATCH 02/22] minor bugs found --- Data Records/Student.txt | 5 +- Data Records/Vehicle.txt | 1 + __pycache__/gui.cpython-39.pyc | Bin 9587 -> 14970 bytes assets/barrier.png | Bin 0 -> 18170 bytes gui.py | 317 ++++++++++++++++++++++++++++++++- student.py | 271 ++++++++++++++++++++++++++++ 6 files changed, 586 insertions(+), 8 deletions(-) create mode 100644 assets/barrier.png create mode 100644 student.py diff --git a/Data Records/Student.txt b/Data Records/Student.txt index c7861cc..7e3a011 100644 --- a/Data Records/Student.txt +++ b/Data Records/Student.txt @@ -1 +1,4 @@ -2022-05-26|9:00pm|AMAL|4DM19IS007|7306557354|HOME|IN +2022-05-27|9:01pm|LIBIN SABU|4DM19IS027|9947789622|OUT|HOSTEL +2022-05-27|10:00PM|PRAJWAL|4DM19IS043|1234567890|OUT|MOODBIDRI +2022-05-27|10:01PM|PRAJWAL|4DM19IS045|1234567890|OUT|MOODBIDRI +2022-05-28|5:00|AKSHAY KUMAR|4DM19IS006|1234567890|OUT|MANGLORE diff --git a/Data Records/Vehicle.txt b/Data Records/Vehicle.txt index b20d09d..433a29d 100644 --- a/Data Records/Vehicle.txt +++ b/Data Records/Vehicle.txt @@ -3,3 +3,4 @@ 2022-05-24|19:01:47|KL14A1000|OUT|SABU TV|896756551|BIKE|OUTSIDE 2022-05-24|19:01:47|KL14A1000|OUT|LARIN LAGI|896756551|BIKE|OUTSIDE 2022-05-26|19:15:07:PM|GJ98H457|OUT|SUNNY |994763821|TRUCK|HOME +2022-05-22|20:54:11|KL79G7900|OUT|AMAL PRASAD|7306557354|BIKE|MOODBIDRI diff --git a/__pycache__/gui.cpython-39.pyc b/__pycache__/gui.cpython-39.pyc index ce0657da09eecaa3af79d0170daa5a8e5d03f689..c32dc0efb123e48d558f6c588dcd8eb71c03d193 100644 GIT binary patch literal 14970 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 LJ%!h7Deb=jQWx7W literal 9587 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 z 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 T@*Vh|8bDE2Ri<3pH01vRx>Ll` literal 0 HcmV?d00001 diff --git a/gui.py b/gui.py index 825e24a..7fd546e 100644 --- a/gui.py +++ b/gui.py @@ -4,6 +4,7 @@ from email.mime import image +from operator import index from pathlib import Path from tkinter import * from tkinter import ttk @@ -34,6 +35,7 @@ def relative_to_assets(path: str) -> Path: # window.state('zoomed') window.wm_title("TID-SECURITY ASSISTANT") window.configure(bg = "#FFFFFF") + # -----------------------------------------------Vehicle Section------------------------------------------------# # Variables for Vehicle record inserition vlDate=StringVar() @@ -95,8 +97,8 @@ def vehlsearch(): print(temp) else: print("line Not Found ") - if(s_num=="" and date==""): - print("not found!") + if(s_num=="" or date==""): + messagebox.showerror("Required", "Feild is Empty\n Try Again") else: for i in range(0,len(temp)): treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6],temp[i][7])) @@ -406,6 +408,27 @@ def searchStudent(): # # ---------------Ended-------------------------> +# Removal---------------------> +def removeStudent(): + record=s_treev.focus() + temp=s_treev.item(record,'values') + temp_list=list(temp) + print(temp_list) + fileReader=open("Data Records/Student.txt","r") + lines=fileReader.readlines() + for line in lines: + del_list=line.split("|") + if del_list==temp_list: + print(del_list) + del lines[lines.index(line)] + break + fileReader2=open("Data Records/Student.txt","w+") + for i in lines: + fileReader2.write(i) + selected_item=s_treev.selection()[0] + s_treev.delete(selected_item) + +# --------------------ended> # checking for textbox def getname(): @@ -958,7 +981,7 @@ def getname(): image=button_image_30, borderwidth=0, highlightthickness=0, - command="", + command=removeStudent, relief="flat" ) v_removetn.place( @@ -1010,15 +1033,277 @@ def getname(): width=210.0, height=50.0 ) +# ---------------------STUDENT update --------------------------------------> +def student_update(): + Supdate_section=Toplevel(window) + Supdate_section.configure(bg = "#FFFFFF") + Supdate_section.geometry("960x620") + Supdate_section.wm_title("Student Record Updation") + search_date=StringVar() + search_usn=StringVar() + + sup_name=StringVar() + sup_usn=StringVar() + sup_mob=StringVar() + search_date.set("2022-05-27") + search_usn.set("4dm19is027") + def SearchTree(): + Student_date=search_date.get() + print(Student_date) + Student_usn=search_usn.get().upper() + print(Student_usn) + for record in up_treev.get_children(): + up_treev.delete(record) + print("Student Function Called:[TreeSearch]") + searchtreefile=open("Data Records/Student.txt","r") + datas=searchtreefile.readlines() + searchTemp=[] + for line in datas: + if line.startswith(Student_date): + smatch=line.split("|") + searchTemp.append(smatch) + print("Smatch:",smatch) + for j in range(0,len(searchTemp)): + if searchTemp[j][3]==Student_usn: + print(searchTemp[j]) + up_treev.insert("", 'end', text ="L"+str(j),values =(searchTemp[j][0],searchTemp[j][1],searchTemp[j][2],searchTemp[j][3],searchTemp[j][4],searchTemp[j][5],searchTemp[j][6])) + else: + print("Not Found") + searchtreefile.close() + def set_value(): + + record=up_treev.focus() + temp=up_treev.item(record,'values') + temp_list=list(temp) + + sup_usn.set(temp_list[3]) + sup_name.set(temp_list[2]) + sup_mob.set(temp_list[4]) + return temp_list + def clicked_up(e): + set_value() + + # def update_student(): + # upname=sup_name.get().upper() + # upmob=sup_mob.get() + # up_usn=sup_usn.get().upper() + # temp_list=set_value() + # print("For Update List:",temp_list) + # stud_file=open("Data Records/Student.txt","r") + # lines=stud_file.readline() + # up_record1=[] + + # for line in lines: + # if line.startswith(temp_list[0]): + # nl=line.split("|") + # if nl[1]==temp_list[1]: + # print("list:",nl) + + # up_record1.append(nl[0]) + # up_record1.append(nl[1]) + # up_record1.append(upname) + # up_record1.append(up_usn) + # up_record1.append(upmob) + # up_record1.append(nl[5]) + # up_record1.append(nl[6]) + # print("Updated List:",up_record1) + # update_file="|".join(up_record1) + def update(): + u_name=sup_name.get() + u_num=sup_usn.get() + u_mob=sup_mob.get() + temp_list=set_value() + print("up",temp_list) + + filereader=open("Data Records/Student.txt","r") + lines=filereader.readlines() + temp=[] + for line in lines: + if line.startswith(temp_list[0]): + + nl=line.split("|") + print(line) + if nl[2]==temp_list[2]: + print("up to",) + Index=lines.index(line) + print(Index) + + + up_record=[] + up_record.append(nl[0]) + up_record.append(nl[1]) + up_record.append(u_name) + up_record.append(u_num) + up_record.append(u_mob) + up_record.append(nl[5]) + up_record.append(nl[6]) + + print("up record:",up_record) + + update_file="|".join(up_record) + # print(update_file) + + + lines[Index]=update_file + print(Index) + print(lines) + + filereader2=open("Data Records/Student.txt","w+") + for i in lines: + filereader2.write(i) + filereader2.close() +# -----------------Endend------------ + + + + + # date of Student + student_date = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=search_date + ) + student_date.place( + x=20.0, + y=100.0, + width=182.0, + height=48.0 + ) + + # vhl number + student_usn = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=search_usn + ) + student_usn.place( + x=250.0, + y=100.0, + width=182.0, + height=48.0 + ) + student_btn = Button( + Supdate_section, + borderwidth=0, + highlightthickness=0, + command=SearchTree, + relief="flat", + text="UPDATE" + ) + student_btn.place( + x=470.0, + y=100.0, + width=100.0, + height=50.0 + ) + # vhl owner name + update_nameS = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=sup_name + ) + update_nameS.place( + x=20.0, + y=480.0, + width=182.0, + height=48.0 + ) + # Vehicle number + student_usn2 = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=sup_usn + ) + student_usn2.place( + x=250.0, + y=480.0, + width=182.0, + height=48.0 + ) + student_mob= Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=sup_mob + ) + student_mob.place( + x=470.0, + y=480.0, + width=182.0, + height=48.0 + ) + Supdatebtn = Button(Supdate_section, + + borderwidth=0, + highlightthickness=0, + command=update, + relief="flat", + text="UPDATE" + ) + Supdatebtn.place( + x=700.0, + y=480.0, + width=100.0, + height=50.0 + ) + # table-> + up_treev = ttk.Treeview(Supdate_section, selectmode ='browse') + up_treev.place(x=20,y=220) + + + + up_treev["columns"] = ("1", "2", "3","4","5","6","7") + up_treev['show'] = 'headings' + up_treev.column("1", width = 100, anchor ='c') + up_treev.column("2", width = 100, anchor ='se') + up_treev.column("3", width = 100, anchor ='se') + up_treev.column("4", width = 100, anchor ='se') + up_treev.column("5", width = 100, anchor ='se') + up_treev.column("6", width = 100, anchor ='se') + up_treev.column("7", width = 100, anchor ='se') + + up_treev.bind('',clicked_up) + up_treev.heading("1", text ="DATE") + up_treev.heading("2", text ="TIME") + up_treev.heading("3", text ="NAME") + up_treev.heading("4", text ="USN") + up_treev.heading("5", text ="MOBILE") + up_treev.heading("6", text ="IN/OUT") + up_treev.heading("7", text ="REASON") + + + + + + + + # file = Menu(update_section, tearoff = 0) + # update_section.add_cascade(label ='File', menu = file) + # file.add_command(label ='New File', command = None) + # file.add_command(label ='Open...', command = None) + # file.add_command(label ='Save', command = None) + # file.add_separator() + # file.add_command(label ='Exit', command = update_section.destroy) + + + + + Supdate_section.mainloop() +# --------------------------ENDED-----------------------------------------< + # --------------------ENDED---------------------------------- menubar = Menu(window,background='blue') edit = Menu(menubar, tearoff = 0) menubar.add_cascade(label ='Updations', menu = edit) edit.add_command(label ='Vehicle Record Updation', command =update_sec) -edit.add_command(label ='Student Record Updation', command = "") +edit.add_command(label ='Student Record Updation', command = student_update) @@ -1050,9 +1335,27 @@ def getname(): width= window.winfo_screenwidth() height= window.winfo_screenheight() # ----------------------------bootom tab--------------------> -statusbar =Label(window, text="Records:200 Updated Records:7 🌎:Live", bd=1, relief=SUNKEN, anchor=W,bg="#0F52FF",fg="#FFFFFF") +file = open("Data Records/Student.txt", "r") +line_count = 0 +for line in file: + if line != "\n": + line_count += 1 +file.close() +file2 = open("Data Records/Vehicle.txt", "r") +line_count1 = 0 +for line in file2: + if line != "\n": + line_count1 += 1 +file2.close() +tcount=line_count+line_count1 + + +statusbar =Label(window, text="Records:"+str(tcount)+" Updated Records:7 🌎:Live", bd=1, relief=SUNKEN, anchor=W,bg="#0F52FF",fg="#FFFFFF") statusbar.pack(side=BOTTOM, fill=X) # ended------------> window.resizable(False,False) -# window.attributes('-fullscreen', True) -window.mainloop() + +# ------STUDENT SEARCH SECTION--------> +photo = PhotoImage(file ="assets/barrier.png") +window.iconphoto(False,photo) +window.mainloop() \ No newline at end of file diff --git a/student.py b/student.py new file mode 100644 index 0000000..0d5e2ab --- /dev/null +++ b/student.py @@ -0,0 +1,271 @@ + + +from email.mime import image +from fileinput import close +from pathlib import Path +from re import T +from tkinter import * +from tkinter import ttk + + +# from tkinter import * +# Explicit imports to satisfy Flake8 +from tkinter import Tk,Canvas, Entry, Text, Button, PhotoImage + +from numpy import record + + +OUTPUT_PATH = Path(__file__).parent +ASSETS_PATH = OUTPUT_PATH / Path("./assets") + + +def relative_to_assets(path: str) -> Path: + return ASSETS_PATH / Path(path) + + + + + +Supdate_section=Tk() +Supdate_section.configure(bg = "#FFFFFF") +Supdate_section.geometry("960x620") +Supdate_section.wm_title("Student Record Updation") + +u_date=StringVar() +u_num=StringVar() +up_name=StringVar() +up_num=StringVar() +up_mob=StringVar() +# methods-> +def clicked_up(e): + set_value() +def updateData(): + date=u_date.get() + vnum=u_num.get().upper() + for record in up_treev.get_children(): + up_treev.delete(record) + + print("Function called") + filereader=open("Data Records/Student.txt","r") + lines=filereader.readlines() + temp=[] + for line in lines: + if line.startswith(date): + nl=line.split("|") + temp.append(nl) + print(temp) + for j in range(0,len(temp)): + if temp[j][3]==vnum: + print(temp[j]) + up_treev.insert("", 'end', text ="L"+str(j),values =(temp[j][0],temp[j][1],temp[j][2],temp[j][3],temp[j][4],temp[j][5],temp[j][6])) + + # else: + # print("line Not Found ") + # if(u_num=="" and date==""): + # print("not found!") + # else: + # for i in range(0,len(temp)): + # up_treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6])) + + filereader.close() + +def set_value(): + + record=up_treev.focus() + temp=up_treev.item(record,'values') + temp_list=list(temp) + + up_name.set(temp_list[4]) + up_num.set(temp_list[2]) + up_mob.set(temp_list[5]) + return temp_list + +def update(): + u_name=up_name.get() + u_num=up_num.get() + u_mob=up_mob.get() + temp_list=set_value() + print("up",temp_list) + temp_list[7]=temp_list[7]+"\n" + filereader=open("Data Records/Vehicle.txt","r") + lines=filereader.readlines() + temp=[] + for line in lines: + if line.startswith(temp_list[0]): + nl=line.split("|") + if nl[1]==temp_list[1]: + print("up to",nl) + up_record=[] + up_record.append(nl[0]) + up_record.append(nl[1]) + up_record.append(u_num) + up_record.append(nl[3]) + up_record.append(u_name) + up_record.append(u_mob) + up_record.append(nl[6]) + up_record.append(nl[7]) + print("up record:",up_record) + + update_file="|".join(up_record) + # print(update_file) + + INDEX=lines.index(line) + lines[INDEX]=update_file + print(lines) + + filereader2=open("Data Records/Vehicle.txt","w+") + for i in lines: + filereader2.write(i) + filereader2.close() + + + + + + + # print("Up:",temp) + +# date of vhl +vdate = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=u_date +) +vdate.place( + x=20.0, + y=100.0, + width=182.0, + height=48.0 +) + +# vhl number +vhlnum = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=u_num +) +vhlnum.place( + x=250.0, + y=100.0, + width=182.0, + height=48.0 +) +addbtn = Button( + Supdate_section, + borderwidth=0, + highlightthickness=0, + command=updateData, + relief="flat", + text="UPDATE" +) +addbtn.place( + x=470.0, + y=100.0, + width=100.0, + height=50.0 +) +# vhl owner name +u_name = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=up_name +) +u_name.place( + x=20.0, + y=480.0, + width=182.0, + height=48.0 +) +# Vehicle number +vhlnum = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=up_num +) +vhlnum.place( + x=250.0, + y=480.0, + width=182.0, + height=48.0 +) +mob = Entry(Supdate_section, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=up_mob +) +mob.place( + x=470.0, + y=480.0, + width=182.0, + height=48.0 +) +updatebtn = Button(Supdate_section, + + borderwidth=0, + highlightthickness=0, + command=update, + relief="flat", + text="UPDATE" +) +updatebtn.place( + x=700.0, + y=480.0, + width=100.0, + height=50.0 +) +# table-> +up_treev = ttk.Treeview(Supdate_section, selectmode ='browse') +up_treev.place(x=20,y=220) + + + +up_treev["columns"] = ("1", "2", "3","4","5","6","7") +up_treev['show'] = 'headings' +up_treev.column("1", width = 100, anchor ='c') +up_treev.column("2", width = 100, anchor ='se') +up_treev.column("3", width = 100, anchor ='se') +up_treev.column("4", width = 100, anchor ='se') +up_treev.column("5", width = 100, anchor ='se') +up_treev.column("6", width = 100, anchor ='se') +up_treev.column("7", width = 100, anchor ='se') + +up_treev.bind('',clicked_up) +up_treev.heading("1", text ="DATE") +up_treev.heading("2", text ="TIME") +up_treev.heading("3", text ="NAME") +up_treev.heading("4", text ="USN") +up_treev.heading("5", text ="IN/OUT") +up_treev.heading("6", text ="MOBILE") +up_treev.heading("7", text ="REASON") + + + + + + + + + + +# file = Menu(update_section, tearoff = 0) +# update_section.add_cascade(label ='File', menu = file) +# file.add_command(label ='New File', command = None) +# file.add_command(label ='Open...', command = None) +# file.add_command(label ='Save', command = None) +# file.add_separator() +# file.add_command(label ='Exit', command = update_section.destroy) + + + + +Supdate_section.mainloop() + + + + +# window.geometry("1493x950") \ No newline at end of file From eaaefe11802f68f734795c5f47d5ab3e987eef6f Mon Sep 17 00:00:00 2001 From: Amal Prasad Date: Sun, 29 May 2022 11:26:06 +0530 Subject: [PATCH 03/22] chenged title --- gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gui.py b/gui.py index 7fd546e..071ff41 100644 --- a/gui.py +++ b/gui.py @@ -33,7 +33,7 @@ def relative_to_assets(path: str) -> Path: window = Tk() window.geometry("1493x950") # window.state('zoomed') -window.wm_title("TID-SECURITY ASSISTANT") +window.wm_title("Liquid-Loop SECURITY ASSISTANT") window.configure(bg = "#FFFFFF") # -----------------------------------------------Vehicle Section------------------------------------------------# From 308d21a76a75898113a2209c75dc1aa80f0ef387 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:32:04 +0530 Subject: [PATCH 04/22] Create .github --- .github | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github diff --git a/.github b/.github new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.github @@ -0,0 +1 @@ + From 33e8590855e7525cfe8098eb771485a78d8e5581 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:32:26 +0530 Subject: [PATCH 05/22] Delete .github --- .github | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .github diff --git a/.github b/.github deleted file mode 100644 index 8b13789..0000000 --- a/.github +++ /dev/null @@ -1 +0,0 @@ - From 7bba209894ac9cc44c7f636cad70e808bdbde0d1 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:34:17 +0530 Subject: [PATCH 06/22] Create readm.yml --- .github/worksflow/readm.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/worksflow/readm.yml diff --git a/.github/worksflow/readm.yml b/.github/worksflow/readm.yml new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.github/worksflow/readm.yml @@ -0,0 +1 @@ + From 9929d6dd47adf51d67bbed19ab091effa9f900f7 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:37:01 +0530 Subject: [PATCH 07/22] Update readm.yml --- .github/worksflow/readm.yml | 75 +++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/.github/worksflow/readm.yml b/.github/worksflow/readm.yml index 8b13789..f332b6f 100644 --- a/.github/worksflow/readm.yml +++ b/.github/worksflow/readm.yml @@ -1 +1,76 @@ +name: "Automatic Release" +on: + push: + branches: + - master + workflow_dispatch: + +jobs: + release: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + + - name: Get latest release + id: get-latest-release + uses: InsonusK/get-latest-release@v1.0.1 + with: + myToken: ${{ github.token }} + view_top: 1 + + - name: Get next tag + id: next-tag + run: | + prev_version=$(echo "${{ steps.get-latest-release.outputs.tag_name }}" | sed -E 's/\..*//g') + echo "Previous version: $((prev_version))" + echo "Next version: $((prev_version+1))" + echo "::set-output name=tag::$((prev_version+1)).0" + + - name: Create tag + uses: tvdias/github-tagger@v0.0.1 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + tag: ${{ steps.next-tag.outputs.tag }} + + - uses: fregante/release-with-changelog@v3 + id: release-with-changelog + with: + token: ${{ secrets.GITHUB_TOKEN }} + exclude: '^meta|^docs|^document|^lint|^ci|^refactor|readme|workflow|bump|dependencies|yml|^v?\d+\.\d+\.\d+' + tag: ${{ steps.next-tag.outputs.tag }} + title: 'Version ${{ steps.next-tag.outputs.tag }}' + commit-template: '- {hash} {title}' + skip-on-empty: true + template: | + ### Changelog + + {commits} + + {range} + + - name: Delete tag if release skipped + if: ${{ steps.release-with-changelog.outputs.skipped == 'true' }} + run: | + git tag -d ${{ steps.next-tag.outputs.tag }} + git push origin :refs/tags/${{ steps.next-tag.outputs.tag }} + + - name: Readme Download Button Action + if: ${{ steps.release-with-changelog.outputs.skipped == 'false' }} + env: + GITHUB_USER: "amalprasad0" + REPO: "Liquid-Loop-Security-Software" + FORMAT: "zip" + VERSION: "${{ steps.next-tag.outputs.tag }}" + COLOR: "blue" + BEGIN_TAG: "" + END_TAG: "" + run: | + UPDATE=$(cat README.md | perl -0777 -pe 's#(${{ env.BEGIN_TAG }})(?:.|\n)*?(${{ env.END_TAG }})#${1}\n[![Download ${{ env.FORMAT }}](https://custom-icon-badges.herokuapp.com/badge/-Download-${{ env.COLOR }}?style=for-the-badge&logo=download&logoColor=white "Download ${{ env.FORMAT }}")](https://github.com/${{ env.GITHUB_USER }}/${{ env.REPO }}/archive/${{ env.VERSION }}.${{ env.FORMAT }})\n${2}#g') + echo "${UPDATE}" > README.md + + - uses: EndBug/add-and-commit@v7 + if: ${{ steps.release-with-changelog.outputs.skipped == 'false' }} + with: + message: 'docs: Bump version to ${{ steps.next-tag.outputs.tag }}' + default_author: github_actions From bb7f73f4a69e165ee5284a20f401057e6cec8d28 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:37:40 +0530 Subject: [PATCH 08/22] Create README.md --- README.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..01f2da6 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Liquid-Loop-Security-Software + +to download: + + From b77300a63a73465ad7498d91882e460cb9e515b3 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:38:51 +0530 Subject: [PATCH 09/22] Update readm.yml --- .github/worksflow/readm.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/worksflow/readm.yml b/.github/worksflow/readm.yml index f332b6f..2f2bf50 100644 --- a/.github/worksflow/readm.yml +++ b/.github/worksflow/readm.yml @@ -61,7 +61,7 @@ jobs: GITHUB_USER: "amalprasad0" REPO: "Liquid-Loop-Security-Software" FORMAT: "zip" - VERSION: "${{ steps.next-tag.outputs.tag }}" + VERSION: "1.0.0" COLOR: "blue" BEGIN_TAG: "" END_TAG: "" From b48128623b8786b518258f71e79b1108a4774dd4 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:46:10 +0530 Subject: [PATCH 10/22] Update README.md --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 01f2da6..cdca94d 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Liquid-Loop-Security-Software -to download: - - + +-v1.0.0 +[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0) +[channellog]() + From a5e98804c72a960b67a311aa217dbd59f6a0b7be Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:46:36 +0530 Subject: [PATCH 11/22] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index cdca94d..84ce800 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Liquid-Loop-Security-Software --v1.0.0 -[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0) +*v1.0.0 +[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0)
[channellog]() From 54dc9720044e7e229a378b0a3664817b29db4ca4 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:47:04 +0530 Subject: [PATCH 12/22] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 84ce800..4f87a8f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Liquid-Loop-Security-Software -*v1.0.0 +*v1.0.0
[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0)
-[channellog]() + [channellog]() From 3d953414a1fd22999a4d5d0ec31aa173835505e1 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:47:56 +0530 Subject: [PATCH 13/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4f87a8f..d602c8e 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,5 @@ *v1.0.0
[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0)
- [channellog]() + [channellog]( https://github.com/amalprasad0/Liquid-Loop-Security-Software/commits/v1.0.0) From e69caee3d9999c2a25e929b6d310b73a725b28af Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:54:22 +0530 Subject: [PATCH 14/22] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index d602c8e..3c151db 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,10 @@ [Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0)
[channellog]( https://github.com/amalprasad0/Liquid-Loop-Security-Software/commits/v1.0.0) + +

Tools Used:

+

+

+ +

Languages and Tools:

+

figma python qt

From 9c685a6dc48bf5de2fed8fa628785f59a159ec45 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:56:54 +0530 Subject: [PATCH 15/22] Update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 3c151db..d1ce481 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,13 @@ # Liquid-Loop-Security-Software -*v1.0.0
+

Releases

[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0)
- [channellog]( https://github.com/amalprasad0/Liquid-Loop-Security-Software/commits/v1.0.0) +

chanelog

Tools Used:

-

-

+

Languages and Tools:

figma python qt

From 8fba4446fc4a70c18814f1366fa57af514cee085 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:58:28 +0530 Subject: [PATCH 16/22] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d1ce481..6cd8467 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,8 @@

Releases

-[Download](https://github.com/amalprasad0/Liquid-Loop-Security-Software/releases/tag/v1.0.0)
+

Download

+

chanelog

From 4eac5db75cec8c7f6dfe2a34040fdbe6e322ed5e Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Sun, 29 May 2022 11:58:44 +0530 Subject: [PATCH 17/22] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6cd8467..9c1d910 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@

chanelog

-

Tools Used:

+

Languages and Tools:

From d0c79d6a46588f9f4d1c29578c8e35511f3129d1 Mon Sep 17 00:00:00 2001 From: Amal Prasad <78908990+amalprasad0@users.noreply.github.com> Date: Mon, 30 May 2022 17:22:25 +0530 Subject: [PATCH 18/22] Update gui.py --- gui.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gui.py b/gui.py index 071ff41..17c8808 100644 --- a/gui.py +++ b/gui.py @@ -1,6 +1,6 @@ -# This file was generated by the Tkinter Designer by Parth Jadhav -# https://github.com/ParthJadhav/Tkinter-Designer + + from email.mime import image @@ -1358,4 +1358,4 @@ def update(): # ------STUDENT SEARCH SECTION--------> photo = PhotoImage(file ="assets/barrier.png") window.iconphoto(False,photo) -window.mainloop() \ No newline at end of file +window.mainloop() From 64c6e74fa08054e8bbc1b72046abc0fdc0effdfd Mon Sep 17 00:00:00 2001 From: Amal Prasad Date: Tue, 31 May 2022 21:43:22 +0530 Subject: [PATCH 19/22] VHL search option bug fixed --- Data Records/Vehicle.txt | 5 ++-- assets/volleyball-logo_20448-59.jpg | Bin 0 -> 111430 bytes gui.py | 27 ++++++++++++-------- sample.py | 38 ++++++++++++++++++++++++++++ sample_p.py | 0 5 files changed, 57 insertions(+), 13 deletions(-) create mode 100644 assets/volleyball-logo_20448-59.jpg create mode 100644 sample.py create mode 100644 sample_p.py diff --git a/Data Records/Vehicle.txt b/Data Records/Vehicle.txt index 433a29d..271fe98 100644 --- a/Data Records/Vehicle.txt +++ b/Data Records/Vehicle.txt @@ -1,6 +1,5 @@ -2022-05-22|12:02:42|KL79G7900|IN|AMAL PRASAD|7306557354|CAR|HOME -2022-05-22|20:54:11|TN65H654|OUT|SUBIN ANAND|1234567890|BIKE|MOODBIDRI 2022-05-24|19:01:47|KL14A1000|OUT|SABU TV|896756551|BIKE|OUTSIDE -2022-05-24|19:01:47|KL14A1000|OUT|LARIN LAGI|896756551|BIKE|OUTSIDE +2022-05-24|19:01:47|KL14A800|OUT|LARIN LAGI|896756551|BIKE|OUTSIDE 2022-05-26|19:15:07:PM|GJ98H457|OUT|SUNNY |994763821|TRUCK|HOME 2022-05-22|20:54:11|KL79G7900|OUT|AMAL PRASAD|7306557354|BIKE|MOODBIDRI +2022-05-30|14:35:24:PM|GA12H7890|IN|ADHITHYAN|9947789622|CAR|HOME diff --git a/assets/volleyball-logo_20448-59.jpg b/assets/volleyball-logo_20448-59.jpg new file mode 100644 index 0000000000000000000000000000000000000000..514b5c0e3cffd65ec2bfa4d71a21150fdc79e314 GIT binary patch literal 111430 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ⅅyRC* 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 Date: Tue, 31 May 2022 21:47:37 +0530 Subject: [PATCH 20/22] messagebox added to remove option --- gui.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gui.py b/gui.py index e3f2a94..215c347 100644 --- a/gui.py +++ b/gui.py @@ -105,7 +105,7 @@ def vehlsearch(): treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6],temp[i][7])) else: messagebox.showerror("INFO", "Record Not Found in DB") - + exit # else: # for i in range(0,len(temp)): # treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6],temp[i][7])) @@ -120,6 +120,7 @@ def removeData(): temp=treev.item(record,'values') temp_list=list(temp) print(temp_list) + messagebox.askokcancel("askokcancel", "Want to continue?") fileReader=open("Data Records/Vehicle.txt","r") lines=fileReader.readlines() for line in lines: @@ -133,6 +134,7 @@ def removeData(): fileReader2.write(i) selected_item=treev.selection()[0] treev.delete(selected_item) + # Update section implemention-> # ---------------------------------------UPDATE---------------------------- def update_sec(): From dcc55d34a12377e0ea101f254ad4e909d3a2d25f Mon Sep 17 00:00:00 2001 From: Amal Prasad Date: Wed, 1 Jun 2022 00:19:07 +0530 Subject: [PATCH 21/22] msg option added --- Data Records/Vehicle.txt | 13 ++++++-- Data Records/sms.py | 2 ++ gui.py | 72 ++++++++++++++++++++++++++++++---------- sample.py | 38 --------------------- 4 files changed, 68 insertions(+), 57 deletions(-) create mode 100644 Data Records/sms.py delete mode 100644 sample.py diff --git a/Data Records/Vehicle.txt b/Data Records/Vehicle.txt index 271fe98..a5cc823 100644 --- a/Data Records/Vehicle.txt +++ b/Data Records/Vehicle.txt @@ -1,5 +1,14 @@ 2022-05-24|19:01:47|KL14A1000|OUT|SABU TV|896756551|BIKE|OUTSIDE -2022-05-24|19:01:47|KL14A800|OUT|LARIN LAGI|896756551|BIKE|OUTSIDE -2022-05-26|19:15:07:PM|GJ98H457|OUT|SUNNY |994763821|TRUCK|HOME +2022-05-24|19:01:47|KL14A7000|OUT|LIBIN SABU |896756551|BIKE|OUTSIDE +2022-05-26|19:15:07:PM|ERTYUIO|OUT|SUNNY |994763821|TRUCK|HOME 2022-05-22|20:54:11|KL79G7900|OUT|AMAL PRASAD|7306557354|BIKE|MOODBIDRI 2022-05-30|14:35:24:PM|GA12H7890|IN|ADHITHYAN|9947789622|CAR|HOME +2022-05-31|22:10:40:PM|KL89H8900|OUT|ASEEL HK|1234567890|CAR|HOME +2022-05-31|22:12:26:PM|KL78Y789|IN|MELBIN B|34567890123|BIKE|TOUR +2022-06-01|00:04:35:AM|KL68H6789|OUT|AMAL PRASAD|7306557354|OUT|HOME +2022-06-01|00:06:03:AM|1234567|DFGHJ|AMAL|7306557354|ING|ZXVCBNM +2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|8304939772|CAR|TO VISIT HOSTEL +2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|80780775784|CAR|TO VISIT HOSTEL +2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|7306557354|CAR|TO VISIT HOSTEL +2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|80780775784|CAR|TO VISIT HOSTEL +2022-06-01|00:12:29:AM|TN56Y78900|OUT|PRAJWAL|7306557354|BIKE|HOME diff --git a/Data Records/sms.py b/Data Records/sms.py new file mode 100644 index 0000000..6403c6d --- /dev/null +++ b/Data Records/sms.py @@ -0,0 +1,2 @@ +# Download the helper library from https://www.twilio.com/docs/python/install +import twilio diff --git a/gui.py b/gui.py index 215c347..234570a 100644 --- a/gui.py +++ b/gui.py @@ -11,6 +11,8 @@ from datetime import date from datetime import datetime from time import strftime +import os +from twilio.rest import Client from tkinter import messagebox @@ -65,16 +67,42 @@ def relative_to_assets(path: str) -> Path: def insertData(): time=vlTime.get() date=vlDate.get() - vehiclenum=vlNum.get() - Vinout=vlInout.get() - Vowner=vlOwner.get() - Vlmob=vlMob.get() - vltyp=vlType.get() - vreason=vlReason.get() - print("Details:",time,"|",date,"|",vehiclenum,"|",Vinout,"|",Vowner,"|",Vowner,"|",Vlmob,"|",vltyp,"|",vreason) - VhlReader=open("Data Records/Vehicle.txt","a") - VhlReader.write(str(date)+"|"+time+"|"+vehiclenum+"|"+Vinout+"|"+Vowner+"|"+Vlmob+"|"+vltyp+"|"+vreason+"\n") - VhlReader.close() + vehiclenum=vlNum.get().upper() + Vinout=vlInout.get().upper() + Vowner=vlOwner.get().upper() + Vlmob=vlMob.get().upper() + vltyp=vlType.get().upper() + vreason=vlReason.get().upper() + if vehiclenum=="": + messagebox.showwarning("showwarning", "Field Is Empty") + elif Vinout=="": + messagebox.showwarning("showwarning", "Field Is Empty") + elif Vowner=="": + messagebox.showwarning("showwarning", "Field Is Empty") + elif Vlmob=="": + messagebox.showwarning("showwarning", "Field Is Empty") + elif vltyp=="": + messagebox.showwarning("showwarning", "Field Is Empty") + elif vreason=="": + messagebox.showwarning("showwarning", "Field Is Empty") + else: + print("Details:",time,"|",date,"|",vehiclenum,"|",Vinout,"|",Vowner,"|",Vowner,"|",Vlmob,"|",vltyp,"|",vreason) + VhlReader=open("Data Records/Vehicle.txt","a") + VhlReader.write(str(date)+"|"+time+"|"+vehiclenum+"|"+Vinout+"|"+Vowner+"|"+Vlmob+"|"+vltyp+"|"+vreason+"\n") + messagebox.showinfo("STATUS", "RECORD ADDED TO DATABASE") + client = Client('AC4fb3f859d841739f658840ac79a3e879', '6bbdad1b6761f73b391dae6b4c69f87f') + message = client.messages \ + .create( + body="Hi "+Vowner+" \nWelcome to Yenepoya Institute of Technology"+" \nYour entering Time :"+str(time)+"\nDate:"+str(date)+"\nVehicle Number:"+vehiclenum+"\nLiqiud-Loop Gate Security System", + from_='+19403505053', + to="+91"+Vlmob + ) + + print(message.sid) + + + + VhlReader.close() # variables for vhl search-> s_date=StringVar() s_num=StringVar() @@ -99,13 +127,11 @@ def vehlsearch(): # print(temp) nl=line.split("|") temp.append(nl) + for i in range(0,len(temp)): if temp[i][2]==vnum: - treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6],temp[i][7])) - else: - messagebox.showerror("INFO", "Record Not Found in DB") - exit + # else: # for i in range(0,len(temp)): # treev.insert("", 'end', text ="L"+str(i),values =(temp[i][0],temp[i][1],temp[i][2],temp[i][3],temp[i][4],temp[i][5],temp[i][6],temp[i][7])) @@ -202,6 +228,7 @@ def update(): if line.startswith(temp_list[0]): nl=line.split("|") if nl[1]==temp_list[1]: + index=lines.index(line) print("up to",nl) up_record=[] up_record.append(nl[0]) @@ -217,13 +244,17 @@ def update(): update_file="|".join(up_record) # print(update_file) - INDEX=lines.index(line) - lines[INDEX]=update_file + # INDEX=lines.index(line) + lines[index]=update_file print(lines) + filereader2=open("Data Records/Vehicle.txt","w+") for i in lines: filereader2.write(i) + u_name=up_name.set("") + u_num=up_num.set("") + u_mob=up_mob.set("") filereader2.close() update_section.mainloop() @@ -234,6 +265,8 @@ def update(): # print("Up:",temp) # date of vhl + vdate = Label(update_section,text = "Date:",bg="#FFFFFF").place(x = 20,y = 70) + vdate = Entry(update_section, bd=0, bg="#C4C4C4", @@ -248,6 +281,7 @@ def update(): ) # vhl number + vhlnum = Label(update_section,text = "Vehicle Number:",bg="#FFFFFF").place(x = 250,y = 70) vhlnum = Entry(update_section, bd=0, bg="#C4C4C4", @@ -266,7 +300,7 @@ def update(): highlightthickness=0, command=updateData, relief="flat", - text="UPDATE" + text="View" ) addbtn.place( x=470.0, @@ -275,6 +309,7 @@ def update(): height=50.0 ) # vhl owner name + u_name = Label(update_section,text = "Owner:",bg="#FFFFFF").place(x = 20,y = 455) u_name = Entry(update_section, bd=0, bg="#C4C4C4", @@ -288,6 +323,8 @@ def update(): height=48.0 ) # Vehicle number + vhlnum = Label(update_section,text = "Vehicle Number:",bg="#FFFFFF").place(x = 247,y = 455) + vhlnum = Entry(update_section, bd=0, bg="#C4C4C4", @@ -300,6 +337,7 @@ def update(): width=182.0, height=48.0 ) + mob= Label(update_section,text = "Mobile:",bg="#FFFFFF").place(x = 473,y = 455) mob = Entry(update_section, bd=0, bg="#C4C4C4", diff --git a/sample.py b/sample.py deleted file mode 100644 index 8064337..0000000 --- a/sample.py +++ /dev/null @@ -1,38 +0,0 @@ -from email.mime import image -from fileinput import close -from pathlib import Path -from re import T -from tkinter import * -from tkinter import ttk - - -window=Tk() -window.geometry("400x400") -vhlnum = Entry(window, - bd=0, - bg="#C4C4C4", - highlightthickness=0, - textvariable="" -) -vhlnum.place( - x=100.0, - y=200.0, - width=182.0, - height=48.0 -) -updatebtn = Button(window, - - borderwidth=0, - highlightthickness=0, - command="", - relief="flat", - bg="light blue", - text="UPDATE" -) -updatebtn.place( - x=0.0, - y=0.0, - width=100.0, - height=50.0 -) -window.mainloop() \ No newline at end of file From 6f3b78dc893c82c8dbf2a81e6c5d6ad76519c8b6 Mon Sep 17 00:00:00 2001 From: Amal Prasad Date: Wed, 1 Jun 2022 22:16:19 +0530 Subject: [PATCH 22/22] STUDENT UPDATE SECTION LABEL COMPLETED AND MSG OFF --- Data Records/Student.txt | 1 - Data Records/Vehicle.txt | 16 +++++-------- gui.py | 49 ++++++++++++++++++++++++++-------------- sample_p.py | 29 ++++++++++++++++++++++++ 4 files changed, 67 insertions(+), 28 deletions(-) diff --git a/Data Records/Student.txt b/Data Records/Student.txt index 7e3a011..1420945 100644 --- a/Data Records/Student.txt +++ b/Data Records/Student.txt @@ -1,4 +1,3 @@ -2022-05-27|9:01pm|LIBIN SABU|4DM19IS027|9947789622|OUT|HOSTEL 2022-05-27|10:00PM|PRAJWAL|4DM19IS043|1234567890|OUT|MOODBIDRI 2022-05-27|10:01PM|PRAJWAL|4DM19IS045|1234567890|OUT|MOODBIDRI 2022-05-28|5:00|AKSHAY KUMAR|4DM19IS006|1234567890|OUT|MANGLORE diff --git a/Data Records/Vehicle.txt b/Data Records/Vehicle.txt index a5cc823..ff2ecc3 100644 --- a/Data Records/Vehicle.txt +++ b/Data Records/Vehicle.txt @@ -1,14 +1,10 @@ 2022-05-24|19:01:47|KL14A1000|OUT|SABU TV|896756551|BIKE|OUTSIDE 2022-05-24|19:01:47|KL14A7000|OUT|LIBIN SABU |896756551|BIKE|OUTSIDE -2022-05-26|19:15:07:PM|ERTYUIO|OUT|SUNNY |994763821|TRUCK|HOME +2022-05-26|19:15:07:PM|TN68K8900|OUT|SUNNY |994763821|TRUCK|HOME 2022-05-22|20:54:11|KL79G7900|OUT|AMAL PRASAD|7306557354|BIKE|MOODBIDRI 2022-05-30|14:35:24:PM|GA12H7890|IN|ADHITHYAN|9947789622|CAR|HOME -2022-05-31|22:10:40:PM|KL89H8900|OUT|ASEEL HK|1234567890|CAR|HOME -2022-05-31|22:12:26:PM|KL78Y789|IN|MELBIN B|34567890123|BIKE|TOUR -2022-06-01|00:04:35:AM|KL68H6789|OUT|AMAL PRASAD|7306557354|OUT|HOME -2022-06-01|00:06:03:AM|1234567|DFGHJ|AMAL|7306557354|ING|ZXVCBNM -2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|8304939772|CAR|TO VISIT HOSTEL -2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|80780775784|CAR|TO VISIT HOSTEL -2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|7306557354|CAR|TO VISIT HOSTEL -2022-06-01|00:08:35:AM|KL67S67890|OUT|LIBIN SABU|80780775784|CAR|TO VISIT HOSTEL -2022-06-01|00:12:29:AM|TN56Y78900|OUT|PRAJWAL|7306557354|BIKE|HOME +2022-06-01|00:22:56:AM|ZXCVBNM,./|OUT|ASDFGHJKL;|7306557354|CVBNM,| BNM, +2022-06-01|00:22:56:AM|ZXCVBNM,./|OUT|ASDFGHJKL;|7306557354|CVBNM,| BNM, +2022-06-01|21:04:54 PM|KL17U6799|OUT|PRASAD KP|9947789622|CAR|HOME +2022-06-01|21:05:07 PM|KL17U6799|OUT|PRASAD KP|9947789622|CAR|HOME +2022-06-01|21:07:08 PM|KL78ID007|IN|SABU VV|45678901234|TRUCK|HOME diff --git a/gui.py b/gui.py index 234570a..8337225 100644 --- a/gui.py +++ b/gui.py @@ -2,7 +2,7 @@ - +from time import strftime from email.mime import image from operator import index from pathlib import Path @@ -57,12 +57,13 @@ def relative_to_assets(path: str) -> Path: # time-> -now = datetime.now() -time = now.strftime("%H:%M:%S:%p") -# vlTime.set(time)string = strftime('%H:%M:%S %p') -# vlTime.config(text = string) -# vlTime.after(1000, time) -vlTime.set(time) + +def time(): + string = strftime('%H:%M:%S %p') + + + vlTime.set(string) + vdate.after(1000, time) # method for Insertion of vhl rcd def insertData(): time=vlTime.get() @@ -90,15 +91,15 @@ def insertData(): VhlReader=open("Data Records/Vehicle.txt","a") VhlReader.write(str(date)+"|"+time+"|"+vehiclenum+"|"+Vinout+"|"+Vowner+"|"+Vlmob+"|"+vltyp+"|"+vreason+"\n") messagebox.showinfo("STATUS", "RECORD ADDED TO DATABASE") - client = Client('AC4fb3f859d841739f658840ac79a3e879', '6bbdad1b6761f73b391dae6b4c69f87f') - message = client.messages \ - .create( - body="Hi "+Vowner+" \nWelcome to Yenepoya Institute of Technology"+" \nYour entering Time :"+str(time)+"\nDate:"+str(date)+"\nVehicle Number:"+vehiclenum+"\nLiqiud-Loop Gate Security System", - from_='+19403505053', - to="+91"+Vlmob - ) + # client = Client('AC4fb3f859d841739f658840ac79a3e879', '6bbdad1b6761f73b391dae6b4c69f87f') + # message = client.messages \ + # .create( + # body="Hi "+Vowner+"Welcome to Yenepoya Institute of Technology"+" \nYour entering Time :"+str(time)+"\nDate:"+str(date)+"\nVehicle Number:"+vehiclenum+"\nLiqiud-Loop Gate Security System", + # from_='+19403505053', + # to="+91"+Vlmob + # ) - print(message.sid) + # print(message.sid) @@ -252,6 +253,7 @@ def update(): filereader2=open("Data Records/Vehicle.txt","w+") for i in lines: filereader2.write(i) + messagebox.showinfo("Sucess", "Successfully updated") u_name=up_name.set("") u_num=up_num.set("") u_mob=up_mob.set("") @@ -1093,7 +1095,7 @@ def student_update(): sup_usn=StringVar() sup_mob=StringVar() search_date.set("2022-05-27") - search_usn.set("4dm19is027") + search_usn.set("4dm19is045") def SearchTree(): Student_date=search_date.get() print(Student_date) @@ -1198,6 +1200,10 @@ def update(): filereader2=open("Data Records/Student.txt","w+") for i in lines: filereader2.write(i) + messagebox.showinfo("Status", "Record Updated") + sup_name.set("") + sup_usn.set("") + sup_mob.set("") filereader2.close() # -----------------Endend------------ @@ -1205,6 +1211,8 @@ def update(): # date of Student + vdate = Label(Supdate_section,text = "Date:",bg="#FFFFFF").place(x = 20,y = 70) + student_date = Entry(Supdate_section, bd=0, bg="#C4C4C4", @@ -1219,6 +1227,8 @@ def update(): ) # vhl number + vhlnum = Label(Supdate_section,text = "USN:",bg="#FFFFFF").place(x = 250,y = 70) + student_usn = Entry(Supdate_section, bd=0, bg="#C4C4C4", @@ -1246,6 +1256,8 @@ def update(): height=50.0 ) # vhl owner name + u_name = Label(Supdate_section,text = "Name:",bg="#FFFFFF").place(x = 20,y = 455) + update_nameS = Entry(Supdate_section, bd=0, bg="#C4C4C4", @@ -1259,6 +1271,8 @@ def update(): height=48.0 ) # Vehicle number + vhlnum = Label(Supdate_section,text = "USN:",bg="#FFFFFF").place(x = 247,y = 455) + student_usn2 = Entry(Supdate_section, bd=0, bg="#C4C4C4", @@ -1271,6 +1285,7 @@ def update(): width=182.0, height=48.0 ) + mob= Label(Supdate_section,text = "Mobile:",bg="#FFFFFF").place(x = 473,y = 455) student_mob= Entry(Supdate_section, bd=0, bg="#C4C4C4", @@ -1401,7 +1416,7 @@ def update(): statusbar.pack(side=BOTTOM, fill=X) # ended------------> window.resizable(False,False) - +time() # ------STUDENT SEARCH SECTION--------> photo = PhotoImage(file ="assets/barrier.png") window.iconphoto(False,photo) diff --git a/sample_p.py b/sample_p.py index e69de29..41b1b2a 100644 --- a/sample_p.py +++ b/sample_p.py @@ -0,0 +1,29 @@ +from tkinter import * + +from time import strftime + +root=Tk() +root.geometry("400x400") + +u_num=StringVar() +def time(): + string = strftime('%H:%M:%S %p') + # vhlnum.config(text = string) + u_num.set(string) + vhlnum.after(1000, time) + +vhlnum = Entry(root, + bd=0, + bg="#C4C4C4", + highlightthickness=0, + textvariable=u_num + + ) +vhlnum.place( + x=250.0, + y=100.0, + width=182.0, + height=48.0 + ) +time() +root.mainloop() \ No newline at end of file