def _updateAttendanceAll(self): # all_del_raw_attendence=self.env['ecube.raw.attendance'].search(['attendance_date','=',]) # for x in all_del_raw_attendence: # x.unlink() machine_list=self.env['machine.info'].search([]) if not machine_list: machine_list=self.env['machine.info'].create({ 'db' : 'data base', }) data_base=machine_list.db print data_base login=machine_list.odooLogin print login odoopwd=machine_list.odooPasswd print odoopwd ip_list=[] for x in machine_list.product_ids: if not x.status=="no": ip=x.ip print ip zk = zklib.ZKLib(ip, int(config.key['port'])) result=zk.connect() if result == False: print ip print "falseeeeeeeeeeeeeeeeeeeee" self._attendance_error(ip) continue print "startttttttttttttttttt" self._updateAttendance(ip,data_base,login,odoopwd)
def clear_attendance(self): for info in self: try: machine_ip = info.name port = info.port_no zk = zklib.ZKLib(machine_ip, port) conn = self.device_connect(zk) if conn: zk.enableDevice() clear_data = zk.getAttendance() if clear_data: zk.clearAttendance() self._cr.execute( """delete from zk_machine_attendance""") else: raise osv.except_osv( _('Error'), _('Unable to get the attendance log, please try again later.' )) else: raise osv.except_osv( _('Error'), _('Unable to connect, please check the parameters and network connections.' )) except: raise ValidationError('Warning !!! Machine is not connected')
def update_attandance(self): zk = zklib.ZKLib(self.name, int(self.port)) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() attendance = zk.getAttendance() timesheet_obj = self.env['bio.machine.attendance'] if (attendance): for lattendance in attendance: print lattendance time_att = str(lattendance[2].date()) + ' ' + str( lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 - timedelta(hours=5, minutes=30) atten_time = datetime.strftime(atten_time, '%Y-%m-%d %H:%M:%S') if lattendance[1] == 1: state = 'Check In' elif lattendance[1] == 0: state = 'Check Out' else: state = 'Undefined' valuessss = { 'user_id': lattendance[0], 'time': atten_time, 'status': state, } timesheet_obj.create(valuessss) zk.clearAttendance() zk.enableDevice() zk.disconnect() machine_att = self.env['bio.machine.attendance'].search([]) hr_att = self.env['hr.attendance'] if (machine_att): for att in machine_att: print att machine_user = self.env['bio.machine.users'].search([ ('user_id', '=', att.user_id) ]) if att.status == 'Check In': action = 'sign_in' elif att.status == 'Check Out': action = 'sign_out' valuessss = { 'name': att.time, 'employee_id': machine_user.emp_id, 'action': action, } hr_att.create(valuessss) machine_att.unlink() else: raise Warning( _('Unable to connect, please check the parameters and network connections.' ))
def download_attendance(self, cr, uid, ids, context=None): machine_ip = self.browse(cr, uid, ids).name port = self.browse(cr, uid, ids).port zk = zklib.ZKLib(machine_ip, int(port)) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() attendance = zk.getAttendance() hr_attendance = self.pool.get("hr.attendance") hr_employee = self.pool.get("hr.employee") if (attendance): for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' + str( lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 - timedelta(hours=5, minutes=30) 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() employee_id = hr_employee.search( cr, uid, [("emp_code", "=", str(lattendance[0]))]) address_id = False category = False if employee_id: address_id = hr_employee.browse( cr, uid, employee_id[0]).address_id category = hr_employee.browse(cr, uid, employee_id[0]).category try: atten_ids = hr_attendance.search( cr, uid, [('employee_id', '=', employee_id[0]), ('name', '=', atten_time)]) if atten_ids: continue else: # print "Date %s, Name %s: %s" % ( lattendance[2].date(), lattendance[2].time(), lattendance[0] ) atten_id = hr_attendance.create( cr, uid, { 'name': atten_time, 'address_id': address_id.id, 'category': category, 'day': str(lattendance[2].date()), 'employee_id': employee_id[0], 'action': 'sign_in' }) # print atten_id except Exception, e: pass # print "Exception..Attendance creation======", e.args zk.enableDevice() zk.disconnect() return True
def connec(): import sys from zklib import zklib import time from zklib import zkconst zk = zklib.ZKLib("213.6.151.118", 4370) ret = zk.connect() return "connection:", ret
def _updateAttendance(self,ip,data_base,login,odoopwd): print "nextttttttttttttttttttttttttt" zk = zklib.ZKLib(ip, int(config.key['port'])) # common = xmlrpclib.ServerProxy('%s/xmlrpc/2/common' % config.key['odooserver']) # common.version() # uid = common.authenticate(data_base, login, odoopwd, {}) # api = xmlrpclib.ServerProxy('%s/xmlrpc/2/object' % config.key['odooserver']) res = zk.connect() zk.enableDevice() zk.disableDevice() info = [] attendance = zk.getAttendance() print "111111111111111111111111111111111" actualServerTime = str(datetime.now()) requiredServerTime = actualServerTime.split('.') requiredServerDate = requiredServerTime[0].split(' ') if (attendance): for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' +str(lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 atten_time = datetime.strftime(atten_time,'%Y-%m-%d %H:%M:%S') attenDate = str(atten_time).split(' ') if (requiredServerDate[0] == attenDate[0]): data = { 'user_id' :lattendance[0], 'Date' : str(lattendance[2].date()), 'Time' : str(lattendance[2].time()), 'M_date' : attenDate[0], 'M_time' : attenDate[1], 'DateTime' : atten_time } info.append(data) for rec in info: user_id_name =rec['user_id'] machine_date= rec['DateTime'] record_date=time.strftime("%d/%m/%Y") record_time=(datetime.now() + timedelta(hours=5)).strftime("%H:%M:%S") raw_attendence=self.env['struct.attend'].search([('attendance_date','=',machine_date),('machine_id','=',user_id_name),('name','=',ip)]) if not raw_attendence: membership=self.env['reg.form'].search([('emp_machine_id','=',user_id_name)]) print "Createeeeeeeeeeeeeee Ateendenceeeeeeee" self.env['struct.attend'].create({ 'employee_id': membership.id, 'attendance_date': machine_date, 'name': ip, 'machine_id': str(user_id_name), 'date': rec['M_date'], 'time': rec['M_time'], 'branch': membership.branch.id, 'premium': membership.premium, })
def download_attendance(self): hr_attendance = self.env['hr.attendance'].browse() for info in self: machine_ip = info.name port = info.port # connect to the biometric device using the machine ip and port zk = zklib.ZKLib(machine_ip, int(port)) res = zk.connect() if res: zk.enableDevice() user = zk.getUser() attendance = zk.getAttendance() if (attendance): # get the user data from the biometric device user = zk.getUser() for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' + str(lattendance[2].time()) atten_time = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = datetime.strftime(atten_time, '%Y-%m-%d %I:%M:%S') in_time = datetime.strptime(atten_time, '%Y-%m-%d %H:%M:%S').time() time_new = str(in_time) time_new = time_new.replace(":", ".", 1) time_new = time_new[0:5] check_in = fields.Datetime.to_string(fields.Datetime.context_timestamp(self, fields.Datetime.from_string(atten_time))), if user: for uid in user: # compare the employee code in user data with employee code in attendance data of each employee in the attendance list # only matched users are processed if user[uid][0] == str(lattendance[0]): get_user_id = self.env['hr.employee'].search([('emp_code', '=', str(lattendance[0]))]) if get_user_id: # check for duplicate attendance values duplicate_atten_ids = self.env['hr.attendance'].search([('emp_code', '=', str(lattendance[0])), ('check_in', '=', check_in)]) if duplicate_atten_ids: continue else: # create attendance values to hr.attendance table search_user_id = self.env['hr.employee'].search([('name', '=', user[uid][1]), ('emp_code', '=', str(lattendance[0]))]) if search_user_id: data = hr_attendance.create({'employee_id': get_user_id.id, 'emp_code': lattendance[0], 'check_in': check_in}) else: employee = self.env['hr.employee'].create({'emp_code': str(lattendance[0]), 'name': user[uid][1]}) data = hr_attendance.create({'employee_id': employee.id, 'emp_code': lattendance[0], 'check_in': check_in}) else: pass zk.enableDevice() zk.disconnect() return True else: raise UserError(_('Unable to get the attendance log, please try again later.')) else: raise UserError(_('Unable to connect, please check the parameters and network connections.'))
def download_attendance(self): date_yesterday = datetime.datetime.today().date() - timedelta(days=+1) # date_yesterday = datetime.datetime.strptime('2016-02-02','%Y-%m-%d').date() if self.ip_address and self.port: in_machine = self.in_machine or 0 out_machine = self.out_machine or 0 # Uncomment after completion zk = zklib.ZKLib(self.ip_address, int(self.port)) res = zk.connect() # res = True # To be removed if res == True: zk.enableDevice() zk.disableDevice() attendance = zk.getAttendance() time.sleep(2) # attendance = [ # ('10060', 101, datetime.datetime(2016, 2, 1, 16, 6, 13)), ('10060', 0, datetime.datetime(2016, 2, 1, 16, 14, 45)), ('10077', 101, datetime.datetime(2016, 2, 1, 16, 18, 11)), ('10077', 0, datetime.datetime(2016, 2, 1, 16, 20, 39)), ('10067', 101, datetime.datetime(2016, 2, 1, 16, 32, 27)), ('10067', 0, datetime.datetime(2016, 2, 1, 16, 32, 34)), ('10005', 101, datetime.datetime(2016, 2, 1, 16, 33, 10)), ('10015', 101, datetime.datetime(2016, 2, 1, 16, 34, 1)), ('10090', 101, datetime.datetime(2016, 2, 1, 16, 35, 26)), ('10026', 101, datetime.datetime(2016, 2, 1, 16, 36, 21)), ('10026', 0, datetime.datetime(2016, 2, 1, 16, 38, 38)), ('10090', 0, datetime.datetime(2016, 2, 1, 16, 40, 36)), ('10003', 101, datetime.datetime(2016, 2, 1, 16, 47, 52)), ('10005', 0, datetime.datetime(2016, 2, 1, 16, 49, 31)), ('10094', 101, datetime.datetime(2016, 2, 1, 16, 55, 45)), ('10096', 101, datetime.datetime(2016, 2, 1, 16, 56, 5)), ('10096', 0, datetime.datetime(2016, 2, 1, 16, 58, 25)), ('10085', 101, datetime.datetime(2016, 2, 1, 17, 1, 34)), ('10085', 101, datetime.datetime(2016, 2, 1, 17, 1, 35)), ('10003', 0, datetime.datetime(2016, 2, 1, 17, 7, 20)), ('10085', 0, datetime.datetime(2016, 2, 1, 17, 9, 54)), ('10060', 0, datetime.datetime(2016, 2, 1, 17, 10, 56)), ('10090', 101, datetime.datetime(2016, 2, 1, 17, 11, 27)), ('10090', 0, datetime.datetime(2016, 2, 1, 17, 15, 22)), ('10060', 101, datetime.datetime(2016, 2, 1, 17, 34, 35)), ('10071', 101, datetime.datetime(2016, 2, 1, 17, 35, 42)), ('10015', 101, datetime.datetime(2016, 2, 1, 17, 35, 54)), ('10039', 101, datetime.datetime(2016, 2, 1, 17, 38, 25)), ('10077', 101, datetime.datetime(2016, 2, 1, 17, 39, 9)), ('10026', 101, datetime.datetime(2016, 2, 1, 17, 41, 24)), ('10077', 0, datetime.datetime(2016, 2, 1, 17, 42, 32)), ('10026', 0, datetime.datetime(2016, 2, 1, 17, 44, 59)), ('10060', 0, datetime.datetime(2016, 2, 1, 17, 47, 23)), ('10060', 0, datetime.datetime(2016, 2, 1, 18, 1, 9)), ('10005', 101, datetime.datetime(2016, 2, 1, 18, 1, 47)), ('10039', 0, datetime.datetime(2016, 2, 1, 18, 3, 11)), ('10026', 101, datetime.datetime(2016, 2, 1, 18, 5, 36)), ('10026', 0, datetime.datetime(2016, 2, 1, 18, 5, 55)), ('10090', 0, datetime.datetime(2016, 2, 1, 18, 6, 14)), ('10094', 101, datetime.datetime(2016, 2, 1, 18, 6, 15)), ('10094', 0, datetime.datetime(2016, 2, 1, 18, 6, 27)), ('10039', 0, datetime.datetime(2016, 2, 1, 18, 6, 45)), ('10091', 0, datetime.datetime(2016, 2, 1, 18, 7, 16)), ('10093', 0, datetime.datetime(2016, 2, 1, 18, 7, 53)), ('10039', 0, datetime.datetime(2016, 2, 1, 18, 8, 49)), ('10096', 101, datetime.datetime(2016, 2, 1, 18, 12, 2)), ('10085', 101, datetime.datetime(2016, 2, 1, 18, 12, 12)), ('10003', 101, datetime.datetime(2016, 2, 1, 18, 12, 41)), ('10096', 0, datetime.datetime(2016, 2, 1, 18, 15, 6)), ('10085', 0, datetime.datetime(2016, 2, 1, 18, 15, 31)), ('10005', 0, datetime.datetime(2016, 2, 1, 18, 16, 53)), ('10003', 0, datetime.datetime(2016, 2, 1, 18, 23, 36)), ('10077', 0, datetime.datetime(2016, 2, 1, 18, 36, 6)), ('10085', 101, datetime.datetime(2016, 2, 1, 18, 43, 3)), ('10085', 101, datetime.datetime(2016, 2, 1, 18, 43, 4)), ('10015', 101, datetime.datetime(2016, 2, 1, 18, 43, 48)), ('10015', 0, datetime.datetime(2016, 2, 1, 18, 56, 30)), ('10096', 101, datetime.datetime(2016, 2, 1, 20, 0, 46)), ('10096', 0, datetime.datetime(2016, 2, 1, 20, 6, 7)), ('10096', 101, datetime.datetime(2016, 2, 1, 20, 6, 51)), ('10096', 0, datetime.datetime(2016, 2, 1, 20, 7)), ('10015', 101, datetime.datetime(2016, 2, 1, 20, 14, 44)), ('10015', 0, datetime.datetime(2016, 2, 1, 20, 23, 31)), ('10039', 101, datetime.datetime(2016, 2, 1, 20, 29, 16)), ('10039', 0, datetime.datetime(2016, 2, 1, 20, 32, 9)), ('10015', 101, datetime.datetime(2016, 2, 1, 20, 47, 7)), ('10015', 0, datetime.datetime(2016, 2, 1, 20, 47, 37)), ('10003', 101, datetime.datetime(2016, 2, 1, 20, 59, 18)), ('10039', 101, datetime.datetime(2016, 2, 1, 21, 13, 18)), ('10039', 0, datetime.datetime(2016, 2, 1, 21, 35, 22)), ('10015', 101, datetime.datetime(2016, 2, 1, 21, 41, 48)), ('10039', 101, datetime.datetime(2016, 2, 1, 21, 44, 44)), ('10039', 0, datetime.datetime(2016, 2, 1, 21, 44, 52)), ('10060', 0, datetime.datetime(2016, 2, 2, 8, 45, 42)), ('10091', 0, datetime.datetime(2016, 2, 2, 9, 0)), ('10067', 0, datetime.datetime(2016, 2, 2, 9, 1, 35)), ('10026', 0, datetime.datetime(2016, 2, 2, 9, 12, 59)), ('10096', 0, datetime.datetime(2016, 2, 2, 9, 31, 54)), ('10094', 0, datetime.datetime(2016, 2, 2, 9, 34, 48)), ('10093', 0, datetime.datetime(2016, 2, 2, 9, 51, 56)), ('10071', 0, datetime.datetime(2016, 2, 2, 9, 52, 45)), ('10077', 0, datetime.datetime(2016, 2, 2, 9, 57, 54)), ('10060', 101, datetime.datetime(2016, 2, 2, 10, 33, 37)), ('10060', 0, datetime.datetime(2016, 2, 2, 10, 38, 45)), ('10094', 101, datetime.datetime(2016, 2, 2, 10, 41, 22)), ('10094', 0, datetime.datetime(2016, 2, 2, 10, 43, 56)), ('10090', 101, datetime.datetime(2016, 2, 2, 10, 47, 25)), ('10090', 0, datetime.datetime(2016, 2, 2, 10, 51, 16)), ('10005', 0, datetime.datetime(2016, 2, 2, 10, 52, 41)), ('10091', 101, datetime.datetime(2016, 2, 2, 10, 55, 12)), ('10091', 0, datetime.datetime(2016, 2, 2, 10, 57, 26)), ('10026', 101, datetime.datetime(2016, 2, 2, 11, 23, 57)), ('10026', 0, datetime.datetime(2016, 2, 2, 11, 24, 40)), ('10060', 101, datetime.datetime(2016, 2, 2, 11, 30, 47)), ('10060', 0, datetime.datetime(2016, 2, 2, 11, 35, 49)), ('10060', 101, datetime.datetime(2016, 2, 2, 11, 38, 11)), ('10094', 101, datetime.datetime(2016, 2, 2, 11, 38, 31)), ('10094', 0, datetime.datetime(2016, 2, 2, 11, 42, 38)), ('10093', 101, datetime.datetime(2016, 2, 2, 11, 45, 42)), ('10077', 0, datetime.datetime(2016, 2, 2, 11, 49, 17)), ('10060', 0, datetime.datetime(2016, 2, 2, 11, 55, 35)), ('10026', 101, datetime.datetime(2016, 2, 2, 11, 56, 8)), ('10060', 101, datetime.datetime(2016, 2, 2, 11, 57, 4)), ('10026', 0, datetime.datetime(2016, 2, 2, 12, 0, 39)), ('10090', 0, datetime.datetime(2016, 2, 2, 12, 2, 13)), ('10071', 0, datetime.datetime(2016, 2, 2, 12, 6, 44)), ('10026', 101, datetime.datetime(2016, 2, 2, 12, 6, 58)), ('10093', 101, datetime.datetime(2016, 2, 2, 12, 8, 13)), ('10091', 101, datetime.datetime(2016, 2, 2, 12, 8, 49)), ('10026', 101, datetime.datetime(2016, 2, 2, 12, 9, 12)), ('10091', 0, datetime.datetime(2016, 2, 2, 12, 10, 53)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 11, 46)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 12, 23)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 13)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 17, 59)), ('10067', 101, datetime.datetime(2016, 2, 2, 12, 24, 6)), ('10096', 101, datetime.datetime(2016, 2, 2, 12, 24, 47)), ('10071', 101, datetime.datetime(2016, 2, 2, 12, 25, 22)), ('10094', 101, datetime.datetime(2016, 2, 2, 12, 29, 51)), ('10096', 0, datetime.datetime(2016, 2, 2, 12, 30, 10)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 32, 7)), ('10094', 0, datetime.datetime(2016, 2, 2, 12, 32, 30)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 38, 48)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 39, 27)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 46, 14)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 46, 32)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 47, 35)), ('10060', 0, datetime.datetime(2016, 2, 2, 12, 48, 20)), ('10005', 0, datetime.datetime(2016, 2, 2, 12, 49, 35)), ('10096', 101, datetime.datetime(2016, 2, 2, 12, 52, 52)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 54, 5)), ('10067', 0, datetime.datetime(2016, 2, 2, 12, 55, 3)), ('10093', 101, datetime.datetime(2016, 2, 2, 12, 58, 12)), ('10060', 0, datetime.datetime(2016, 2, 2, 12, 58, 36)), ('10060', 101, datetime.datetime(2016, 2, 2, 12, 59, 17)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 0, 24)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 1, 13)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 2, 39)), ('10060', 0, datetime.datetime(2016, 2, 2, 13, 3, 18)), ('10093', 0, datetime.datetime(2016, 2, 2, 13, 3, 44)), ('10071', 0, datetime.datetime(2016, 2, 2, 13, 7, 11)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 10, 56)), ('10060', 0, datetime.datetime(2016, 2, 2, 13, 14, 35)), ('10060', 0, datetime.datetime(2016, 2, 2, 13, 17, 13)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 17, 38)), ('10039', 0, datetime.datetime(2016, 2, 2, 13, 18, 32)), ('10060', 0, datetime.datetime(2016, 2, 2, 13, 18, 58)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 20, 1)), ('10060', 0, datetime.datetime(2016, 2, 2, 13, 20, 29)), ('10090', 0, datetime.datetime(2016, 2, 2, 13, 21, 59)), ('10003', 0, datetime.datetime(2016, 2, 2, 13, 24, 18)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 26, 39)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 28, 43)), ('10015', 0, datetime.datetime(2016, 2, 2, 13, 33, 30)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 34, 46)), ('10071', 101, datetime.datetime(2016, 2, 2, 13, 37, 1)), ('10060', 0, datetime.datetime(2016, 2, 2, 13, 37, 40)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 38, 8)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 38, 49)), ('10075', 0, datetime.datetime(2016, 2, 2, 13, 40, 24)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 42, 55)), ('10067', 0, datetime.datetime(2016, 2, 2, 13, 44, 11)), ('10071', 0, datetime.datetime(2016, 2, 2, 13, 52, 6)), ('10067', 101, datetime.datetime(2016, 2, 2, 13, 54, 11)), ('10085', 101, datetime.datetime(2016, 2, 2, 13, 57, 26)), ('10060', 101, datetime.datetime(2016, 2, 2, 13, 58, 59)), ('10026', 0, datetime.datetime(2016, 2, 2, 13, 59, 9)), ('10085', 0, datetime.datetime(2016, 2, 2, 14, 1, 7)), ('10094', 101, datetime.datetime(2016, 2, 2, 14, 4, 39)), ('10090', 0, datetime.datetime(2016, 2, 2, 14, 6)), ('10091', 101, datetime.datetime(2016, 2, 2, 14, 7, 6)), ('10094', 0, datetime.datetime(2016, 2, 2, 14, 8, 4)), ('10091', 0, datetime.datetime(2016, 2, 2, 14, 9, 35)), ('10060', 0, datetime.datetime(2016, 2, 2, 14, 13, 31)), ('10060', 101, datetime.datetime(2016, 2, 2, 14, 15, 50)), ('10060', 0, datetime.datetime(2016, 2, 2, 14, 17, 30)), ('10096', 101, datetime.datetime(2016, 2, 2, 14, 30, 15)), ('10026', 101, datetime.datetime(2016, 2, 2, 14, 31, 33)), ('10096', 0, datetime.datetime(2016, 2, 2, 14, 32, 59)), ('10026', 0, datetime.datetime(2016, 2, 2, 14, 33, 12)), ('10060', 101, datetime.datetime(2016, 2, 2, 14, 33, 57)), ('10060', 0, datetime.datetime(2016, 2, 2, 14, 34, 35)), ('10090', 101, datetime.datetime(2016, 2, 2, 14, 37, 37)), ('10015', 101, datetime.datetime(2016, 2, 2, 14, 39, 28)), ('10090', 0, datetime.datetime(2016, 2, 2, 14, 43)), ('10060', 101, datetime.datetime(2016, 2, 2, 14, 43, 23)), ('10060', 0, datetime.datetime(2016, 2, 2, 14, 48, 18)), ('10067', 101, datetime.datetime(2016, 2, 2, 14, 52, 28)), ('10093', 101, datetime.datetime(2016, 2, 2, 14, 52, 44)), ('10060', 101, datetime.datetime(2016, 2, 2, 14, 54, 28)), ('10093', 0, datetime.datetime(2016, 2, 2, 14, 55, 22)), ('10060', 0, datetime.datetime(2016, 2, 2, 14, 55, 44)), ('10075', 101, datetime.datetime(2016, 2, 2, 14, 58, 8)), ('10026', 0, datetime.datetime(2016, 2, 2, 15, 7, 6)), ('10005', 0, datetime.datetime(2016, 2, 2, 15, 10, 29)), ('10015', 0, datetime.datetime(2016, 2, 2, 15, 11, 32)), ('10075', 0, datetime.datetime(2016, 2, 2, 15, 18, 13)), ('10003', 101, datetime.datetime(2016, 2, 2, 15, 18, 14)), ('10094', 101, datetime.datetime(2016, 2, 2, 15, 18, 43)), ('10003', 0, datetime.datetime(2016, 2, 2, 15, 20, 15)), ('10094', 0, datetime.datetime(2016, 2, 2, 15, 22)), ('10060', 101, datetime.datetime(2016, 2, 2, 15, 30, 50)), ('10096', 101, datetime.datetime(2016, 2, 2, 15, 31, 58)), ('10085', 101, datetime.datetime(2016, 2, 2, 15, 32, 54)), ('10096', 0, datetime.datetime(2016, 2, 2, 15, 33, 45)), ('10085', 0, datetime.datetime(2016, 2, 2, 15, 35, 38)), ('10015', 101, datetime.datetime(2016, 2, 2, 15, 37, 33)), ('10090', 101, datetime.datetime(2016, 2, 2, 15, 39, 6)), ('10077', 101, datetime.datetime(2016, 2, 2, 15, 40, 5)), ('10067', 101, datetime.datetime(2016, 2, 2, 15, 41, 11)), ('10090', 0, datetime.datetime(2016, 2, 2, 15, 42, 43)), ('10026', 0, datetime.datetime(2016, 2, 2, 15, 44, 23)), ('10039', 101, datetime.datetime(2016, 2, 2, 15, 53, 22)), ('10015', 0, datetime.datetime(2016, 2, 2, 15, 53, 59)), ('10077', 0, datetime.datetime(2016, 2, 2, 15, 55, 24)), ('10039', 0, datetime.datetime(2016, 2, 2, 15, 56, 26)), ('10060', 0, datetime.datetime(2016, 2, 2, 16, 4)), ('10093', 101, datetime.datetime(2016, 2, 2, 16, 6, 40)), ('10060', 101, datetime.datetime(2016, 2, 2, 16, 7, 19)), ('10093', 0, datetime.datetime(2016, 2, 2, 16, 9, 25)), ('10026', 101, datetime.datetime(2016, 2, 2, 16, 9, 33)), ('10026', 0, datetime.datetime(2016, 2, 2, 16, 12, 22)), ('10093', 101, datetime.datetime(2016, 2, 2, 16, 15, 42)), ('10093', 0, datetime.datetime(2016, 2, 2, 16, 15, 48)), ('10015', 101, datetime.datetime(2016, 2, 2, 16, 20, 6)), ('10005', 101, datetime.datetime(2016, 2, 2, 16, 20, 23)), ('10091', 101, datetime.datetime(2016, 2, 2, 16, 24, 49)), ('10091', 0, datetime.datetime(2016, 2, 2, 16, 27, 3)), ('10060', 0, datetime.datetime(2016, 2, 2, 16, 32, 39)), ('10039', 101, datetime.datetime(2016, 2, 2, 16, 36, 37)), ('10015', 0, datetime.datetime(2016, 2, 2, 16, 38, 57)), ('10005', 0, datetime.datetime(2016, 2, 2, 16, 39, 58)), ('10039', 0, datetime.datetime(2016, 2, 2, 16, 43, 54)), ('10090', 101, datetime.datetime(2016, 2, 2, 16, 46, 33)), ('10090', 0, datetime.datetime(2016, 2, 2, 16, 51, 10)), ('10096', 101, datetime.datetime(2016, 2, 2, 16, 54, 45)), ('10096', 0, datetime.datetime(2016, 2, 2, 16, 58, 49)), ('10015', 101, datetime.datetime(2016, 2, 2, 17, 1, 55)), ('10085', 101, datetime.datetime(2016, 2, 2, 17, 2, 7)), ('10071', 101, datetime.datetime(2016, 2, 2, 17, 2, 30)), ('10060', 101, datetime.datetime(2016, 2, 2, 17, 10, 7)), ('10094', 101, datetime.datetime(2016, 2, 2, 17, 12, 12)), ('10005', 101, datetime.datetime(2016, 2, 2, 17, 16, 9)), ('10094', 0, datetime.datetime(2016, 2, 2, 17, 18, 8)), ('10005', 0, datetime.datetime(2016, 2, 2, 17, 18, 21)), ('10015', 0, datetime.datetime(2016, 2, 2, 17, 24, 50)), ('10085', 0, datetime.datetime(2016, 2, 2, 17, 26, 48)), ('10071', 0, datetime.datetime(2016, 2, 2, 17, 27, 48)), ('10060', 0, datetime.datetime(2016, 2, 2, 17, 40, 7)), ('10091', 101, datetime.datetime(2016, 2, 2, 17, 40, 58)), ('10091', 0, datetime.datetime(2016, 2, 2, 17, 43, 24)), ('10060', 101, datetime.datetime(2016, 2, 2, 17, 54, 12)), ('10090', 101, datetime.datetime(2016, 2, 2, 17, 57, 13)), ('10090', 101, datetime.datetime(2016, 2, 2, 17, 57, 14)), ('10060', 101, datetime.datetime(2016, 2, 2, 17, 59, 8)), ('10026', 101, datetime.datetime(2016, 2, 2, 18, 0, 8)), ('10060', 0, datetime.datetime(2016, 2, 2, 18, 1, 30)), ('10005', 101, datetime.datetime(2016, 2, 2, 18, 2)), ('10026', 0, datetime.datetime(2016, 2, 2, 18, 2, 37)), ('10060', 0, datetime.datetime(2016, 2, 2, 18, 2, 52)), ('10026', 101, datetime.datetime(2016, 2, 2, 18, 3, 53)), ('10026', 0, datetime.datetime(2016, 2, 2, 18, 4, 3)), ('10067', 0, datetime.datetime(2016, 2, 2, 18, 4, 5)), ('10094', 0, datetime.datetime(2016, 2, 2, 18, 4, 12)), ('10090', 0, datetime.datetime(2016, 2, 2, 18, 4, 21)), ('10071', 101, datetime.datetime(2016, 2, 2, 18, 5, 44)), ('10091', 101, datetime.datetime(2016, 2, 2, 18, 6, 21)), ('10091', 0, datetime.datetime(2016, 2, 2, 18, 6, 27)), ('10077', 101, datetime.datetime(2016, 2, 2, 18, 12, 5)), ('10077', 0, datetime.datetime(2016, 2, 2, 18, 12, 14)), ('10015', 0, datetime.datetime(2016, 2, 2, 18, 16, 25)), ('10096', 101, datetime.datetime(2016, 2, 2, 18, 41, 44)), ('10096', 0, datetime.datetime(2016, 2, 2, 18, 45, 13)), ('10003', 101, datetime.datetime(2016, 2, 2, 18, 59, 18)), ('10015', 101, datetime.datetime(2016, 2, 2, 19, 2, 6)), ('10005', 101, datetime.datetime(2016, 2, 2, 19, 3, 16)), ('10096', 0, datetime.datetime(2016, 2, 2, 19, 3, 25)), ('10075', 101, datetime.datetime(2016, 2, 2, 19, 37, 29)), ('10075', 0, datetime.datetime(2016, 2, 2, 20, 3, 8)), ('10039', 101, datetime.datetime(2016, 2, 2, 20, 39, 8)), ('10039', 0, datetime.datetime(2016, 2, 2, 20, 42, 3)), ('10075', 101, datetime.datetime(2016, 2, 2, 21, 29, 53)), ('10075', 0, datetime.datetime(2016, 2, 2, 21, 30, 3)), ('10039', 101, datetime.datetime(2016, 2, 2, 21, 35, 25)), ('10039', 0, datetime.datetime(2016, 2, 2, 21, 35, 32)), ('10060', 0, datetime.datetime(2016, 2, 3, 8, 35, 28)), ('10091', 0, datetime.datetime(2016, 2, 3, 8, 54, 53)), ('10067', 0, datetime.datetime(2016, 2, 3, 9, 3, 34)), ('10026', 0, datetime.datetime(2016, 2, 3, 9, 5, 56)), ('10093', 0, datetime.datetime(2016, 2, 3, 9, 14, 45)), ('10096', 0, datetime.datetime(2016, 2, 3, 9, 24, 30)), ('10077', 0, datetime.datetime(2016, 2, 3, 9, 28, 54)), ('10094', 0, datetime.datetime(2016, 2, 3, 9, 57, 8)), ('10071', 0, datetime.datetime(2016, 2, 3, 10, 4, 31)), ('10094', 101, datetime.datetime(2016, 2, 3, 10, 32, 20)), ('10060', 101, datetime.datetime(2016, 2, 3, 10, 33, 44)), ('10094', 0, datetime.datetime(2016, 2, 3, 10, 36, 29)), ('10026', 101, datetime.datetime(2016, 2, 3, 10, 45, 34)), ('10026', 0, datetime.datetime(2016, 2, 3, 10, 46, 34)), ('10026', 101, datetime.datetime(2016, 2, 3, 10, 46, 51)), ('10085', 0, datetime.datetime(2016, 2, 3, 10, 58, 11)), ('10096', 101, datetime.datetime(2016, 2, 3, 10, 59, 33)), ('10096', 0, datetime.datetime(2016, 2, 3, 11, 2, 49)), ('10005', 0, datetime.datetime(2016, 2, 3, 11, 3, 35)), ('10060', 101, datetime.datetime(2016, 2, 3, 11, 11, 33)), ('10060', 101, datetime.datetime(2016, 2, 3, 11, 12, 39)), ('10060', 0, datetime.datetime(2016, 2, 3, 11, 13, 43)), ('10067', 101, datetime.datetime(2016, 2, 3, 11, 20, 52)), ('10090', 101, datetime.datetime(2016, 2, 3, 11, 21, 48)), ('10026', 0, datetime.datetime(2016, 2, 3, 11, 24, 22)), ('10090', 0, datetime.datetime(2016, 2, 3, 11, 25, 55)), ('10067', 0, datetime.datetime(2016, 2, 3, 11, 26, 31)), ('10060', 0, datetime.datetime(2016, 2, 3, 11, 30, 36)), ('10067', 101, datetime.datetime(2016, 2, 3, 11, 31, 39)), ('10060', 101, datetime.datetime(2016, 2, 3, 11, 33, 22)), ('10060', 0, datetime.datetime(2016, 2, 3, 11, 33, 48)), ('10060', 101, datetime.datetime(2016, 2, 3, 11, 37, 15)), ('10094', 101, datetime.datetime(2016, 2, 3, 11, 39, 10)), ('10094', 0, datetime.datetime(2016, 2, 3, 11, 41, 43)), ('10067', 0, datetime.datetime(2016, 2, 3, 11, 43, 38)), ('10060', 101, datetime.datetime(2016, 2, 3, 11, 45)), ('10005', 101, datetime.datetime(2016, 2, 3, 11, 48, 29)), ('10005', 0, datetime.datetime(2016, 2, 3, 11, 50, 42)), ('10060', 101, datetime.datetime(2016, 2, 3, 11, 51, 55)), ('10005', 101, datetime.datetime(2016, 2, 3, 11, 53, 23)), ('10060', 101, datetime.datetime(2016, 2, 3, 12, 0, 29)), ('10060', 101, datetime.datetime(2016, 2, 3, 12, 7, 54)), ('10091', 101, datetime.datetime(2016, 2, 3, 12, 11, 20)), ('10060', 0, datetime.datetime(2016, 2, 3, 12, 11, 38)), ('10085', 101, datetime.datetime(2016, 2, 3, 12, 12, 21)), ('10090', 101, datetime.datetime(2016, 2, 3, 12, 12, 39)), ('10091', 0, datetime.datetime(2016, 2, 3, 12, 14)), ('10071', 101, datetime.datetime(2016, 2, 3, 12, 15, 11)), ('10090', 0, datetime.datetime(2016, 2, 3, 12, 15, 27)), ('10085', 0, datetime.datetime(2016, 2, 3, 12, 15, 51)), ('10060', 101, datetime.datetime(2016, 2, 3, 12, 16, 17)), ('10071', 0, datetime.datetime(2016, 2, 3, 12, 18, 23)), ('10005', 0, datetime.datetime(2016, 2, 3, 12, 18, 41)), ('10077', 101, datetime.datetime(2016, 2, 3, 12, 22, 34)), ('10077', 0, datetime.datetime(2016, 2, 3, 12, 25, 13)), ('10060', 101, datetime.datetime(2016, 2, 3, 12, 30, 17)), ('10060', 101, datetime.datetime(2016, 2, 3, 12, 31, 28)), ('10094', 101, datetime.datetime(2016, 2, 3, 12, 32, 18)), ('10026', 101, datetime.datetime(2016, 2, 3, 12, 32, 41)), ('10094', 0, datetime.datetime(2016, 2, 3, 12, 34, 57)), ('10091', 101, datetime.datetime(2016, 2, 3, 12, 40, 42)), ('10091', 101, datetime.datetime(2016, 2, 3, 12, 41, 6)), ('10003', 0, datetime.datetime(2016, 2, 3, 12, 41, 23)), ('10005', 101, datetime.datetime(2016, 2, 3, 12, 48, 22)), ('10060', 101, datetime.datetime(2016, 2, 3, 12, 48, 49)), ('10067', 101, datetime.datetime(2016, 2, 3, 12, 52, 51)), ('10090', 0, datetime.datetime(2016, 2, 3, 12, 56, 41)), ('10077', 101, datetime.datetime(2016, 2, 3, 13, 6, 5)), ('10060', 0, datetime.datetime(2016, 2, 3, 13, 10, 20)), ('10067', 101, datetime.datetime(2016, 2, 3, 13, 17, 55)), ('10015', 0, datetime.datetime(2016, 2, 3, 13, 23, 25)), ('10096', 101, datetime.datetime(2016, 2, 3, 13, 27, 7)), ('10094', 101, datetime.datetime(2016, 2, 3, 13, 28, 7)), ('10096', 0, datetime.datetime(2016, 2, 3, 13, 30, 8)), ('10005', 0, datetime.datetime(2016, 2, 3, 13, 34, 31)), ('10077', 0, datetime.datetime(2016, 2, 3, 13, 35, 35)), ('10060', 101, datetime.datetime(2016, 2, 3, 13, 35, 48)), ('10026', 0, datetime.datetime(2016, 2, 3, 13, 39, 32)), ('10060', 0, datetime.datetime(2016, 2, 3, 13, 40, 10)), ('10075', 0, datetime.datetime(2016, 2, 3, 13, 41, 32)), ('10005', 101, datetime.datetime(2016, 2, 3, 13, 43, 19)), ('10090', 0, datetime.datetime(2016, 2, 3, 13, 43, 39)), ('10071', 101, datetime.datetime(2016, 2, 3, 13, 46, 10)), ('10090', 101, datetime.datetime(2016, 2, 3, 13, 59, 7)), ('10005', 0, datetime.datetime(2016, 2, 3, 14, 0, 59)), ('10090', 0, datetime.datetime(2016, 2, 3, 14, 2, 9)), ('10003', 101, datetime.datetime(2016, 2, 3, 14, 2, 24)), ('10071', 0, datetime.datetime(2016, 2, 3, 14, 3, 45)), ('10003', 0, datetime.datetime(2016, 2, 3, 14, 4, 7)), ('10060', 101, datetime.datetime(2016, 2, 3, 14, 9, 24)), ('10085', 101, datetime.datetime(2016, 2, 3, 14, 14, 45)), ('10085', 0, datetime.datetime(2016, 2, 3, 14, 17, 43)), ('10026', 101, datetime.datetime(2016, 2, 3, 14, 33, 53)), ('10096', 101, datetime.datetime(2016, 2, 3, 14, 38, 19)), ('10091', 101, datetime.datetime(2016, 2, 3, 14, 41, 59)), ('10026', 0, datetime.datetime(2016, 2, 3, 14, 42, 27)), ('10090', 101, datetime.datetime(2016, 2, 3, 14, 43, 2)), ('10090', 0, datetime.datetime(2016, 2, 3, 14, 43, 29)), ('10091', 0, datetime.datetime(2016, 2, 3, 14, 44, 41)), ('10003', 101, datetime.datetime(2016, 2, 3, 14, 46, 28)), ('10077', 101, datetime.datetime(2016, 2, 3, 14, 53, 35)), ('10094', 101, datetime.datetime(2016, 2, 3, 14, 54, 22)), ('10005', 101, datetime.datetime(2016, 2, 3, 14, 55, 39)), ('10094', 0, datetime.datetime(2016, 2, 3, 14, 57, 37)), ('10077', 0, datetime.datetime(2016, 2, 3, 15, 7, 38)), ('10015', 0, datetime.datetime(2016, 2, 3, 15, 13, 56)), ('10067', 101, datetime.datetime(2016, 2, 3, 15, 15, 8)), ('10090', 101, datetime.datetime(2016, 2, 3, 15, 15, 21)), ('10015', 101, datetime.datetime(2016, 2, 3, 15, 17, 51)), ('10096', 101, datetime.datetime(2016, 2, 3, 15, 18, 16)), ('10090', 0, datetime.datetime(2016, 2, 3, 15, 18, 42)), ('10015', 0, datetime.datetime(2016, 2, 3, 15, 19, 9)), ('10096', 0, datetime.datetime(2016, 2, 3, 15, 21, 1)), ('10005', 0, datetime.datetime(2016, 2, 3, 15, 32, 58)), ('10067', 101, datetime.datetime(2016, 2, 3, 15, 34, 40)), ('10090', 101, datetime.datetime(2016, 2, 3, 15, 35, 11)), ('10090', 0, datetime.datetime(2016, 2, 3, 15, 37, 24)), ('10090', 101, datetime.datetime(2016, 2, 3, 15, 38, 32)), ('10085', 101, datetime.datetime(2016, 2, 3, 15, 39, 34)), ('10085', 101, datetime.datetime(2016, 2, 3, 15, 39, 34)), ('10090', 0, datetime.datetime(2016, 2, 3, 15, 39, 38)), ('10085', 0, datetime.datetime(2016, 2, 3, 15, 43, 37)), ('10060', 101, datetime.datetime(2016, 2, 3, 15, 47, 30)), ('10091', 101, datetime.datetime(2016, 2, 3, 15, 48, 42)), ('10071', 101, datetime.datetime(2016, 2, 3, 15, 52, 28)), ('10091', 0, datetime.datetime(2016, 2, 3, 15, 55, 7)), ('10060', 0, datetime.datetime(2016, 2, 3, 15, 59, 31)), ('10075', 101, datetime.datetime(2016, 2, 3, 16, 0, 32)), ('10077', 101, datetime.datetime(2016, 2, 3, 16, 1, 12)), ('10060', 101, datetime.datetime(2016, 2, 3, 16, 4, 24)), ('10093', 101, datetime.datetime(2016, 2, 3, 16, 5, 5)), ('10093', 0, datetime.datetime(2016, 2, 3, 16, 5, 16)), ('10094', 101, datetime.datetime(2016, 2, 3, 16, 7, 32)), ('10093', 101, datetime.datetime(2016, 2, 3, 16, 8, 12)) # ] zk.enableDevice() #zk.disconnect() # print "####################",attendance if (attendance): self.env["hr.employee"].emp_attendance_fetcher( attendance, date_yesterday, in_machine, out_machine) # for lattendance in attendance: # time_att = str(lattendance[2].date()) + ' ' +str(lattendance[2].time()) # atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') # atten_time = atten_time1 - timedelta(hours=5,minutes=30) # 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() # employee_id = hr_employee.search(cr,uid,[("emp_code", "=", str(lattendance[0]))]) # address_id = False # category = False # if employee_id: # address_id = hr_employee.browse(cr,uid,employee_id[0]).address_id # category = hr_employee.browse(cr,uid,employee_id[0]).category # # try: # atten_ids = hr_attendance.search(cr,uid,[('employee_id','=',employee_id[0]),('name','=',atten_time)]) # if atten_ids: # continue # else: # # print "Date %s, Name %s: %s" % ( lattendance[2].date(), lattendance[2].time(), lattendance[0] ) # atten_id = hr_attendance.create(cr,uid,{'name':atten_time,'address_id':address_id.id,'category':category,'day':str(lattendance[2].date()),'employee_id':employee_id[0],'action':'sign_in'}) # # print atten_id # except Exception,e: # pass # # print "Exception..Attendance creation======", e.args return True else: raise Warning( _("Unable to connect, please check the Biometrics Machine parameters and network connections." ))
def create(self, values): zk = zklib.ZKLib(config.key['ip'], int(config.key['port'])) res = zk.connect() if res == False: zk.enableDevice() zk.disableDevice() print zk.getUser() zk.enableDevice() zk.disconnect() result = super(hr_create_user_bio_machine, self).create(values) return result
def createBioUsers(self): machine_list=self.env['machine.info'].search([('id','=',2)]) ip_list=[] for x in machine_list.product_ids: if not x.status=="no": ip=x.ip zk = zklib.ZKLib(ip, int(config.key['port'])) result=zk.connect() if result == False: continue self._singleBioUser(ip)
def download_attendance(self, cr, uid, ids, context=None): machine_ip = self.browse(cr, uid, ids).name port = self.browse(cr, uid, ids).port zk = zklib.ZKLib(machine_ip, int(port)) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() attendance = zk.getAttendance() hr_attendance = self.pool.get("hr.attendance") hr_employee = self.pool.get("hr.employee") biometric_data = self.pool.get("biometric.data") if (attendance): for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' + str( lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 - timedelta(hours=5, minutes=30) 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() time_new = str(in_time) time_new = time_new.replace(":", ".", 1) time_new = time_new[0:5] print time_att, lattendance[0] try: del_atten_ids = biometric_data.search( cr, uid, [('emp_code', '=', str(lattendance[0])), ('name', '=', atten_time)]) if del_atten_ids: # hr_attendance.unlink(cr,uid,del_atten_ids) continue else: print "Date %s, Name %s: %s" % ( lattendance[2].date(), lattendance[2].time(), lattendance[0]) a = biometric_data.create( cr, uid, { 'name': atten_time, 'emp_code': lattendance[0], 'mechine_id': ids[0] }) print a except Exception, e: pass print "exception..Attendance creation======", e.args zk.enableDevice() zk.disconnect() return True
def download_attendance(self): zk_attendance = self.env['zk.machine.attendance'] att_obj = self.env['hr.attendance'] for info in self: machine_ip = info.name port = info.port_no zk = zklib.ZKLib(machine_ip, port) _logger.info("In get attandance = " + str(machine_ip) + "," + str(port)) ret = zk.connect() _logger.info("The Device status = " + str(ret))
def clear_attendance(self, cr, uid, ids, context=None): machine_ip = self.browse(cr,uid,ids).name port = self.browse(cr,uid,ids).port zk = zklib.ZKLib(machine_ip, int(port)) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() zk.clearAttendance() zk.enableDevice() zk.disconnect() return True else: raise osv.except_osv(_('Warning !'),_("Unable to connect, please check the parameters and network connections."))
def _singleBioUser(self,ip): zk = zklib.ZKLib(ip, int(config.key['port'])) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() BioUsers = zk.getUser() for user in BioUsers[0]: if (BioUsers[0][user][0] == str(self.card_no)): raise Warning('User Already Present in Machine.') zk.setUser(uid=False, userid=str(self.card_no), name=str(self.name), password='', role=zkconst.LEVEL_USER) zk.enableDevice() zk.disconnect() zk.refreshData()
def _updateAttendance(self): zk = zklib.ZKLib(config.key['ip'], int(config.key['port'])) common = xmlrpclib.ServerProxy('%s/xmlrpc/2/common' % config.key['odooserver']) common.version() uid = common.authenticate(config.key['db'], config.key['odooLogin'], config.key['odooPasswd'], {}) api = xmlrpclib.ServerProxy('%s/xmlrpc/2/object' % config.key['odooserver']) try: res = zk.connect() zk.enableDevice() zk.disableDevice() info = [] attendance = zk.getAttendance() actualServerTime = str(datetime.now()) requiredServerTime = actualServerTime.split('.') requiredServerDate = requiredServerTime[0].split(' ') if (attendance): for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' +str(lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 - timedelta(hours=5) atten_time = datetime.strftime(atten_time,'%Y-%m-%d %H:%M:%S') attenDate = str(atten_time).split(' ') if (requiredServerDate[0] == attenDate[0]): data = { 'user_id' :lattendance[0], 'Date' : str(lattendance[2].date()), 'Time' : str(lattendance[2].time()), 'DateTime' : atten_time } info.append(data) allOdooAttendance = api.execute_kw(config.key['db'], uid, config.key['odooPasswd'], 'ecube.raw.attendance','search_read',[], {'fields': ['employee_id', 'attendance_date', 'name']}) for rec in info: if (rec['DateTime'] not in [odooAtten['attendance_date'] for odooAtten in allOdooAttendance]) and rec['user_id'] not in [odooAtten['employee_id'][0] for odooAtten in allOdooAttendance]: api.execute_kw(config.key['db'], uid, config.key['odooPasswd'], 'ecube.raw.attendance', 'create', [{ 'employee_id': rec['user_id'], 'attendance_date': rec['DateTime'], 'name': config.key['ip'], }]) except Exception, e: print "Process terminate : {}".format(e)
def _updateAttendanceAll(self): machine_list = self.env['machine.info'].search([]) if not machine_list: machine_list = self.env['machine.info'].create({ 'db': 'data base', }) data_base = machine_list.db login = machine_list.odooLogin odoopwd = machine_list.odooPasswd ip_list = [] for x in machine_list.product_ids: if not x.status == "no": ip = x.ip zk = zklib.ZKLib(ip, int(config.key['port'])) result = zk.connect() if result == False: self._attendance_error(ip) continue self._updateAttendance(ip, data_base, login, odoopwd)
def clear_attendance(self, context=None): machine_ip = self.name port = self.port print 'CD------------------------------------------' + str( machine_ip) + '' + str(port) zk = zklib.ZKLib(machine_ip, int(port)) res = zk.connect() print 'CD------------------------------------------' + str(res) if res == True: zk.enableDevice() zk.disableDevice() zk.clearAttendance() zk.enableDevice() zk.disconnect() return True else: print( _('Warning !'), _("Unable to connect, please check the parameters and network connections." ))
def extraer_marcaciones(self, dispositivo): from zklib import zklib try: zk = zklib.ZKLib(dispositivo.ip, dispositivo.puerto) print('Extrayendo marcaciones: ', dispositivo.ip) ret = zk.connect() if ret: marcaciones = zk.getAttendance() if marcaciones: for marcacion in marcaciones: aux = marcacion[2] query = self.db.query(Marcaciones).filter( Marcaciones.codigo == marcacion[0]).filter( Marcaciones.time == aux).all() if not query: self.db.add( Marcaciones(time=aux, fkdispositivo=dispositivo.id, codigo=marcacion[0])) AsistenciaManager(self.db).insertar_marcaciones( aux, marcacion[0]) self.db.commit() zk.getTime() zk.enableDevice() zk.disconnect() print('Terminaron las marcaciones ', dispositivo.ip) m = 'Marcaciones Extraidas Correctamente ' + str( dispositivo.ip) return dict(estado=True, mensaje=m) else: print('No se puedo conectar con el dispositivo: ', dispositivo.ip) m = 'No se puedo conectar con el dispositivo ' + str( dispositivo.ip) return dict(estado=False, mensaje=m) except Exception as e: print(e) return dict(estado=False, mensaje=str(e))
def update_users(self): zk = zklib.ZKLib(self.name, int(self.port)) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() users = zk.getUser() timesheet_obj = self.env['bio.machine.users'] timesheet_obj.search([]).unlink() if (users): for user in users: print users[user][1] if users[user][2] == 14: level = 'Admin' else: level = 'User' employee_id = self.env['hr.employee'].search([ ('machine_id', '=', users[user][0]) ]).id if (employee_id): emp_id = employee_id else: emp_id = None valuessss = { 'user_id': users[user][0], 'user_name': users[user][1], 'user_role': level, 'emp_id': emp_id, } timesheet_obj.create(valuessss) zk.enableDevice() zk.disconnect() return True else: raise Warning( _('Unable to connect, please check the parameters and network connections.' ))
def createBioUsers(self): zk = zklib.ZKLib(config.key['ip'], int(config.key['port'])) res = zk.connect() if res == False: zk.enableDevice() zk.disableDevice() BioUsers = zk.getUser() for user in BioUsers: if (BioUsers[user][0] == str(self.id)): raise Warning('User Already Present in Machine.') zk.setUser(uid=False, userid=str(self.id), name=str(self.name), password='', role=zkconst.LEVEL_USER) zk.enableDevice() zk.disconnect() display = Display(visible=0, size=(800, 600)) display.start() browser = webdriver.Firefox(executable_path=r'/home/rocky/Downloads/geckodriver') browser.wait = WebDriverWait(browser, 5) browser.get('http://192.168.100.29') xpaths = { 'username' : "//input[@name='username']", 'passwd' : "//input[@name='userpwd']", 'login' : "//input[contains(@value,'Login')]", } print "Browser is opened" browser.find_element_by_xpath(xpaths['username']).clear() browser.find_element_by_xpath(xpaths['username']).send_keys('1') print "username is typed" browser.find_element_by_xpath(xpaths['passwd']).clear() browser.find_element_by_xpath(xpaths['passwd']).send_keys('1234') print "password is typed" browser.find_element_by_xpath(xpaths['login']).click() browser.get('http://192.168.100.29/form/Device') time.sleep(50) browser.quit() print "browser Closed" display.stop()
def createBioUsersall(self): zk = zklib.ZKLib(config.key['ip'], int(config.key['port'])) res = zk.connect() if res == True: zk.enableDevice() zk.disableDevice() record=self.env['hr.employee'].search([]) for r_list in record: for user in BioUsers[0]: if (BioUsers[0][user][0] == str(r_list.emp_machine_id)): pass zk.setUser(uid=False, userid=str(r_list.emp_machine_id), name=str(r_list.name), password='', role=zkconst.LEVEL_USER) zk.enableDevice() else: for user in BioUsers[0]: if (BioUsers[0][user][0] == str(self.emp_machine_id)): raise Warning('User Already Present in Machine.') zk.setUser(uid=False, userid=str(self.emp_machine_id), name=str(self.name), password='', role=zkconst.LEVEL_USER) zk.enableDevice() zk.disconnect() zk.refreshData()
import sys sys.path.append("zklib") from 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()
from zklib import zklib import threading import types # print current lock user def addRecord(record): print record zk = zklib.ZKLib("172.69.8.4", 4370) res = zk.connect() temp = 0 # flag to disconnect if res: while temp < 4: data = zk.zkrecvCurrentAtt() #(uid, time) if data: if type(data) == types.BooleanType: continue t = threading.Thread(target=addRecord, args=(data, )) t.start() temp += 1 #zk.disconnect()
def _updateAttendance(self, ip, data_base, login, odoopwd): zk = zklib.ZKLib(ip, int(config.key['port'])) common = xmlrpclib.ServerProxy('%s/xmlrpc/2/common' % config.key['odooserver']) common.version() uid = common.authenticate(data_base, login, odoopwd, {}) api = xmlrpclib.ServerProxy('%s/xmlrpc/2/object' % config.key['odooserver']) res = zk.connect() zk.enableDevice() zk.disableDevice() info = [] attendance = zk.getAttendance() actualServerTime = str(datetime.now()) requiredServerTime = actualServerTime.split('.') requiredServerDate = requiredServerTime[0].split(' ') if (attendance): for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' + str( lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 atten_time = datetime.strftime(atten_time, '%Y-%m-%d %H:%M:%S') attenDate = str(atten_time).split(' ') if (requiredServerDate[0] == attenDate[0]): data = { 'user_id': lattendance[0], 'Date': str(lattendance[2].date()), 'Time': str(lattendance[2].time()), 'M_date': attenDate[0], 'M_time': attenDate[1], 'DateTime': atten_time } info.append(data) for rec in info: user_id_name = rec['user_id'] machine_date = rec['DateTime'] record_date = time.strftime("%d/%m/%Y") record_time = (datetime.now() + timedelta(hours=5)).strftime("%H:%M:%S") employee_id_raw = self.env['hr.employee'].search([ ('card_no', '=', user_id_name) ]) raw_attendence = self.env['ecube.raw.attendance'].search([ ('employee_id', '=', employee_id_raw.id), ('attendance_date', '=', machine_date), ('machine_id', '=', user_id_name), ('name', '=', ip), ('department', '=', employee_id_raw.department_id.id) ]) if not raw_attendence: self.env['ecube.raw.attendance'].create({ 'employee_id': employee_id_raw.id, 'department': employee_id_raw.department_id.id, 'attendance_date': machine_date, 'name': ip, 'machine_id': str(user_id_name), 'date': rec['M_date'], 'time': rec['M_time'], })
from zklib import zklib maquina = zklib.ZKLib(ip='10.0.8.11', port=4370) maquina.connect() print maquina.getAttendance() maquina.disconnect()
def download_attendance(self): zk_attendance = self.env['zk.machine.attendance'] att_obj = self.env['hr.attendance'] for info in self: machine_ip = info.name port = info.port_no zk = zklib.ZKLib(machine_ip, port) conn = self.device_connect(zk) if conn: zk.enableDevice() user = self.zkgetuser(zk) command = CMD_ATTLOG_RRQ command_string = '' chksum = 0 session_id = zk.session_id reply_id = unpack('HHHH', zk.data_recv[:8])[3] buf = zk.createHeader(command, chksum, session_id, reply_id, command_string) zk.zkclient.sendto(buf, zk.address) try: zk.data_recv, addr = zk.zkclient.recvfrom(1024) command = unpack('HHHH', zk.data_recv[:8])[0] if command == CMD_PREPARE_DATA: size = unpack('I', zk.data_recv[8:12])[0] zk_size = size else: zk_size = False if zk_size: bytes = zk_size while bytes > 0: data_recv, addr = zk.zkclient.recvfrom(1032) zk.attendancedata.append(data_recv) bytes -= 1024 # 1024 zk.session_id = unpack('HHHH', zk.data_recv[:8])[2] data_recv = zk.zkclient.recvfrom(8) attendance = [] if len(zk.attendancedata) > 0: # The first 4 bytes don't seem to be related to the user for x in xrange(len(zk.attendancedata)): if x > 0: zk.attendancedata[x] = zk.attendancedata[x][8:] attendancedata = ''.join(zk.attendancedata) attendancedata = attendancedata[14:] while len(attendancedata) > 0: uid, state, timestamp, space = unpack( '24s1s4s11s', attendancedata.ljust(40)[:40]) pls = unpack('c', attendancedata[29:30]) uid = uid.split('\x00', 1)[0] tmp = '' for i in reversed( xrange(len(timestamp.encode('hex')) / 2)): tmp += timestamp.encode('hex')[i * 2:(i * 2) + 2] attendance.append( (uid, int(state.encode('hex'), 16), decode_time(int(tmp, 16)), unpack('HHHH', space[:8])[0])) attendancedata = attendancedata[40:] except: attendance = False if attendance: for each in attendance: atten_time = each[2] atten_time = datetime.strptime( atten_time.strftime('%Y-%m-%d %H:%M:%S'), '%Y-%m-%d %H:%M:%S') local_tz = pytz.timezone(self.env.user.partner_id.tz or 'GMT') local_dt = local_tz.localize(atten_time, is_dst=None) utc_dt = local_dt.astimezone(pytz.utc) utc_dt = utc_dt.strftime("%Y-%m-%d %H:%M:%S") atten_time = datetime.strptime(utc_dt, "%Y-%m-%d %H:%M:%S") atten_time = fields.Datetime.to_string(atten_time) if user: for uid in user: if user[uid][0] == str(each[0]): get_user_id = self.env[ 'hr.employee'].search([ ('device_id', '=', str(each[0])) ]) if get_user_id: duplicate_atten_ids = zk_attendance.search( [('device_id', '=', str(each[0])), ('punching_time', '=', atten_time) ]) if duplicate_atten_ids: continue else: zk_attendance.create({ 'employee_id': get_user_id.id, 'device_id': each[0], 'attendance_type': str(each[1]), 'punch_type': str(each[3]), 'punching_time': atten_time, 'address_id': info.address_id.id }) att_var = att_obj.search([ ('employee_id', '=', get_user_id.id), ('check_out', '=', False) ]) if each[3] == 0: if not att_var: att_obj.create({ 'employee_id': get_user_id.id, 'check_in': atten_time }) if each[3] == 1: if len(att_var) == 1: att_var.write({ 'check_out': atten_time }) else: att_var1 = att_obj.search([ ('employee_id', '=', get_user_id.id) ]) if att_var1: att_var1[-1].write({ 'check_out': atten_time }) else: employee = self.env[ 'hr.employee'].create({ 'device_id': str(each[0]), 'name': user[uid][1] }) zk_attendance.create({ 'employee_id': employee.id, 'device_id': each[0], 'attendance_type': str(each[1]), 'punch_type': str(each[3]), 'punching_time': atten_time, 'address_id': info.address_id.id }) att_obj.create({ 'employee_id': employee.id, 'check_in': atten_time }) else: pass zk.enableDevice() zk.disconnect() return True else: raise UserError( _('Unable to get the attendance log, please try again later.' )) else: raise UserError( _('Unable to connect, please check the parameters and network connections.' ))
def _updateAttendance(self,ip,data_base,login,odoopwd): print "nextttttttttttttttttttttttttt" zk = zklib.ZKLib(ip, int(config.key['port'])) common = xmlrpclib.ServerProxy('%s/xmlrpc/2/common' % config.key['odooserver']) common.version() uid = common.authenticate(data_base, login, odoopwd, {}) api = xmlrpclib.ServerProxy('%s/xmlrpc/2/object' % config.key['odooserver']) res = zk.connect() zk.enableDevice() zk.disableDevice() info = [] attendance = zk.getAttendance() actualServerTime = str(datetime.now()) requiredServerTime = actualServerTime.split('.') requiredServerDate = requiredServerTime[0].split(' ') if (attendance): for lattendance in attendance: time_att = str(lattendance[2].date()) + ' ' +str(lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 atten_time = datetime.strftime(atten_time,'%Y-%m-%d %H:%M:%S') attenDate = str(atten_time).split(' ') if (requiredServerDate[0] == attenDate[0]): data = { 'user_id' :lattendance[0], 'Date' : str(lattendance[2].date()), 'Time' : str(lattendance[2].time()), 'M_date' : attenDate[0], 'M_time' : attenDate[1], 'DateTime' : atten_time } info.append(data) # allOdooAttendance=self.env.cr.execute("SELECT attendance_date,name,employee_id FROM ecube_raw_attendance") # allOdooAttendance = api.execute_kw(config.key['db'], uid, config.key['odooPasswd'], # 'ecube.raw.attendance','search_read',[], # {'fields': ['employee_id', 'attendance_date', 'name']}) # user_machine=zk.getUser()[1] print "77777777777777777777" for rec in info: print rec['M_time'] print "qqqqqqqqqqqqqqqqqqqqqqqqqqq" user_id_name =rec['user_id'] # machine_date=(rec['DateTime']+ timedelta(hours=5)).strftime("%H:%M:%S") # print rec['DateTime'] machine_date= rec['DateTime'] # machine_date=machine_date + str(timedelta(hours=5)) print "DATE timeeeeeeeeeeeeee" # print machine_date record_date=time.strftime("%d/%m/%Y") record_time=(datetime.now() + timedelta(hours=5)).strftime("%H:%M:%S") employee_id_raw =self.env['hr.employee'].search([('card_no','=',user_id_name)]) raw_attendence=self.env['ecube.raw.attendance'].search([('employee_id','=',employee_id_raw.id),('attendance_date','=',machine_date),('machine_id','=',user_id_name),('name','=',ip),('department','=',employee_id_raw.department_id.id)]) print "create raw attendenceeeeeeee" if not raw_attendence: # if (rec['DateTime'] not in [odooAtten['attendance_date'] for odooAtten in allOdooAttendance]): self.env['ecube.raw.attendance'].create({ 'employee_id': employee_id_raw.id, 'department': employee_id_raw.department_id.id, 'attendance_date': machine_date, 'name': ip, 'machine_id': str(user_id_name), 'date': rec['M_date'], 'time': rec['M_time'], # 'time': (datetime.now() + timedelta(hours=5)).strftime("%H:%M:%S"), # 'machine_name': 'yasir', })
def download_attendance(self): date_yesterday = datetime.today().date() - timedelta(days=+1) # date_yesterday = datetime.datetime.strptime('2016-02-02','%Y-%m-%d').date() if self.ip_address and self.port: in_machine = self.in_machine or 0 out_machine = self.out_machine or 0 # Uncomment after completion zk = zklib.ZKLib(self.ip_address, int(self.port)) res = zk.connect() print "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk", date_yesterday, zk # res = True # To be removed if res == True: zk.enableDevice() zk.disableDevice() attendance = zk.getAttendance() print "hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh", attendance time.sleep(2) zk.enableDevice() zk.disconnect() # print "####################",attendance # if (attendance): # self.env["hr.employee"].emp_attendance_fetcher(attendance, date_yesterday, in_machine, out_machine) for lattendance in attendance: print "GGGGGGGGGGGGGGG lattendance ", lattendance time_att = str(lattendance[2].date()) + ' ' + str( lattendance[2].time()) atten_time1 = datetime.strptime(str(time_att), '%Y-%m-%d %H:%M:%S') atten_time = atten_time1 - timedelta(hours=5, minutes=30) 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() employee_id = self.env["hr.employee"].search([ ("emp_code", "=", str(lattendance[0])) ]) address_id = False category = False if employee_id: address_id = self.env["hr.employee"].browse( employee_id[0].id).address_id # category = self.env["hr.employee"].browse(employee_id[0].id).category try: hr_attendance = self.env["hr.all.attendance"] atten_ids = hr_attendance.search([ ('employee_id', '=', employee_id[0].id), ('name', '=', atten_time) ]) print "pppppppppppppppppppppppppppppppppppppppp", atten_ids if atten_ids: continue else: # print "Date %s, Name %s: %s" % ( lattendance[2].date(), lattendance[2].time(), lattendance[0] ) atten_id = hr_attendance.create({ 'name': atten_time, 'address_id': address_id.id, 'day': str(lattendance[2].date()), 'employee_id': employee_id[0].id }) # print atten_id except Exception, e: pass # print "Exception..Attendance creation======", e.args return True else: raise Warning( _("Unable to connect, please check the Biometrics Machine parameters and network connections." ))