Example #1
0
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