def get_user_bykey(key, userID): if key in connects: conp = connects[key] hd = conp['hd'] sBuf = create_string_buffer(512 * 1024) sTableName = bytes('user', encoding="utf8") sFieldNames = bytes('Pin\tCardNo\tPassword', encoding="utf8") sFilters = bytes('Pin={}'.format(userID), encoding="utf8") sOptions = bytes('', encoding="utf8") re = dll.GetDeviceData(hd, sBuf, 512 * 1024, sTableName, sFieldNames, sFilters, sOptions) if re < 1: return -3, re st = str(sBuf.value)[2:-1] va = st.split("\\r\\n")[1].split(',') user = User(va[0],'',va[2],int(va[1])) sBuf = create_string_buffer(128 * 1024) sTableName = bytes('userauthorize', encoding="utf8") sFieldNames = bytes('Pin\tAuthorizeTimezoneId\tAuthorizeDoorId', encoding="utf8") reAuthorize = dll.GetDeviceData(hd, sBuf, 128 * 1024, sTableName, sFieldNames, sFilters, sOptions) if reAuthorize > 0: st = str(sBuf.value)[2:-1] va = st.split("\\r\\n")[1].split(',') vi = int(va[2]) user.authorize = [(vi & 1) > 0, (vi & 2) > 0, (vi & 4) > 0, (vi & 8) > 0] sBuf = create_string_buffer(1 * 1024 * 1024) sTableName = bytes('templatev10', encoding="utf8") sFieldNames = bytes('Pin\tSize\tFingerID\tValid\tTemplate', encoding="utf8") reTemplate = dll.GetDeviceData(hd, sBuf, 1024 * 1024, sTableName, sFieldNames, sFilters, sOptions) if reTemplate > 0: st = str(sBuf.value)[2:-1] la = st.split("\\r\\n")[1:-1] user.finger = [] for l in la: va = l.split(',') user.finger.append(UserFinger(int(va[2]), int( va[1]), int(va[3]) == 3, va[4])) return 1, user else: return -4, None