Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -62,8 +62,9 @@ detector = MTCNN()
|
|
| 62 |
embedder = FaceNet()
|
| 63 |
|
| 64 |
# Configure MongoDB
|
| 65 |
-
|
| 66 |
-
#
|
|
|
|
| 67 |
mongo = PyMongo(app)#initialize
|
| 68 |
haar_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
|
| 69 |
|
|
@@ -104,6 +105,7 @@ def cnnlogin():
|
|
| 104 |
return jsonify({"error": "Roll number is required"}), 400
|
| 105 |
|
| 106 |
# Fetch user data from MongoDB
|
|
|
|
| 107 |
user_data = mongo.db.data.find_one({"RollNumber": rollnumber}, {"CNN_embeddings": 1, "username": 1})
|
| 108 |
if user_data is None:
|
| 109 |
return jsonify({"error": "User not found"}), 404
|
|
@@ -166,6 +168,7 @@ def recognizeLogin():
|
|
| 166 |
if (results[0]['name']==name):
|
| 167 |
print("done")
|
| 168 |
today = datetime.now().strftime("%Y-%m-%d")
|
|
|
|
| 169 |
mongo.db.attendance1.update_one(
|
| 170 |
{'username': results[0]['name']},
|
| 171 |
{'$set': {today: True}}, # Mark as present for today
|
|
@@ -186,6 +189,7 @@ def register():
|
|
| 186 |
|
| 187 |
print(username)
|
| 188 |
# Check if user already exists
|
|
|
|
| 189 |
existing_user = mongo.db.data.find_one({"username": username}, {"_id": 0})
|
| 190 |
if existing_user:
|
| 191 |
return jsonify({"error": f"User '{username}' already exists"}), 400
|
|
@@ -251,6 +255,7 @@ def register():
|
|
| 251 |
print(f"Warning: Could not save model weights in current directory: {e2}")
|
| 252 |
|
| 253 |
# Create user data
|
|
|
|
| 254 |
id = mongo.db.data.count_documents({}) + 1
|
| 255 |
user_data = {
|
| 256 |
'RollNumber': rollnumber,
|
|
@@ -265,6 +270,7 @@ def register():
|
|
| 265 |
|
| 266 |
# Insert into MongoDB
|
| 267 |
mongo.db.data.insert_one(user_data)
|
|
|
|
| 268 |
mongo.db.attendance1.insert_one({"username": rollnumber, "id": id})
|
| 269 |
# Reload embeddings
|
| 270 |
reload_embeddings()
|
|
@@ -274,11 +280,13 @@ def register():
|
|
| 274 |
# Load embeddings from MongoDB for recognition
|
| 275 |
@app.route('/get_users', methods=['GET'])
|
| 276 |
def get_users():
|
|
|
|
| 277 |
users = list(mongo.db.data.find({}, {"id": 1, "username": 1})) # Fetch only _id and username
|
| 278 |
user_count = len(users)
|
| 279 |
return jsonify({"users": [user['username'] for user in users], "count": user_count})
|
| 280 |
|
| 281 |
def load_embeddings_from_db():
|
|
|
|
| 282 |
users = list(mongo.db.data.find())
|
| 283 |
face_data = []# facenet embeddings
|
| 284 |
labels = [] # id 1,2,3,..
|
|
@@ -385,6 +393,7 @@ def recognize_faces_in_image(image):
|
|
| 385 |
@app.route('/users/<username>/images', methods=['GET'])
|
| 386 |
def get_user_images(username):
|
| 387 |
username = str(username).upper()
|
|
|
|
| 388 |
details = mongo.db.data.find_one({"username": username},{"_id":0,"embeddings":0,"CNN_embeddings":0})
|
| 389 |
if not details:
|
| 390 |
details = mongo.db.data.find_one({"RollNumber": username},{"_id":0,"embeddings":0,"CNN_embeddings":0})
|
|
@@ -411,6 +420,7 @@ def recognize():
|
|
| 411 |
today = datetime.now().strftime("%Y-%m-%d")
|
| 412 |
for result in results:
|
| 413 |
if result['name'] != "Unknown": # Only log attendance for recognized users
|
|
|
|
| 414 |
mongo.db.attendance1.update_one(
|
| 415 |
{'username': result['name']},
|
| 416 |
{'$set': {today: True}}, # Mark as present for today
|
|
@@ -438,11 +448,13 @@ def user_recognize():
|
|
| 438 |
@app.route('/user_attendance/<username>', methods=['GET'])
|
| 439 |
def get_user_attendance(username):
|
| 440 |
# Check if the user exists in the database
|
|
|
|
| 441 |
user = mongo.db.data.find_one({'RollNumber': username})
|
| 442 |
if user is None:
|
| 443 |
return jsonify({"error": "User not found"}), 404
|
| 444 |
print(user['username'])
|
| 445 |
# Fetch the attendance data for the user
|
|
|
|
| 446 |
attendance = mongo.db.attendance1.find_one({'username': username}, {'_id': 0,"username":0,"id":0})
|
| 447 |
print(attendance)
|
| 448 |
if attendance is None:
|
|
@@ -454,8 +466,6 @@ def get_user_attendance(username):
|
|
| 454 |
#attendance
|
| 455 |
@app.route('/attendance',methods=['GET'])
|
| 456 |
def get_attendance():
|
|
|
|
| 457 |
records = list(mongo.db.attendance1.find({}, {"_id": 0}))
|
| 458 |
-
return jsonify({"attendance": records})
|
| 459 |
-
|
| 460 |
-
# if __name__ == '__main__':
|
| 461 |
-
# app.run(debug=True)
|
|
|
|
| 62 |
embedder = FaceNet()
|
| 63 |
|
| 64 |
# Configure MongoDB
|
| 65 |
+
# The URI includes the database name 'travis_db' directly in the path.
|
| 66 |
+
# This is the recommended way to specify the database.
|
| 67 |
+
app.config["MONGO_URI"] = "mongodb+srv://nanduvinay719:76qqKRX4zC97yQun@travis.744fuyn.mongodb.net/travis_db?retryWrites=true&w=majority&appName=travis"
|
| 68 |
mongo = PyMongo(app)#initialize
|
| 69 |
haar_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
|
| 70 |
|
|
|
|
| 105 |
return jsonify({"error": "Roll number is required"}), 400
|
| 106 |
|
| 107 |
# Fetch user data from MongoDB
|
| 108 |
+
# Collection name 'data' is already correctly used here
|
| 109 |
user_data = mongo.db.data.find_one({"RollNumber": rollnumber}, {"CNN_embeddings": 1, "username": 1})
|
| 110 |
if user_data is None:
|
| 111 |
return jsonify({"error": "User not found"}), 404
|
|
|
|
| 168 |
if (results[0]['name']==name):
|
| 169 |
print("done")
|
| 170 |
today = datetime.now().strftime("%Y-%m-%d")
|
| 171 |
+
# Collection name 'attendance1' is already correctly used here
|
| 172 |
mongo.db.attendance1.update_one(
|
| 173 |
{'username': results[0]['name']},
|
| 174 |
{'$set': {today: True}}, # Mark as present for today
|
|
|
|
| 189 |
|
| 190 |
print(username)
|
| 191 |
# Check if user already exists
|
| 192 |
+
# Collection name 'data' is already correctly used here
|
| 193 |
existing_user = mongo.db.data.find_one({"username": username}, {"_id": 0})
|
| 194 |
if existing_user:
|
| 195 |
return jsonify({"error": f"User '{username}' already exists"}), 400
|
|
|
|
| 255 |
print(f"Warning: Could not save model weights in current directory: {e2}")
|
| 256 |
|
| 257 |
# Create user data
|
| 258 |
+
# Collection name 'data' is already correctly used here
|
| 259 |
id = mongo.db.data.count_documents({}) + 1
|
| 260 |
user_data = {
|
| 261 |
'RollNumber': rollnumber,
|
|
|
|
| 270 |
|
| 271 |
# Insert into MongoDB
|
| 272 |
mongo.db.data.insert_one(user_data)
|
| 273 |
+
# Collection name 'attendance1' is already correctly used here
|
| 274 |
mongo.db.attendance1.insert_one({"username": rollnumber, "id": id})
|
| 275 |
# Reload embeddings
|
| 276 |
reload_embeddings()
|
|
|
|
| 280 |
# Load embeddings from MongoDB for recognition
|
| 281 |
@app.route('/get_users', methods=['GET'])
|
| 282 |
def get_users():
|
| 283 |
+
# Collection name 'data' is already correctly used here
|
| 284 |
users = list(mongo.db.data.find({}, {"id": 1, "username": 1})) # Fetch only _id and username
|
| 285 |
user_count = len(users)
|
| 286 |
return jsonify({"users": [user['username'] for user in users], "count": user_count})
|
| 287 |
|
| 288 |
def load_embeddings_from_db():
|
| 289 |
+
# Collection name 'data' is already correctly used here
|
| 290 |
users = list(mongo.db.data.find())
|
| 291 |
face_data = []# facenet embeddings
|
| 292 |
labels = [] # id 1,2,3,..
|
|
|
|
| 393 |
@app.route('/users/<username>/images', methods=['GET'])
|
| 394 |
def get_user_images(username):
|
| 395 |
username = str(username).upper()
|
| 396 |
+
# Collection name 'data' is already correctly used here
|
| 397 |
details = mongo.db.data.find_one({"username": username},{"_id":0,"embeddings":0,"CNN_embeddings":0})
|
| 398 |
if not details:
|
| 399 |
details = mongo.db.data.find_one({"RollNumber": username},{"_id":0,"embeddings":0,"CNN_embeddings":0})
|
|
|
|
| 420 |
today = datetime.now().strftime("%Y-%m-%d")
|
| 421 |
for result in results:
|
| 422 |
if result['name'] != "Unknown": # Only log attendance for recognized users
|
| 423 |
+
# Collection name 'attendance1' is already correctly used here
|
| 424 |
mongo.db.attendance1.update_one(
|
| 425 |
{'username': result['name']},
|
| 426 |
{'$set': {today: True}}, # Mark as present for today
|
|
|
|
| 448 |
@app.route('/user_attendance/<username>', methods=['GET'])
|
| 449 |
def get_user_attendance(username):
|
| 450 |
# Check if the user exists in the database
|
| 451 |
+
# Collection name 'data' is already correctly used here
|
| 452 |
user = mongo.db.data.find_one({'RollNumber': username})
|
| 453 |
if user is None:
|
| 454 |
return jsonify({"error": "User not found"}), 404
|
| 455 |
print(user['username'])
|
| 456 |
# Fetch the attendance data for the user
|
| 457 |
+
# Collection name 'attendance1' is already correctly used here
|
| 458 |
attendance = mongo.db.attendance1.find_one({'username': username}, {'_id': 0,"username":0,"id":0})
|
| 459 |
print(attendance)
|
| 460 |
if attendance is None:
|
|
|
|
| 466 |
#attendance
|
| 467 |
@app.route('/attendance',methods=['GET'])
|
| 468 |
def get_attendance():
|
| 469 |
+
# Collection name 'attendance1' is already correctly used here
|
| 470 |
records = list(mongo.db.attendance1.find({}, {"_id": 0}))
|
| 471 |
+
return jsonify({"attendance": records})
|
|
|
|
|
|
|
|
|