pep8 standarization

This commit is contained in:
Fanani M. Ihsan 2016-06-24 19:00:55 +07:00
parent 5abb3b5134
commit c6b8cf1200
8 changed files with 67 additions and 75 deletions

View File

@ -1,6 +1,6 @@
# pyzk
pyzk is unofficial library of zksoftware the fingerprint attendance machine.
pyzk is an unofficial library of zksoftware the fingerprint attendance machine.
# Installation
@ -14,25 +14,24 @@ Complete documentation can be found at [Readthedocs](http://pyzk.readthedocs.io/
# Api Usage
Create ZK object and you will ready to call api.
Create an ZK instnace and you will ready to call api.
* Basic Usage
```
import zk
from zk import const
from zk import ZK, const
conn = False
zk = zk.ZK(ip='192.168.1.201', port=4370, timeout=5)
sys.path.append("zk")
conn = None
zk = ZK('192.168.1.10', port=4370, timeout=5)
try:
print 'Connecting to device ...'
conn = zk.connect()
# disable (lock) the device, make sure no activity when process run
zk.disable_device()
# Do another task here
firmware_version = zk.get_firmware_version()
print 'Firmware Version: : {}'.format(firmware_version)
users = zk.get_users()
print 'Disabling device ...'
conn.disable_device()
print 'Firmware Version: : {}'.format(conn.get_firmware_version())
# print '--- Get User ---'
users = conn.get_users()
for user in users:
privilege = 'User'
if user.privilege == const.USER_ADMIN:
@ -45,67 +44,69 @@ try:
print ' Group ID : {}'.format(user.group_id)
print ' User ID : {}'.format(user.user_id)
zk.enable_device()
print "Voice Test ..."
conn.test_voice()
print 'Enabling device ...'
conn.enable_device()
except Exception, e:
print "Process terminate : {}".format(e)
finally:
if conn:
zk.disconnect()
conn.disconnect()
```
* Connect/Disconnect
```
zk.connect()
zk.disconnect()
conn = zk.connect()
conn.disconnect()
```
* Disable/Enable Connected Device
```
zk.disable_device()
zk.enable_device()
conn.disable_device()
conn.enable_device()
```
* Ger Firmware Version
```
zk.get_firmware_version()
conn.get_firmware_version()
```
* User Operation
```
# Create user
zk.set_user(uid=1, name='Fanani M. Ihsan', privilege=const.USER_ADMIN, password='12345678', group_id='', user_id='123')
conn.set_user(uid=1, name='Fanani M. Ihsan', privilege=const.USER_ADMIN, password='12345678', group_id='', user_id='123')
# Get all users (will return list of User object)
users = zk.get_users()
users = conn.get_users()
# Delete User
zk.delete_user(uid=1)
conn.delete_user(uid=1)
```
* Attendance Record
```
# Get attendances (will return list of Attendance object)
attendances = zk.get_attendance()
attendances = conn.get_attendance()
# Clear attendances record
zk.clear_attendance()
conn.clear_attendance()
```
* Test voice
```
zk.test_voice()
conn.test_voice()
```
* Device Maintenance
```
# shutdown connected device
zk.power_off()
conn.power_off()
# restart connected device
zk.restart()
conn.restart()
```
# Related Project

View File

@ -1,18 +1,19 @@
# -*- coding: utf-8 -*-
from setuptools import setup
setup(
name='pyzk',
version='0.4',
description='an unofficial library of zksoftware the fingerprint attendance machine.',
description='an unofficial library of zksoftware fingerprint device',
url='https://github.com/fananimi/pyzk',
author='Fanani M. Ihsan',
author_email='fanani.mi@gmail.com',
license='LICENSE.txt',
packages=['zk'],
keywords = [
'zksoftware',
'pyzk',
keywords=[
'zk',
'pyzk',
'zksoftware',
'attendance machine',
'fingerprint',
'biometrics',

35
test.py
View File

@ -1,26 +1,20 @@
# -*- coding: utf-8 -*-
import sys
from zk import ZK, const
sys.path.append("zk")
import zk
from zk import const
conn = False
zk = zk.ZK('192.168.1.201', port=4370, timeout=5)
conn = None
zk = ZK('192.168.1.10', port=4370, timeout=5)
try:
print 'Connecting to device ...'
conn = zk.connect()
print 'Disabling device ...'
zk.disable_device()
print 'Firmware Version: : {}'.format(zk.get_firmware_version())
# Load test create 2000 users
# for i in range(1, 2000+1):
# privilege = const.USER_DEFAULT
# if i == 1:
# privilege = const.USER_ADMIN
# print zk.set_user(uid=i, name='user #{}'.format(i), privilege=privilege, password='12345678', group_id='', user_id='{}'.format(i))
conn.disable_device()
print 'Firmware Version: : {}'.format(conn.get_firmware_version())
# print '--- Get User ---'
users = zk.get_users()
users = conn.get_users()
for user in users:
privilege = 'User'
if user.privilege == const.USER_ADMIN:
@ -34,18 +28,11 @@ try:
print ' User ID : {}'.format(user.user_id)
print "Voice Test ..."
zk.test_voice()
# print 'Restarting device ...'
# zk.restart()
# print 'Turning off device ...'
# zk.power_off()
conn.test_voice()
print 'Enabling device ...'
zk.enable_device()
print 'Disconnecting to device ...'
zk.disconnect()
conn.enable_device()
except Exception, e:
print "Process terminate : {}".format(e)
finally:
if conn:
zk.disconnect()
conn.disconnect()

View File

@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
from base import ZK
VERSION = (0,3)
VERSION = (0, 3)
__all__ = ['ZK']

View File

@ -6,7 +6,7 @@ class Attendance(object):
self.status = status
def __str__(self):
return self.user_id
return '<Attendance>: {}'.format(self.user_id)
def __repr__(self):
return '<Attendance>: {}'.format(self.user_id)

View File

@ -1,13 +1,14 @@
# -*- coding: utf-8 -*-
from datetime import datetime
from socket import AF_INET, SOCK_DGRAM, socket
from struct import pack, unpack
from socket import socket, AF_INET, SOCK_DGRAM
from zk import const
from zk.exception import ZKErrorResponse, ZKNetworkError
from zk.attendance import Attendance
from zk.exception import ZKErrorResponse, ZKNetworkError
from zk.user import User
class ZK(object):
is_connect = False
@ -26,7 +27,7 @@ class ZK(object):
Puts a the parts that make up a packet together and packs them into a byte string
'''
buf = pack('HHHH', command, checksum, session_id, reply_id) + command_string
buf = unpack('8B'+'%sB' % len(command_string), buf)
buf = unpack('8B' + '%sB' % len(command_string), buf)
checksum = unpack('H', self.__create_checksum(buf))[0]
reply_id += 1
if reply_id >= const.USHRT_MAX:
@ -100,8 +101,8 @@ class ZK(object):
def __reverse_hex(self, hex):
data = ''
for i in reversed( xrange( len(hex)/2 ) ):
data += hex[i*2:(i*2)+2]
for i in reversed(xrange(len(hex) / 2)):
data += hex[i * 2:(i * 2) + 2]
return data
def __decode_time(self, t):
@ -120,10 +121,10 @@ class ZK(object):
hour = t % 24
t = t / 24
day = t % 31+1
day = t % 31 + 1
t = t / 31
month = t % 12+1
month = t % 12 + 1
t = t / 12
year = t + 2000
@ -149,7 +150,7 @@ class ZK(object):
self.is_connect = True
# set the session id
self.__sesion_id = unpack('HHHH', self.__data_recv[:8])[2]
return True
return self
else:
raise ZKErrorResponse("Invalid response")
@ -377,11 +378,11 @@ class ZK(object):
userdata = ''.join(userdata)
userdata = userdata[11:]
while len(userdata) >= 72:
uid, privilege, password, name, sparator, group_id, user_id = unpack( '2s2s8s28sc7sx23s', userdata.ljust(72)[:72])
uid, privilege, password, name, sparator, group_id, user_id = unpack('2s2s8s28sc7sx23s', userdata.ljust(72)[:72])
u1 = int(uid[0].encode("hex"), 16)
u2 = int(uid[1].encode("hex"), 16)
uid = u2 + (u1*256)
uid = u2 + (u1 * 256)
name = unicode(name.strip('\x00|\x01\x10x'), errors='ignore')
privilege = int(privilege.encode("hex"), 16)
password = unicode(password.strip('\x00|\x01\x10x'), errors='ignore')
@ -478,7 +479,7 @@ class ZK(object):
attendance_data = ''.join(attendance_data)
attendance_data = attendance_data[14:]
while len(attendance_data) >= 38:
user_id, sparator, timestamp, status, space = unpack( '24sc4sc10s', attendance_data.ljust(40)[:40])
user_id, sparator, timestamp, status, space = unpack('24sc4sc10s', attendance_data.ljust(40)[:40])
user_id = user_id.strip('\x00|\x01\x10x')
timestamp = self.__decode_time(timestamp)
@ -493,7 +494,6 @@ class ZK(object):
return attendances
def clear_attendance(self):
'''
clear all attendance record

View File

@ -1,8 +1,11 @@
# -*- coding: utf-8 -*-
class ZKError(Exception):
pass
class ZKErrorResponse(ZKError):
pass
class ZKNetworkError(ZKError):
pass

View File

@ -9,8 +9,8 @@ class User(object):
self.group_id = group_id
self.user_id = user_id
def __repr__(self):
return self.name
def __str__(self):
return '<User>: {}'.format(self.name)
def __repr__(self):
return '<User>: {}'.format(self.name)
return '<User>: {}'.format(self.name)