Example #1
0
def add_manager_user():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.insert_manager_user(json['username'], json['password'], 2)

    return 'OK'
Example #2
0
    def do_recognize(self, data, rotate=False):
        rimg = np.asarray(bytearray(data), dtype="uint8")
        rimg = cv2.imdecode(rimg, cv2.IMREAD_COLOR)

        sp = rimg.shape
        if sp[2] != 3 or sp[0] > 1920 or sp[1] > 1920 or sp[0] <= 0 or sp[
                1] <= 0:
            log.info('img format error {}'.format(sp))
            return None

        if rotate:
            try:
                rimg = rotate_img(rimg)
            except Exception as e:
                print(e)

        rst = self.model.get_input(rimg)
        if rst is None:
            return None

        img, bbox = rst

        rst = self.model.get_feature(img)

        return rst, bbox
Example #3
0
def update_attendance():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.update_attendance(json['id'], json['title'], json['info'], json['type'])

    return 'OK'
Example #4
0
def delete_record():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.delete_record(json['id'])

    return 'OK'
Example #5
0
def add_attendance_user():
    json = js.loads(request.form.get('json'))
    log.info("receive json {}".format(json))

    img_data = request.files['file'].read()
    print(img_data[:10])

    socket = ClientSocket.connect_socket(face_server_address[0],
                                         face_server_address[1])

    # request type
    socket.send(b'1')
    socket.send(img_data)

    feature = socket.raw_recv()

    if len(feature) == 0:
        app.logger.info('FE fail')
        return 'FE Fail', 500

    img_path = upload_path + base64.b64encode(
        bytes(json['name'], encoding='utf8')).decode() + '.jpg'
    log.info('save img, path: {}'.format(img_path))

    with open(img_path, 'wb') as f:
        f.write(img_data)

    feature = array_to_bin(feature)
    db.insert_attendance_user(json["name"], img_path, feature,
                              json['attendance_id'])

    return 'OK'
Example #6
0
def update_attendance_user():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.update_attendance_user(json['id'], json['name'])

    return 'OK'
    def get_record_by_index(self, name_prefix, attendance_title, offset, limit):
        session = self.Session()
        res = []

        count = session.query(AttendanceRecord).join(Attendance, AttendanceRecord.attendance_id == Attendance.id). \
            join(AttendanceUser, AttendanceRecord.user_id == AttendanceUser.id). \
            filter(Attendance.title.like("{}%".format(attendance_title))). \
            filter(AttendanceUser.name.like("{}%".format(name_prefix))).count()

        for item in session.query(AttendanceRecord).join(Attendance, AttendanceRecord.attendance_id == Attendance.id). \
                join(AttendanceUser, AttendanceRecord.user_id == AttendanceUser.id). \
                filter(Attendance.title.like("{}%".format(attendance_title))). \
                filter(AttendanceUser.name.like("{}%".format(name_prefix))). \
                offset(offset). \
                limit(limit):
            res.append({
                "id": item.id,
                "name": item.user.name,
                "photo": item.photo.src_path,
                "attendance_title": item.attendance.title,
                "date": item.date
            })
        session.close()

        log.info('{} {}'.format(count, len(res)))

        return res, count
Example #8
0
def update_manager_user():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.update_manager_user(json['id'], json['username'], json['password'])

    return 'OK'
Example #9
0
def delete_manager_user():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.delete_manager_user(json['id'])

    return 'OK'
Example #10
0
def upload_attendance_date():
    json = request.get_json()
    log.info("receive json {}".format(json))

    db.upload_attendance_date(json['date_list'], json['attendance_id'],
                              json['week_list'])

    return 'OK'
    def run(self):
        log.info('face server running')
        self.net_server.listen()

        while True:
            socket = self.net_server.accept()
            self.pool.submit(self.handle_request,
                             socket).add_done_callback(executor_callback)
Example #12
0
    def listen(self):
        self.server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        self.server_socket.bind((self.ip, self.port))
        self.server_socket.listen(5)

        log.info("start listen on {}:{}".format(self.ip, self.port))
        self.listener = self.do_accept()
Example #13
0
def add_attendance():
    json = request.get_json()
    log.info("receive json {}".format(json))

    user_id = db.get_user_by_name(g.username)['id']

    db.insert_attendance(json['title'], user_id, json['info'], json['type'])

    return 'OK'
 def process_test(self, socket):
     group_id = int.from_bytes(socket.recv(), byteorder='big', signed=False)
     group_code = socket.recv()
     log.info("group id is {}:{}".format(group_id, group_code))
     if not self.db_engine.check_attendance(group_id, group_code):
         log.info('error id code not match id:{} code:{}'.format(
             group_id, group_code.decode('utf-8')))
         socket.close()
         return
     socket.raw_send('OK')
     socket.close()
Example #15
0
def login():
    json = request.get_json()
    log.info("receive json {}".format(json))
    user = db.get_user_by_name(json['username'])

    if user is None or 'password' not in json:
        return ''

    if user['password'] == json['password']:
        token = generate_auth_token(user['username'], 60 * 60 * 24, secret_key)
        return token
    return ""
Example #16
0
def attendance_table():
    json = request.get_json()
    log.info("receive json {}".format(json))

    res = {}

    offset = (json['pageIndex'] - 1) * json['pageSize']
    limit = json['pageSize']
    title_prefix = json['title_prefix']

    res["list"], res["total_num"] = db.get_attendance_by_index(
        title_prefix, json['creator'], offset, limit)

    return res
Example #17
0
def manager_user_table():
    json = request.get_json()
    log.info("receive json {}".format(json))

    res = {}

    offset = (json['pageIndex'] - 1) * json['pageSize']
    limit = json['pageSize']
    name_prefix = json['username']

    res["list"], res["total_num"] = db.get_manager_user_by_index(
        name_prefix, offset, limit)

    return res
Example #18
0
def record_table():
    json = request.get_json()
    log.info("receive json {}".format(json))

    res = {}

    offset = (json['pageIndex'] - 1) * json['pageSize']
    limit = json['pageSize']
    name_prefix = json['name']
    attendance_title = json["attendance"]

    res["list"], res["total_num"] = db.get_record_by_index(
        name_prefix, attendance_title, offset, limit)

    return res
    def check_record(self, attendance_id, user_id):
        session = self.Session()

        now = datetime.datetime.now()
        tnow = now.hour * 60 * 60 + now.minute * 60 + now.second

        attendance = session.query(Attendance).filter_by(id=attendance_id).one()

        print('{} asdasd {}'.format(now.weekday() + 1, attendance.week_list))

        if str(now.weekday() + 1) not in attendance.week_list:
            return None

        user = session.query(AttendanceUser).filter_by(id=user_id).one()

        if len(user.record_list) > 0:
            last_date = None
            last_time = None
            for item in user.record_list:
                if item.attendance_date is None:
                    continue
                if last_time is None or last_time < item.date:
                    last_date = item.attendance_date
                    last_time = item.date

            if last_date is not None:
                last = datetime.datetime.fromtimestamp(last_time)
                bound = datetime.datetime(last.year, last.month, last.day,
                                          last_date.end_time // 3600,
                                          last_date.end_time // 60 % 60,
                                          last_date.end_time % 60)

                if int(bound.timestamp()) >= int(now.timestamp()):
                    log.info('bound: {}, now: {}'.format(bound, now))
                    session.close()
                    return None

        for date in attendance.date_list:
            log.info(" {} {} {} ".format(date.start_time, date.end_time, tnow))
            if date.start_time <= tnow <= date.end_time:
                session.close()
                return date.id

        session.close()
    def process_retrieve(self, socket):
        group_id = int.from_bytes(socket.recv(), byteorder='big', signed=False)
        group_code = socket.recv()
        log.info("group id is {}:{}".format(group_id, group_code))
        img_data = socket.recv()

        if not self.db_engine.check_attendance(group_id, group_code):
            log.info('error id code not match id:{} code:{}'.format(
                group_id, group_code.decode('utf-8')))
            socket.close()
            return

        rst = self.face_engine.recognize(img_data, True)

        if rst is not None:
            feature, bbox = rst
            user = self.retrieve_engine.research_in_group(group_id, feature)

            if user is None:
                log.info("retrieve error")
                socket.close()
                return

            date_id = self.db_engine.check_record(group_id, user['id'])
            if date_id is None:
                log.info('not match attendance date')
                socket.close()
                return

            ans = '{}\n{}'.format(user["id"], user["name"])

            log.info(ans)

            img_path = '../images/record_image/' + str(int(
                time.time() * 10**7)) + '.jpg'
            img_path = os.path.abspath(img_path)

            rimg = np.asarray(bytearray(img_data), dtype="uint8")
            rimg = cv2.imdecode(rimg, cv2.IMREAD_COLOR)
            rimg = rotate_img(rimg)
            cv2.imwrite(img_path, rimg)

            log.info(img_path)

            self.db_engine.insert_record(user["id"], group_id, img_path,
                                         feature, date_id)

            socket.raw_send(ans)

        socket.close()
Example #21
0
 def do_accept(self):
     while True:
         (clientsocket, address) = self.server_socket.accept()
         log.info("accept client socket {}".format(address))
         yield ClientSocket(clientsocket)
Example #22
0
def get_attendance_date():
    json = request.get_json()
    log.info("receive json {}".format(json))
    time_list, week_list = db.get_attendance_date(json['attendance_id'])
    res = {'time_list': time_list, 'week_list': week_list}
    return res
Example #23
0
def change_attendance_code():
    json = request.get_json()
    log.info("receive json {}".format(json))
    db.update_attendance_code(json['id'])
    return 'OK'