Пример #1
0
	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)
Пример #2
0
 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
Пример #5
0
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
Пример #6
0
	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,
							})
Пример #7
0
    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.'))
Пример #8
0
    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."
                      ))
Пример #9
0
	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
Пример #10
0
	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
Пример #12
0
 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))
Пример #13
0
 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."))
Пример #14
0
	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()
Пример #15
0
	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)
Пример #16
0
 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)
Пример #17
0
 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."
               ))
Пример #18
0
    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.'
                  ))
Пример #20
0
	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()
Пример #21
0
	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()
Пример #22
0
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()
Пример #23
0
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()
Пример #24
0
    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'],
                    })
Пример #25
0
from zklib import zklib



maquina = zklib.ZKLib(ip='10.0.8.11', port=4370)
maquina.connect()


print maquina.getAttendance()

maquina.disconnect()
Пример #26
0
    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.'
                      ))
Пример #27
0
	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',
							})
Пример #28
0
    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."
                      ))