vinay0123 commited on
Commit
54adce9
·
verified ·
1 Parent(s): 8ea8744

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -6
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
- role = (role_value or "").strip().lower()
 
 
 
 
 
 
 
 
 
 
 
 
 
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": 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": user.get("username", ""),
341
- "role": normalize_role(user.get("role"), roll),
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})