Showing
4 changed files
with
9 additions
and
19 deletions
No preview for this file type
No preview for this file type
No preview for this file type
... | @@ -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) | ... | ... |
-
Please register or login to post a comment