def get_fingerprint_user(self, cr, uid, ids, context=None): employee_obj = self.pool.get('hr.employee') for record in self.browse(cr, uid, ids, context=context): ip_address = record.ip_address device_port = record.device_port zk = zklib.ZKLib(ip_address, device_port) ret = zk.connect() data_employee = {} data_user = zk.getUser() print data_user if data_user: for x in data_user: data_employee['nik'] = data_user[x][0] data_employee['name'] = data_user[x][1] #check user exist exist_user = self.pool.get('hr.employee').search( cr, uid, [('nik', '=', data_user[x][0])]) if not exist_user: employee_obj.create(cr, uid, data_employee) zk.disconnect() return True
def clear_machine_log(self, cr, uid, ids, context=None): for record in self.browse(cr, uid, ids, context=context): ip_address = record.ip_address device_port = record.device_port zk = zklib.ZKLib(ip_address, device_port) ret = zk.connect() zk.clearAttendance() zk.disconnect() return True
def zkDeviceConnect(self): self.zkConn = zklib.ZKLib(self.zkIp, self.zkPort) zkConnStatus = None zkConnError = None try: connStat = self.zkConn.connect() if connStat: zkConnStatus = "zkConnected" else: zkConnStatus = "zkNotConnected" zkConnError = "Please check device ip and port" except Exception, e: zkConnStatus = "zkNotConnected" zkConnError = e
def get_attendance_log(self, cr, uid, ids, context=None): attendance_log_obj = self.pool.get('original.attendance.log') employee_obj = self.pool.get('hr.employee') for record in self.browse(cr, uid, ids, context=context): ip_address = record.ip_address device_port = record.device_port zk = zklib.ZKLib(ip_address, device_port) ret = zk.connect() data_log = {} attendance = zk.getAttendance() if attendance: for log in attendance: temp_string_time = unicode(log[2].time()) attendance_log_ids = attendance_log_obj.search( cr, uid, [('fingerprint_id', '=', log[0]), ('date', '=', log[2].date()), ('time', '=', temp_string_time)]) #if fingerprint log is not exist, download and create new record if not attendance_log_ids: data_log['fingerprint_id'] = log[0] data_log['date'] = log[2].date() data_log['time'] = log[2].time() data_log['status'] = log[1] data_log['name'] = log[0] employee_ids = employee_obj.search(cr, uid, [('nik', '=', log[0])]) if employee_ids: data_log['name'] = employee_obj.search( cr, uid, [('nik', '=', log[0])])[0] attendance_log_obj.create(cr, uid, data_log) zk.disconnect() return True
def get_machine_info(self, cr, uid, ids, context=None): for record in self.browse(cr, uid, ids, context=context): ip_address = record.ip_address device_port = record.device_port zk = zklib.ZKLib(ip_address, device_port) ret = zk.connect() total_user = 0 total_log = 0 data_user = zk.getUser() if data_user: for x in data_user: total_user += 1 attendance = zk.getAttendance() if attendance: for x in attendance: total_log += 1 self.write( cr, uid, ids, { 'software_version': zk.version(), 'os_version': zk.osversion(), 'device_platform': zk.platform(), 'fm_platform': zk.fmVersion(), 'device_name': zk.deviceName(), 'serial_number': zk.serialNumber(), 'device_time': zk.getTime(), 'total_user': total_user, 'total_log': total_log, }) zk.disconnect() return True
import sys sys.path.append("zklib") import zklib import time import zkconst zk = zklib.ZKLib("192.168.1.201", 4370) ret = zk.connect() print "connection:", ret if ret == True: print "Disable Device", zk.disableDevice() print "ZK Version:", zk.version() print "OS Version:", zk.osversion() """ print "Extend Format:", zk.extendFormat() print "Extend OP Log:", zk.extendOPLog() """ print "Platform:", zk.platform() print "Platform Version:", zk.fmVersion() print "Work Code:", zk.workCode() print "Work Code:", zk.workCode() print "SSR:", zk.ssr() print "Pin Width:", zk.pinWidth() print "Face Function On:", zk.faceFunctionOn() print "Serial Number:", zk.serialNumber() print "Device Name:", zk.deviceName()
import zklib import threading # print current lock user def add_record(record): print(record) zk = zklib.ZKLib("192.168.1.103", 4370) # IP of my device was 192.168.1.103 res = zk.connect() temp = 0 # flag to disconnect if res: while temp < 4: data = zk.zkrecvCurrentAtt() # (uid, time) if data: if isinstance(data, bool): continue t = threading.Thread(target=add_record, args=(data, )) t.start() temp += 1 # zk.disconnect()
import sys sys.path.append("zklib") import zklib import time import zkconst zk = zklib.ZKLib("192.168.1.72", 4370) ret = zk.connect() print "Pesan Koneksi:", ret if ret == True: print "Pesan Disable Device", zk.disableDevice() print "Pesan Versi:", zk.version() print "Pesan Versi OS:", zk.osversion() """ print "Pesan Extend Format:", zk.extendFormat() print "Pesan Extend OP Log:", zk.extendOPLog() """ print "Pesan Platform:", zk.platform() print "Pesan Platform Version:", zk.fmVersion() print "Pesan Work Code:", zk.workCode() print "Pesan Work Code:", zk.workCode() print "Pesan SSR:", zk.ssr() print "Pesan Pin Width:", zk.pinWidth() print "Pesan Face Function On:", zk.faceFunctionOn() print "Pesan Serial Number:", zk.serialNumber() print "Pesan Device Name:", zk.deviceName()
def attendance_verify(self): connection = MySQLdb.connect(host="localhost", user="******", passwd="root", db="nims_store") cursor = connection.cursor() #cursor.execute("select * from user_tbl where user_name= %s", (regdate1)) #row = cursor.fetchone() zk1 = zklib.ZKLib("192.168.1.71", 4370) zk2 = zklib.ZKLib("192.168.1.72", 4370) ret1 = zk1.connect() ret2 = zk2.connect() print "Connected To Doctors Machine:", ret1 print "Connected To General Machine:", ret1 if ret1 == True and ret2 == False: ermessage = "Unable To Connect Device" tm.showinfo("Device Not Connected", ermessage) if ret1 == True and ret2 == True: print "Pesan Disable Device", zk1.disableDevice( ), zk2.disableDevice() #print "Pesan Versi:", zk.version() #print "Pesan Versi OS:", zk.osversion() """ print "Pesan Extend Format:", zk.extendFormat() print "Pesan Extend OP Log:", zk.extendOPLog() """ #print "Pesan Platform:", zk.platform() #print "Pesan Platform Version:", zk.fmVersion() #print "Pesan Work Code:", zk.workCode() #print "Pesan Work Code:", zk.workCode() #print "Pesan SSR:", zk.ssr() #print "Pesan Pin Width:", zk.pinWidth() #print "Pesan Face Function On:", zk.faceFunctionOn() #print "Pesan Serial Number:", zk.serialNumber() #print "Pesan Device Name:", zk.deviceName() # Delete a row from a table. print "Deleting Previous Data" sql_command = """ DELETE FROM nims_emp_ids """ cursor.execute(sql_command) data_user1 = zk1.getUser() data_user2 = zk2.getUser() print "Pesan Get User:"******"[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3] ) #print "Pesan Clear Admin:", zk.clearAdmin() #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN) cursor.execute( """INSERT INTO nims_emp_ids VALUES (%s,%s,%s)""", (data_user1[uid1][0], data_user1[uid1][1], 51)) if data_user2: for uid2 in data_user2: if data_user2[uid2][2] == 14: level2 = 'Admin' else: level2 = 'User' #print "[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3] ) #print "Pesan Clear Admin:", zk.clearAdmin() #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN) cursor.execute( """INSERT INTO nims_emp_ids VALUES (%s,%s,%s)""", (data_user2[uid2][0], data_user2[uid2][1], 54)) connection.commit() #print cursor.fetchall() connection.close() print "Pesan Get Time:", zk1.getTime() print "Pesan Enable Device", zk1.enableDevice() print "Pesan Enable Device", zk2.enableDevice() print "Pesan Disconnect Doctors Machine:", zk1.disconnect() print "Pesan Disconnect General Machine:", zk2.disconnect() ermessage = "User Data Retrieve Completed" tm.showinfo("User Data Completed ", ermessage)
def attendance_verify(self): connection = MySQLdb.connect(host="localhost", user="******", passwd="root", db="nims_store") cursor = connection.cursor() #cursor.execute("select * from user_tbl where user_name= %s", (regdate1)) #row = cursor.fetchone() zk1 = zklib.ZKLib("192.168.1.71", 4370) zk2 = zklib.ZKLib("192.168.1.72", 4370) ret1 = zk1.connect() ret2 = zk2.connect() print "Connected To Doctors Machine:", ret1 print "Connected To General Machine:", ret1 if ret1 == True and ret2 == True: print "Pesan Disable Device", zk1.disableDevice( ), zk2.disableDevice() #print "Pesan Versi:", zk.version() #print "Pesan Versi OS:", zk.osversion() """ print "Pesan Extend Format:", zk.extendFormat() print "Pesan Extend OP Log:", zk.extendOPLog() """ #print "Pesan Platform:", zk.platform() #print "Pesan Platform Version:", zk.fmVersion() #print "Pesan Work Code:", zk.workCode() #print "Pesan Work Code:", zk.workCode() #print "Pesan SSR:", zk.ssr() #print "Pesan Pin Width:", zk.pinWidth() #print "Pesan Face Function On:", zk.faceFunctionOn() #print "Pesan Serial Number:", zk.serialNumber() #print "Pesan Device Name:", zk.deviceName() """ data_user = zk.getUser() print "Pesan Get User:"******"[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3] ) #print "Pesan Clear Admin:", zk.clearAdmin() #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN) """ # Delete a row from a table. print "Deleting Previous Data" sql_command = """ DELETE FROM nims_attendance """ cursor.execute(sql_command) attendance1 = zk1.getAttendance() attendance2 = zk2.getAttendance() print "Pesan Get Attendance:" print "Retreiving Current Data" if (attendance1): for lattendance1 in attendance1: if lattendance1[1] == 15: state1 = 'Check In' elif lattendance1[1] == 0: state1 = 'Check Out' else: state1 = 'Undefined' # insert to table cursor.execute( """INSERT INTO nims_attendance VALUES (%s,%s,%s,%s,%s,%s,%s)""", (lattendance1[0], lattendance1[2].date(), lattendance1[2].time(), 51, 0, 0, 0)) #print "%s, %s, %s, 51, 0, 0, 0" % ( lattendance[0], lattendance[2].date(), lattendance[2].time() ) #print "Pesan Clear Attendance:", zk.clearAttendance() if (attendance2): for lattendance2 in attendance2: if lattendance2[1] == 15: state2 = 'Check In' elif lattendance2[1] == 0: state2 = 'Check Out' else: state2 = 'Undefined' # insert to table cursor.execute( """INSERT INTO nims_attendance VALUES (%s,%s,%s,%s,%s,%s,%s)""", (lattendance2[0], lattendance2[2].date(), lattendance2[2].time(), 54, 0, 0, 0)) #print "%s, %s, %s, 51, 0, 0, 0" % ( lattendance[0], lattendance[2].date(), lattendance[2].time() ) #print "Pesan Clear Attendance:", zk.clearAttendance() connection.commit() #print cursor.fetchall() connection.close() print "Pesan Get Time:", zk1.getTime() print "Pesan Enable Device", zk1.enableDevice() print "Pesan Enable Device", zk2.enableDevice() print "Pesan Disconnect Doctors Machine:", zk1.disconnect() print "Pesan Disconnect General Machine:", zk2.disconnect() ermessage = "Data Retrieve Completed" tm.showinfo("Data Completed ", ermessage)
def download_attendance(self, cr, uid, ids, context=None): user_pool = self.pool.get('res.users') user = user_pool.browse(cr, SUPERUSER_ID, uid) tz = pytz.timezone(user.partner_id.tz) or False if not tz: raise osv.except_osv( 'Error', "Timezone is not defined on this %s user." % user.name) machine_ip = self.browse(cr, uid, ids).name port = self.browse(cr, uid, ids).port location_id = self.browse(cr, uid, ids).location_id zk = zklib.ZKLib(machine_ip, int(port)) res, error_str = zk.connect() aclog = '' if res == True: zk.enableDevice() zk.disableDevice() attendance = [] Done = False while not Done: attendance_new = zk.getAttendance() if (attendance_new): for lattendance in attendance_new: if lattendance[0] == '': Done = True break attendance.append(lattendance) hr_attendance = self.pool.get("hr.attendance") hr_employee = self.pool.get("hr.employee") hr_employee_zk_location_line_obj = self.pool.get( "biometric.machine.zk_location.line") for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' + str( lattendance[2].time()) aclog = lattendance[1] atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time_localize = pytz.utc.localize( atten_time1).astimezone(tz) #print atten_time_localize.hour-atten_time1.hour #if atten_time_localize.hour-atten_time1.hour >=0: atten_time = atten_time1 - (timedelta( hours=atten_time_localize.hour - atten_time1.hour)) atten_time = datetime.strftime(atten_time, '%Y-%m-%d %H:%M:%S') #atten_time1 = datetime.strftime(atten_time1,'%Y-%m-%d %H:%M:%S') #in_time = datetime.strptime(atten_time1,'%Y-%m-%d %H:%M:%S').time() hr_employee_zk_location_line_id = hr_employee_zk_location_line_obj.search( cr, uid, [("zk_num", "=", str(lattendance[0])), ('location_id.id', '=', location_id.id)]) hr_employee_zk_location_line_rec = hr_employee_zk_location_line_obj.browse( cr, uid, hr_employee_zk_location_line_id, context) #print hr_employee_zk_location_line_rec employee_id = hr_employee_zk_location_line_rec.emp_id.id or False #print employee_id #employee_id = hr_employee.search(cr,uid,[("zk_num", "=", str(lattendance[0])),('location_id.id','=',location_id.id)]) address_id = False category = False if employee_id: try: atten_ids = hr_attendance.search( cr, uid, [('employee_id', '=', employee_id), ('name', '=', atten_time)]) if atten_ids: continue else: atten_id = hr_attendance.create( cr, uid, { 'name': atten_time, 'day': str(lattendance[2].date()), 'employee_id': employee_id, 'action': aclog }) except Exception, e: pass zk.enableDevice() zk.disconnect() return True
def attendance_verify(self): regdate1 = self.regdate1txt.get() print regdate1 connection = MySQLdb.connect(host="localhost", user="******", passwd="root", db="nims_store") cursor = connection.cursor() #cursor.execute("select * from user_tbl where user_name= %s", (regdate1)) #row = cursor.fetchone() zk = zklib.ZKLib("192.168.1.72", 4370) ret = zk.connect() print "Pesan Koneksi:", ret if ret == True: print "Pesan Disable Device", zk.disableDevice() print "Pesan Versi:", zk.version() print "Pesan Versi OS:", zk.osversion() """ print "Pesan Extend Format:", zk.extendFormat() print "Pesan Extend OP Log:", zk.extendOPLog() """ print "Pesan Platform:", zk.platform() print "Pesan Platform Version:", zk.fmVersion() print "Pesan Work Code:", zk.workCode() print "Pesan Work Code:", zk.workCode() print "Pesan SSR:", zk.ssr() print "Pesan Pin Width:", zk.pinWidth() print "Pesan Face Function On:", zk.faceFunctionOn() print "Pesan Serial Number:", zk.serialNumber() print "Pesan Device Name:", zk.deviceName() data_user = zk.getUser() print "Pesan Get User:"******"[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3]) #print "Pesan Clear Admin:", zk.clearAdmin() #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN) attendance = zk.getAttendance() print "Pesan Get Attendance:" if (attendance): for lattendance in attendance: if lattendance[1] == 15: state = 'Check In' elif lattendance[1] == 0: state = 'Check Out' else: state = 'Undefined' #insert to table cursor.execute( """INSERT INTO nims_attendance VALUES (%s,%s,%s,%s,%s,%s,%s)""", (lattendance[0], lattendance[2].date(), lattendance[2].time(), 54, 0, 0, 0)) connection.commit() #print "%s, %s, %s, 51, 0, 0, 0" % ( lattendance[0], lattendance[2].date(), lattendance[2].time(), ) #print "Pesan Clear Attendance:", zk.clearAttendance() #show table cursor.execute( """SELECT * FROM nims_attendance where reg_date=%s;""", (regdate1)) print cursor.fetchall() connection.close() print "Pesan Get Time:", zk.getTime() print "Pesan Enable Device", zk.enableDevice() print "Pesan Disconnect:", zk.disconnect()