Graduate

Modify server.py

...@@ -46,12 +46,6 @@ async def get_cosine_similarity(arr1, arr2): ...@@ -46,12 +46,6 @@ async def get_cosine_similarity(arr1, arr2):
46 similarity = np.inner(arr1, arr2) / (np.linalg.norm(arr1) * np.linalg.norm(arr2)) 46 similarity = np.inner(arr1, arr2) / (np.linalg.norm(arr1) * np.linalg.norm(arr2))
47 return similarity 47 return similarity
48 48
49 -def get_argmin(someone, database):
50 - distance = get_distance(someone, database)
51 - for i in range(len(distance)):
52 - return np.argmin(distance)
53 - return -1
54 -
55 async def register(websocket): 49 async def register(websocket):
56 global lock 50 global lock
57 global clients 51 global clients
...@@ -140,18 +134,11 @@ async def thread(websocket, path): ...@@ -140,18 +134,11 @@ async def thread(websocket, path):
140 distance_min = distance 134 distance_min = distance
141 135
142 # 출석 데이터 전송 136 # 출석 데이터 전송
143 - send = ''
144 print('[debug] distance:', distance_min) 137 print('[debug] distance:', distance_min)
145 - if distance_min >= 0.5: 138 + send = ''
146 - # 해당하는 사람 DB에 없음 139 + if distance_min < 0.4:
147 - msg='[{ip}] verification failed'.format(ip=remote_ip) 140 + # 인증 성공
148 - print(msg) 141 + # 오늘 이미 출석 됐는지 확인
149 - send = json.dumps({'status': 'fail'})
150 - else:
151 - # 해당하는 사람 DB에 있음
152 - # logging
153 - # TODO: lecture DB에 tuple 삽입해야 아래 코드가 돌아감
154 - # DB에 오늘 이미 출석한 기록이 있는지 확인
155 sql = "SELECT DATE(timestamp) FROM student_attendance WHERE (lecture_id=%s) AND (student_id=%s) AND (DATE(timestamp) = CURDATE());" 142 sql = "SELECT DATE(timestamp) FROM student_attendance WHERE (lecture_id=%s) AND (student_id=%s) AND (DATE(timestamp) = CURDATE());"
156 cursor.execute(sql, ('0', verified_id)) 143 cursor.execute(sql, ('0', verified_id))
157 144
...@@ -165,10 +152,14 @@ async def thread(websocket, path): ...@@ -165,10 +152,14 @@ async def thread(websocket, path):
165 # log 작성 152 # log 작성
166 msg='[{ip}] verification success {id}'.format(ip=remote_ip, id=verified_id) 153 msg='[{ip}] verification success {id}'.format(ip=remote_ip, id=verified_id)
167 print(msg) 154 print(msg)
168 - # client에 전달
169 send = json.dumps({'status': 'success', 'student_id': verified_id}) 155 send = json.dumps({'status': 'success', 'student_id': verified_id})
170 else: 156 else:
171 send = json.dumps({'status': 'already', 'student_id': verified_id}) 157 send = json.dumps({'status': 'already', 'student_id': verified_id})
158 + else:
159 + # 인증 실패
160 + msg='[{ip}] verification failed'.format(ip=remote_ip)
161 + print(msg)
162 + send = json.dumps({'status': 'fail'})
172 await websocket.send(send) 163 await websocket.send(send)
173 elif data['action'] == "save_image": 164 elif data['action'] == "save_image":
174 # 출석이 제대로 이뤄지지 않으면 이미지를 저장하여 165 # 출석이 제대로 이뤄지지 않으면 이미지를 저장하여
...@@ -177,7 +168,6 @@ async def thread(websocket, path): ...@@ -177,7 +168,6 @@ async def thread(websocket, path):
177 print(msg) 168 print(msg)
178 arr = np.asarray(data['image'], dtype = np.uint8) 169 arr = np.asarray(data['image'], dtype = np.uint8)
179 blob = arr.tobytes() 170 blob = arr.tobytes()
180 -
181 # TODO: lecture DB에 tuple 삽입해야 아래 코드가 돌아감 171 # TODO: lecture DB에 tuple 삽입해야 아래 코드가 돌아감
182 # 테이블 맨 뒤에 datetime attribute가 있음. 서버 시간 가져오게 default로 설정해둠. 172 # 테이블 맨 뒤에 datetime attribute가 있음. 서버 시간 가져오게 default로 설정해둠.
183 cursor = attendance_db.cursor(pymysql.cursors.DictCursor) 173 cursor = attendance_db.cursor(pymysql.cursors.DictCursor)
......