def createadmin(AdminId, AdminUserName, AdminPhoneNumber, AdminEmailId, AdminPassword): createFolder('./AdminDetails') try: if os.path.exists('./AdminDetails/admin_details.csv'): print('Details directory already exists') else: print("Details directory doesn't Exist") with open('./AdminDetails/admin_details.csv', 'w') as file: writer = csv.writer(file) writer.writerow([ "AdminIds", "AdminUserNames", "AdminPhoneNumbers", "AdminEmailIds", "AdminPasswords" ]) print("Creating new directory for employee_details.csv.") except OSError: print("File Already Exists") AdminId = int(AdminId) AdminUserName = AdminUserName AdminPhoneNumber = AdminPhoneNumber AdminEmailId = AdminEmailId AdminPassword = AdminPassword df = pd.read_csv('./AdminDetails/admin_details.csv') if int(AdminId) in df['AdminIds'].values: print("\nAdmin already exists!!!") print("\nExiting.") else: print("\nCreating New Admin.") data = [{ 'AdminIds': AdminId, 'AdminUserNames': AdminUserName, 'AdminPhoneNumbers': AdminPhoneNumber, 'AdminEmailIds': AdminEmailId, 'AdminPasswords': AdminPassword }] df = pd.read_csv('./AdminDetails/admin_details.csv') df = df.append(data, ignore_index=True, sort=False) df.to_csv('./AdminDetails/admin_details.csv', index=False) upload_to_database()
def leave_recognition(): #DateTime,TimeStamp,WeekDay Variable now = datetime.now() year_dir = str(now.year) month_dir = str(now.month) if len(month_dir) == 2: pass else: month_dir = '0' + str(now.month) day_dir = str(now.day) if len(day_dir) == 2: pass else: day_dir = '0' + str(now.day) weekDays = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") weekday = str(weekDays[now.weekday()]) filename = '_' + weekday date_string = year_dir + '-' + month_dir + '-' + day_dir filename = date_string + '_' + weekday #main attendance path and csv file today_path = './Attendance/main_attendance/' + year_dir + '/' + month_dir main_attendance_csv_path = today_path + '/' + filename + '.csv' print(main_attendance_csv_path) df = pd.read_csv(main_attendance_csv_path) #Loading Recognizer recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read('Model/model.yml') cascadePath = "haarcascade_frontalface_default.xml" faceCascade = cv2.CascadeClassifier(cascadePath) #getting Id,Name from Image Ids, UserNames, keyValues = keyValuePairs('EmployeeDetails/dataSet') cam = cv2.VideoCapture(0) font = cv2.FONT_HERSHEY_SIMPLEX while True: ret, im = cam.read() gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, 1.3, 5) for (x, y, w, h) in faces: cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0), 2) Id, conf = recognizer.predict(gray[y:y + h, x:x + w]) if (conf > 40 and conf < 100): if Id in keyValues.keys(): Id1 = 'User Id : ' + str(Id) Name = keyValues[Id] Name_ = Name Name1 = 'User Name: ' + Name conf_ = str(conf) leave_datetime = datetime.now() leave_timestamp = datetime.timestamp(leave_datetime) #script for noting main_attendance Leave a = df.loc[df['Ids'] == Id]['Leave_DateTime'] == 'Not-Marked' if a.all(): #issuing attendance in main_attendance print("Marking Leave for ") df.loc[df['Ids'] == Id, ['Leave_DateTime', 'Leave_TimeStamp']] = [ leave_datetime, leave_timestamp ] df.to_csv(main_attendance_csv_path, index=False) upload_to_database() else: print("Leave already noted!") student_path = './Attendance/employee_attendance/' + str( Id) + '_' + Name + '.csv' df1 = pd.read_csv(student_path) b = df1.loc[df1['Date'] == date_string]['Leave_DateTime'] == 'Not-Marked' if b.all(): #issuing attendance in main_attendance print("Marking Leave for ") df1.loc[df1['Date'] == date_string, ['Leave_DateTime', 'Leave_TimeStamp']] = [ leave_datetime, leave_timestamp ] df1.to_csv(student_path, index=False) upload_to_database() #red bounding box,font for Unknown User cv2.putText(im, Id1, (x, y + h + 20), font, 0.7, (0, 255, 0), 2) cv2.putText(im, Name, (x, y + h + 38), font, 0.7, (0, 255, 0), 2) cv2.putText(im, conf_, (x, y + h + 58), font, 0.7, (0, 255, 0), 2) else: Id1 = "Null" Name = "Unknown" conf_ = str(conf) #red bounding box,font for Unknown User cv2.rectangle(im, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.putText(im, Id1, (x, y + h + 20), font, 0.7, (0, 0, 255), 2) cv2.putText(im, Name, (x, y + h + 38), font, 0.7, (0, 0, 255), 2) cv2.putText(im, conf_, (x, y + h + 58), font, 0.7, (0, 0, 255), 2) else: Id1 = "User Id: Unknown" Name = "User Name: Unknown" conf_ = 'NuLL' #red bounding box,font for Unknown User cv2.rectangle(im, (x, y), (x + w, y + h), (0, 0, 255), 2) cv2.putText(im, Id1, (x, y + h + 20), font, 0.7, (0, 0, 255), 2) cv2.putText(im, Name, (x, y + h + 38), font, 0.7, (0, 0, 255), 2) cv2.putText(im, conf_, (x, y + h + 58), font, 0.7, (0, 0, 255), 2) print(Name) cv2.imshow('im', im) if cv2.waitKey(1) == 27: break cam.release() cv2.destroyAllWindows()
attend_datetime=datetime.now() attend_timestamp=datetime.timestamp(attend_datetime) df=pd.read_csv(main_attendance_csv_path) a=df.loc[df['Ids']==Id]['Attendance']=='Absent' if a.all(): #issuing attendance in main_attendance print("Marking Present for ") df.loc[df['Ids']==Id,['Attendance','Attend_DateTime','Attend_TimeStamp','Leave_DateTime','Leave_TimeStamp']]=['Present',attend_datetime,attend_timestamp,'Not-Marked','Not-Marked'] df.to_csv(main_attendance_csv_path,index=False) upload_to_database() else: print("Attendance already noted!") student_path='./Attendance/employee_attendance/'+str(Id)+'_'+Name+'.csv' df1=pd.read_csv(student_path) data_row=[{'Name':Name,'Date':date_string,'Day':weekday,'Attendance':'Present' ,'Attend_DateTime':attend_datetime,'Attend_TimeStamp':attend_timestamp,'Leave_DateTime':'Not-Marked','Leave_TimeStamp':'Not-Marked'}] date_list=[] #checking for list of dates in particular students csv file for marking new attendance for i in df1.iloc[:,1]: date_list.append(i) if date_string in date_list: print(Name) else:
def directory(): #creating hierarchy of directories as Attendance/Year/Month/Day print("--Creating Main Attendance Directory.--") createFolder('./Attendance/main_attendance') #DateTime,TimeStamp,WeekDay Variable now = datetime.now() year_dir = str(now.year) month_dir = str(now.month) if len(month_dir) == 2: pass else: month_dir = '0' + str(now.month) day_dir = str(now.day) if len(day_dir) == 2: pass else: day_dir = '0' + str(now.day) weekDays = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday") weekday = str(weekDays[now.weekday()]) today_path = './Attendance/main_attendance/' + year_dir + '/' + month_dir createFolder(today_path) date_string = year_dir + '-' + month_dir + '-' + day_dir filename = date_string + '_' + weekday #student details csv student_csv_path = './EmployeeDetails/employee_details.csv' #adding more columns to students csv and saving the sheet for main_attendance main_attendance_csv_path = today_path + '/' + filename + '.csv' df = pd.read_csv(student_csv_path) df["Attendance"] = 'Absent' df["Attend_DateTime"] = int(0) df["Attend_TimeStamp"] = float(0.0) df["Leave_DateTime"] = int(0) df["Leave_TimeStamp"] = float(0.0) df.to_csv(main_attendance_csv_path, index=False) print('--csv file created for main attendance--') #creating csv and directory for if os.path.exists('./Attendance/employee_attendance'): for i in range(0, len(df)): student_csv_path = './Attendance/employee_attendance/' + str( df.iloc[i][0]) + '_' + df.iloc[i][1] + '.csv' if os.path.exists(student_csv_path): pass else: data = [ 'Name', 'Date', 'Day', 'Attendance', 'Attend_DateTime', 'Attend_TimeStamp', 'Leave_DateTime', 'Leave_TimeStamp' ] df1 = pd.DataFrame(columns=data) df1.to_csv(student_csv_path, index=False) print('--csv file created for: ' + df.iloc[i][1] + '--') else: createFolder('./Attendance/employee_attendance') print("--Created Student Attendance Directory--") data = [ 'Name', 'Date', 'Day', 'Attendance', 'Attend_DateTime', 'Attend_TimeStamp', 'Leave_DateTime', 'Leave_TimeStamp' ] for i in range(0, len(df)): student_csv_path = './Attendance/employee_attendance/' + df.iloc[ i][0] + '_' + df.iloc[i][1] + '.csv' df1 = pd.DataFrame(columns=data) df1.to_csv(student_csv_path, index=False) print('--csv file created for: ' + df.iloc[i][1] + '--') print('\n-----DONE-----') upload_to_database()