def get_fingerprint_user(self, cr, uid, ids, context=None):

        employee_obj = self.pool.get('hr.employee')

        for record in self.browse(cr, uid, ids, context=context):
            ip_address = record.ip_address
            device_port = record.device_port

        zk = zklib.ZKLib(ip_address, device_port)
        ret = zk.connect()

        data_employee = {}

        data_user = zk.getUser()
        print data_user

        if data_user:
            for x in data_user:
                data_employee['nik'] = data_user[x][0]
                data_employee['name'] = data_user[x][1]

                #check user exist
                exist_user = self.pool.get('hr.employee').search(
                    cr, uid, [('nik', '=', data_user[x][0])])
                if not exist_user:
                    employee_obj.create(cr, uid, data_employee)

        zk.disconnect()
        return True
    def clear_machine_log(self, cr, uid, ids, context=None):
        for record in self.browse(cr, uid, ids, context=context):
            ip_address = record.ip_address
            device_port = record.device_port

        zk = zklib.ZKLib(ip_address, device_port)
        ret = zk.connect()
        zk.clearAttendance()
        zk.disconnect()

        return True
    def zkDeviceConnect(self):

        self.zkConn = zklib.ZKLib(self.zkIp, self.zkPort)
        zkConnStatus = None
        zkConnError = None
        try:
            connStat = self.zkConn.connect()
            if connStat:
                zkConnStatus = "zkConnected"
            else:
                zkConnStatus = "zkNotConnected"
                zkConnError = "Please check device ip and port"
        except Exception, e:
            zkConnStatus = "zkNotConnected"
            zkConnError = e
    def get_attendance_log(self, cr, uid, ids, context=None):

        attendance_log_obj = self.pool.get('original.attendance.log')
        employee_obj = self.pool.get('hr.employee')

        for record in self.browse(cr, uid, ids, context=context):
            ip_address = record.ip_address
            device_port = record.device_port

        zk = zklib.ZKLib(ip_address, device_port)
        ret = zk.connect()

        data_log = {}

        attendance = zk.getAttendance()
        if attendance:
            for log in attendance:

                temp_string_time = unicode(log[2].time())
                attendance_log_ids = attendance_log_obj.search(
                    cr, uid, [('fingerprint_id', '=', log[0]),
                              ('date', '=', log[2].date()),
                              ('time', '=', temp_string_time)])

                #if fingerprint log is not exist, download and create new record
                if not attendance_log_ids:
                    data_log['fingerprint_id'] = log[0]
                    data_log['date'] = log[2].date()
                    data_log['time'] = log[2].time()
                    data_log['status'] = log[1]
                    data_log['name'] = log[0]

                    employee_ids = employee_obj.search(cr, uid,
                                                       [('nik', '=', log[0])])

                    if employee_ids:
                        data_log['name'] = employee_obj.search(
                            cr, uid, [('nik', '=', log[0])])[0]
                        attendance_log_obj.create(cr, uid, data_log)

        zk.disconnect()
        return True
    def get_machine_info(self, cr, uid, ids, context=None):

        for record in self.browse(cr, uid, ids, context=context):
            ip_address = record.ip_address
            device_port = record.device_port

        zk = zklib.ZKLib(ip_address, device_port)
        ret = zk.connect()

        total_user = 0
        total_log = 0

        data_user = zk.getUser()
        if data_user:
            for x in data_user:
                total_user += 1

        attendance = zk.getAttendance()
        if attendance:
            for x in attendance:
                total_log += 1

        self.write(
            cr, uid, ids, {
                'software_version': zk.version(),
                'os_version': zk.osversion(),
                'device_platform': zk.platform(),
                'fm_platform': zk.fmVersion(),
                'device_name': zk.deviceName(),
                'serial_number': zk.serialNumber(),
                'device_time': zk.getTime(),
                'total_user': total_user,
                'total_log': total_log,
            })
        zk.disconnect()

        return True
Esempio n. 6
0
import sys
sys.path.append("zklib")

import zklib
import time
import zkconst

zk = zklib.ZKLib("192.168.1.201", 4370)

ret = zk.connect()
print "connection:", ret

if ret == True:
    print "Disable Device", zk.disableDevice()

    print "ZK Version:", zk.version()
    print "OS Version:", zk.osversion()
    """
    print "Extend Format:", zk.extendFormat()
    print "Extend OP Log:", zk.extendOPLog()
    """

    print "Platform:", zk.platform()
    print "Platform Version:", zk.fmVersion()
    print "Work Code:", zk.workCode()
    print "Work Code:", zk.workCode()
    print "SSR:", zk.ssr()
    print "Pin Width:", zk.pinWidth()
    print "Face Function On:", zk.faceFunctionOn()
    print "Serial Number:", zk.serialNumber()
    print "Device Name:", zk.deviceName()
Esempio n. 7
0
import zklib
import threading


# print current lock user
def add_record(record):
    print(record)


zk = zklib.ZKLib("192.168.1.103", 4370)  # IP of my device was 192.168.1.103
res = zk.connect()

temp = 0  # flag to disconnect
if res:
    while temp < 4:
        data = zk.zkrecvCurrentAtt()  # (uid, time)
        if data:
            if isinstance(data, bool):
                continue
            t = threading.Thread(target=add_record, args=(data, ))
            t.start()
            temp += 1

# zk.disconnect()
Esempio n. 8
0
import sys
sys.path.append("zklib")

import zklib
import time
import zkconst

zk = zklib.ZKLib("192.168.1.72", 4370)

ret = zk.connect()
print "Pesan Koneksi:", ret

if ret == True:
    print "Pesan Disable Device", zk.disableDevice()
    
    print "Pesan Versi:", zk.version()
    print "Pesan Versi OS:", zk.osversion()
    """
    print "Pesan Extend Format:", zk.extendFormat()
    print "Pesan Extend OP Log:", zk.extendOPLog()
    """
    
    print "Pesan Platform:", zk.platform()
    print "Pesan Platform Version:", zk.fmVersion()
    print "Pesan Work Code:", zk.workCode()
    print "Pesan Work Code:", zk.workCode()
    print "Pesan SSR:", zk.ssr()
    print "Pesan Pin Width:", zk.pinWidth()
    print "Pesan Face Function On:", zk.faceFunctionOn()
    print "Pesan Serial Number:", zk.serialNumber()
    print "Pesan Device Name:", zk.deviceName()
Esempio n. 9
0
    def attendance_verify(self):

        connection = MySQLdb.connect(host="localhost",
                                     user="******",
                                     passwd="root",
                                     db="nims_store")
        cursor = connection.cursor()
        #cursor.execute("select * from user_tbl where user_name= %s", (regdate1))
        #row = cursor.fetchone()

        zk1 = zklib.ZKLib("192.168.1.71", 4370)
        zk2 = zklib.ZKLib("192.168.1.72", 4370)

        ret1 = zk1.connect()
        ret2 = zk2.connect()
        print "Connected To Doctors Machine:", ret1
        print "Connected To General Machine:", ret1

        if ret1 == True and ret2 == False:
            ermessage = "Unable To Connect Device"
            tm.showinfo("Device Not Connected", ermessage)

        if ret1 == True and ret2 == True:
            print "Pesan Disable Device", zk1.disableDevice(
            ), zk2.disableDevice()

            #print "Pesan Versi:", zk.version()
            #print "Pesan Versi OS:", zk.osversion()
            """
            print "Pesan Extend Format:", zk.extendFormat()
            print "Pesan Extend OP Log:", zk.extendOPLog()
            """

            #print "Pesan Platform:", zk.platform()
            #print "Pesan Platform Version:", zk.fmVersion()
            #print "Pesan Work Code:", zk.workCode()
            #print "Pesan Work Code:", zk.workCode()
            #print "Pesan SSR:", zk.ssr()
            #print "Pesan Pin Width:", zk.pinWidth()
            #print "Pesan Face Function On:", zk.faceFunctionOn()
            #print "Pesan Serial Number:", zk.serialNumber()
            #print "Pesan Device Name:", zk.deviceName()

            # Delete a row from a table.
            print "Deleting Previous Data"
            sql_command = """
                            DELETE  FROM nims_emp_ids 
                            """
            cursor.execute(sql_command)

            data_user1 = zk1.getUser()
            data_user2 = zk2.getUser()
            print "Pesan Get User:"******"[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3]  )

            #print "Pesan Clear Admin:", zk.clearAdmin()
            #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN)

                    cursor.execute(
                        """INSERT INTO nims_emp_ids VALUES (%s,%s,%s)""",
                        (data_user1[uid1][0], data_user1[uid1][1], 51))

            if data_user2:
                for uid2 in data_user2:

                    if data_user2[uid2][2] == 14:
                        level2 = 'Admin'
                    else:
                        level2 = 'User'
                    #print "[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3]  )

            #print "Pesan Clear Admin:", zk.clearAdmin()
            #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN)

                    cursor.execute(
                        """INSERT INTO nims_emp_ids VALUES (%s,%s,%s)""",
                        (data_user2[uid2][0], data_user2[uid2][1], 54))

            connection.commit()
            #print cursor.fetchall()
            connection.close()

            print "Pesan Get Time:", zk1.getTime()

            print "Pesan Enable Device", zk1.enableDevice()
            print "Pesan Enable Device", zk2.enableDevice()

            print "Pesan Disconnect Doctors Machine:", zk1.disconnect()
            print "Pesan Disconnect General Machine:", zk2.disconnect()

            ermessage = "User Data Retrieve Completed"
            tm.showinfo("User Data Completed ", ermessage)
Esempio n. 10
0
    def attendance_verify(self):

        connection = MySQLdb.connect(host="localhost",
                                     user="******",
                                     passwd="root",
                                     db="nims_store")
        cursor = connection.cursor()
        #cursor.execute("select * from user_tbl where user_name= %s", (regdate1))
        #row = cursor.fetchone()

        zk1 = zklib.ZKLib("192.168.1.71", 4370)
        zk2 = zklib.ZKLib("192.168.1.72", 4370)

        ret1 = zk1.connect()
        ret2 = zk2.connect()
        print "Connected To Doctors Machine:", ret1
        print "Connected To General Machine:", ret1

        if ret1 == True and ret2 == True:
            print "Pesan Disable Device", zk1.disableDevice(
            ), zk2.disableDevice()

            #print "Pesan Versi:", zk.version()
            #print "Pesan Versi OS:", zk.osversion()
            """
            print "Pesan Extend Format:", zk.extendFormat()
            print "Pesan Extend OP Log:", zk.extendOPLog()
            """

            #print "Pesan Platform:", zk.platform()
            #print "Pesan Platform Version:", zk.fmVersion()
            #print "Pesan Work Code:", zk.workCode()
            #print "Pesan Work Code:", zk.workCode()
            #print "Pesan SSR:", zk.ssr()
            #print "Pesan Pin Width:", zk.pinWidth()
            #print "Pesan Face Function On:", zk.faceFunctionOn()
            #print "Pesan Serial Number:", zk.serialNumber()
            #print "Pesan Device Name:", zk.deviceName()
            """
            data_user = zk.getUser()
            print "Pesan Get User:"******"[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % ( uid, data_user[uid][0], data_user[uid][1], level, data_user[uid][3]  )
        
            #print "Pesan Clear Admin:", zk.clearAdmin()
            #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN)
            """
            # Delete a row from a table.
            print "Deleting Previous Data"
            sql_command = """
                            DELETE  FROM nims_attendance 
                            """
            cursor.execute(sql_command)

            attendance1 = zk1.getAttendance()
            attendance2 = zk2.getAttendance()

            print "Pesan Get Attendance:"
            print "Retreiving Current Data"

            if (attendance1):
                for lattendance1 in attendance1:
                    if lattendance1[1] == 15:
                        state1 = 'Check In'
                    elif lattendance1[1] == 0:
                        state1 = 'Check Out'

                    else:
                        state1 = 'Undefined'

                    # insert to table
                    cursor.execute(
                        """INSERT INTO nims_attendance VALUES (%s,%s,%s,%s,%s,%s,%s)""",
                        (lattendance1[0], lattendance1[2].date(),
                         lattendance1[2].time(), 51, 0, 0, 0))

                    #print "%s, %s, %s, 51, 0, 0, 0" % ( lattendance[0], lattendance[2].date(), lattendance[2].time()  )
                    #print "Pesan Clear Attendance:", zk.clearAttendance()

            if (attendance2):
                for lattendance2 in attendance2:
                    if lattendance2[1] == 15:
                        state2 = 'Check In'
                    elif lattendance2[1] == 0:
                        state2 = 'Check Out'

                    else:
                        state2 = 'Undefined'

                    # insert to table
                    cursor.execute(
                        """INSERT INTO nims_attendance VALUES (%s,%s,%s,%s,%s,%s,%s)""",
                        (lattendance2[0], lattendance2[2].date(),
                         lattendance2[2].time(), 54, 0, 0, 0))

                    #print "%s, %s, %s, 51, 0, 0, 0" % ( lattendance[0], lattendance[2].date(), lattendance[2].time()  )
                    #print "Pesan Clear Attendance:", zk.clearAttendance()

            connection.commit()
            #print cursor.fetchall()
            connection.close()

            print "Pesan Get Time:", zk1.getTime()

            print "Pesan Enable Device", zk1.enableDevice()
            print "Pesan Enable Device", zk2.enableDevice()

            print "Pesan Disconnect Doctors Machine:", zk1.disconnect()
            print "Pesan Disconnect General Machine:", zk2.disconnect()

            ermessage = "Data Retrieve Completed"
            tm.showinfo("Data Completed ", ermessage)
Esempio n. 11
0
    def download_attendance(self, cr, uid, ids, context=None):
        user_pool = self.pool.get('res.users')
        user = user_pool.browse(cr, SUPERUSER_ID, uid)
        tz = pytz.timezone(user.partner_id.tz) or False
        if not tz:
            raise osv.except_osv(
                'Error',
                "Timezone is not defined on this %s user." % user.name)

        machine_ip = self.browse(cr, uid, ids).name
        port = self.browse(cr, uid, ids).port
        location_id = self.browse(cr, uid, ids).location_id

        zk = zklib.ZKLib(machine_ip, int(port))
        res, error_str = zk.connect()
        aclog = ''

        if res == True:
            zk.enableDevice()
            zk.disableDevice()
            attendance = []
            Done = False
            while not Done:
                attendance_new = zk.getAttendance()
                if (attendance_new):
                    for lattendance in attendance_new:
                        if lattendance[0] == '':
                            Done = True
                            break
                        attendance.append(lattendance)

            hr_attendance = self.pool.get("hr.attendance")
            hr_employee = self.pool.get("hr.employee")
            hr_employee_zk_location_line_obj = self.pool.get(
                "biometric.machine.zk_location.line")
            for lattendance in attendance:
                time_att = str(lattendance[2].date()) + ' ' + str(
                    lattendance[2].time())
                aclog = lattendance[1]
                atten_time1 = datetime.strptime(str(time_att),
                                                '%Y-%m-%d %H:%M:%S')
                atten_time_localize = pytz.utc.localize(
                    atten_time1).astimezone(tz)
                #print atten_time_localize.hour-atten_time1.hour
                #if atten_time_localize.hour-atten_time1.hour >=0:
                atten_time = atten_time1 - (timedelta(
                    hours=atten_time_localize.hour - atten_time1.hour))
                atten_time = datetime.strftime(atten_time, '%Y-%m-%d %H:%M:%S')
                #atten_time1 = datetime.strftime(atten_time1,'%Y-%m-%d %H:%M:%S')
                #in_time = datetime.strptime(atten_time1,'%Y-%m-%d %H:%M:%S').time()
                hr_employee_zk_location_line_id = hr_employee_zk_location_line_obj.search(
                    cr, uid, [("zk_num", "=", str(lattendance[0])),
                              ('location_id.id', '=', location_id.id)])
                hr_employee_zk_location_line_rec = hr_employee_zk_location_line_obj.browse(
                    cr, uid, hr_employee_zk_location_line_id, context)
                #print hr_employee_zk_location_line_rec
                employee_id = hr_employee_zk_location_line_rec.emp_id.id or False
                #print employee_id
                #employee_id = hr_employee.search(cr,uid,[("zk_num", "=", str(lattendance[0])),('location_id.id','=',location_id.id)])
                address_id = False
                category = False
                if employee_id:
                    try:
                        atten_ids = hr_attendance.search(
                            cr, uid, [('employee_id', '=', employee_id),
                                      ('name', '=', atten_time)])
                        if atten_ids:
                            continue
                        else:
                            atten_id = hr_attendance.create(
                                cr, uid, {
                                    'name': atten_time,
                                    'day': str(lattendance[2].date()),
                                    'employee_id': employee_id,
                                    'action': aclog
                                })
                    except Exception, e:
                        pass
            zk.enableDevice()
            zk.disconnect()
            return True
Esempio n. 12
0
    def attendance_verify(self):
        regdate1 = self.regdate1txt.get()

        print regdate1
        connection = MySQLdb.connect(host="localhost",
                                     user="******",
                                     passwd="root",
                                     db="nims_store")
        cursor = connection.cursor()
        #cursor.execute("select * from user_tbl where user_name= %s", (regdate1))
        #row = cursor.fetchone()

        zk = zklib.ZKLib("192.168.1.72", 4370)

        ret = zk.connect()
        print "Pesan Koneksi:", ret

        if ret == True:
            print "Pesan Disable Device", zk.disableDevice()

            print "Pesan Versi:", zk.version()
            print "Pesan Versi OS:", zk.osversion()
            """
            print "Pesan Extend Format:", zk.extendFormat()
            print "Pesan Extend OP Log:", zk.extendOPLog()
            """

            print "Pesan Platform:", zk.platform()
            print "Pesan Platform Version:", zk.fmVersion()
            print "Pesan Work Code:", zk.workCode()
            print "Pesan Work Code:", zk.workCode()
            print "Pesan SSR:", zk.ssr()
            print "Pesan Pin Width:", zk.pinWidth()
            print "Pesan Face Function On:", zk.faceFunctionOn()
            print "Pesan Serial Number:", zk.serialNumber()
            print "Pesan Device Name:", zk.deviceName()

            data_user = zk.getUser()
            print "Pesan Get User:"******"[UID %d]: ID: %s, Name: %s, Level: %s, Password: %s" % (
                        uid, data_user[uid][0], data_user[uid][1], level,
                        data_user[uid][3])

            #print "Pesan Clear Admin:", zk.clearAdmin()
            #zk.setUser(uid=61, userid='41', name='Dony Wahyu Isp', password='******', role=zkconst.LEVEL_ADMIN)

            attendance = zk.getAttendance()
            print "Pesan Get Attendance:"

            if (attendance):
                for lattendance in attendance:
                    if lattendance[1] == 15:
                        state = 'Check In'
                    elif lattendance[1] == 0:
                        state = 'Check Out'
                    else:
                        state = 'Undefined'

                    #insert to table

                    cursor.execute(
                        """INSERT INTO nims_attendance VALUES (%s,%s,%s,%s,%s,%s,%s)""",
                        (lattendance[0], lattendance[2].date(),
                         lattendance[2].time(), 54, 0, 0, 0))
                    connection.commit()

                    #print "%s, %s, %s, 51, 0, 0, 0" % ( lattendance[0], lattendance[2].date(), lattendance[2].time(),  )

            #print "Pesan Clear Attendance:", zk.clearAttendance()
            #show table
            cursor.execute(
                """SELECT * FROM nims_attendance where reg_date=%s;""",
                (regdate1))

            print cursor.fetchall()
            connection.close()

            print "Pesan Get Time:", zk.getTime()

            print "Pesan Enable Device", zk.enableDevice()

            print "Pesan Disconnect:", zk.disconnect()