Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -74,7 +74,20 @@ mongo = PyMongo(app)#initialize
|
|
| 74 |
haar_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
|
| 75 |
|
| 76 |
def normalize_role(role_value, rollnumber=None):
|
| 77 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 78 |
if role in ALLOWED_ROLES:
|
| 79 |
return role
|
| 80 |
if rollnumber and str(rollnumber).upper() == DEFAULT_ADMIN_ROLLNUMBER:
|
|
@@ -206,15 +219,24 @@ def recognizeLogin():
|
|
| 206 |
{"RollNumber": name},
|
| 207 |
{"role": 1, "RollNumber": 1},
|
| 208 |
)
|
|
|
|
|
|
|
|
|
|
| 209 |
role = normalize_role(
|
| 210 |
user_data.get("role") if user_data else None,
|
| 211 |
user_data.get("RollNumber") if user_data else name,
|
| 212 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 213 |
return jsonify(
|
| 214 |
{
|
| 215 |
"name": name,
|
| 216 |
"probability": results[0]["probability"],
|
| 217 |
-
"role":
|
| 218 |
}
|
| 219 |
), 200
|
| 220 |
else:
|
|
@@ -334,11 +356,15 @@ def get_users():
|
|
| 334 |
formatted_users = []
|
| 335 |
for user in users:
|
| 336 |
roll = user.get("RollNumber", "")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 337 |
formatted_users.append(
|
| 338 |
{
|
| 339 |
-
"rollNumber": roll,
|
| 340 |
-
"username":
|
| 341 |
-
"role":
|
| 342 |
}
|
| 343 |
)
|
| 344 |
return jsonify({"users": formatted_users, "count": user_count})
|
|
@@ -577,4 +603,4 @@ def get_user_attendance(username):
|
|
| 577 |
def get_attendance():
|
| 578 |
# Collection name 'attendance1' is already correctly used here
|
| 579 |
records = list(mongo.db.attendance1.find({}, {"_id": 0}))
|
| 580 |
-
return jsonify({"attendance": records})
|
|
|
|
| 74 |
haar_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
|
| 75 |
|
| 76 |
def normalize_role(role_value, rollnumber=None):
|
| 77 |
+
# Handle case where role_value might be an object or unexpected type
|
| 78 |
+
if role_value is None:
|
| 79 |
+
role = ""
|
| 80 |
+
elif isinstance(role_value, dict):
|
| 81 |
+
# If role is stored as a dict/object in MongoDB, extract the value
|
| 82 |
+
print(f"WARNING: Role is a dict: {role_value}")
|
| 83 |
+
role = str(role_value.get("role", "") or role_value.get("_value", "") or "").strip().lower()
|
| 84 |
+
elif isinstance(role_value, str):
|
| 85 |
+
role = role_value.strip().lower()
|
| 86 |
+
else:
|
| 87 |
+
# Convert any other type to string
|
| 88 |
+
print(f"WARNING: Role is unexpected type {type(role_value)}: {role_value}")
|
| 89 |
+
role = str(role_value).strip().lower()
|
| 90 |
+
|
| 91 |
if role in ALLOWED_ROLES:
|
| 92 |
return role
|
| 93 |
if rollnumber and str(rollnumber).upper() == DEFAULT_ADMIN_ROLLNUMBER:
|
|
|
|
| 219 |
{"RollNumber": name},
|
| 220 |
{"role": 1, "RollNumber": 1},
|
| 221 |
)
|
| 222 |
+
print(f"DEBUG - User data from DB: {user_data}")
|
| 223 |
+
print(f"DEBUG - Role from DB: {user_data.get('role') if user_data else None}")
|
| 224 |
+
|
| 225 |
role = normalize_role(
|
| 226 |
user_data.get("role") if user_data else None,
|
| 227 |
user_data.get("RollNumber") if user_data else name,
|
| 228 |
)
|
| 229 |
+
print(f"DEBUG - Normalized role: {role}")
|
| 230 |
+
print(f"DEBUG - Role type: {type(role)}")
|
| 231 |
+
|
| 232 |
+
# Ensure role is a string
|
| 233 |
+
role_str = str(role) if role is not None else "user"
|
| 234 |
+
|
| 235 |
return jsonify(
|
| 236 |
{
|
| 237 |
"name": name,
|
| 238 |
"probability": results[0]["probability"],
|
| 239 |
+
"role": role_str,
|
| 240 |
}
|
| 241 |
), 200
|
| 242 |
else:
|
|
|
|
| 356 |
formatted_users = []
|
| 357 |
for user in users:
|
| 358 |
roll = user.get("RollNumber", "")
|
| 359 |
+
username = user.get("username", "")
|
| 360 |
+
role = normalize_role(user.get("role"), roll)
|
| 361 |
+
|
| 362 |
+
# Ensure all values are strings, not objects
|
| 363 |
formatted_users.append(
|
| 364 |
{
|
| 365 |
+
"rollNumber": str(roll) if roll else "",
|
| 366 |
+
"username": str(username) if username else "",
|
| 367 |
+
"role": str(role) if role else "user",
|
| 368 |
}
|
| 369 |
)
|
| 370 |
return jsonify({"users": formatted_users, "count": user_count})
|
|
|
|
| 603 |
def get_attendance():
|
| 604 |
# Collection name 'attendance1' is already correctly used here
|
| 605 |
records = list(mongo.db.attendance1.find({}, {"_id": 0}))
|
| 606 |
+
return jsonify({"attendance": records})
|