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'
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
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'
def delete_record(): json = request.get_json() log.info("receive json {}".format(json)) db.delete_record(json['id']) return 'OK'
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'
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
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'
def delete_manager_user(): json = request.get_json() log.info("receive json {}".format(json)) db.delete_manager_user(json['id']) return 'OK'
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)
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()
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()
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 ""
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
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
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()
def do_accept(self): while True: (clientsocket, address) = self.server_socket.accept() log.info("accept client socket {}".format(address)) yield ClientSocket(clientsocket)
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
def change_attendance_code(): json = request.get_json() log.info("receive json {}".format(json)) db.update_attendance_code(json['id']) return 'OK'