9.5 KiB
🔄 HOW IT WORKS - STUDENT DATA MANAGEMENT
Complete Flow Explanation
Date: 2025-01-20
Purpose: Explain how the system handles multiple students and password updates
📋 HOW IT ACTUALLY WORKS
1. Student Data Loading
When: Automatically on first use, or manually via load_students_from_csv()
What Happens:
1. System looks for CSV files: students_with_passwords_*.csv
2. Finds latest file (by modification time)
3. Loads all students into memory (singleton pattern)
4. Calculates DOB for each student based on age
5. Stores in _students dictionary: {CPID → student_data}
Example:
# Auto-loads on first access
data = student_data_manager.get_student_data('BAR210A010D')
# Returns: {'cpid': 'BAR210A010D', 'age': 16, 'dob': '2009-01-15', ...}
Current CSV: students_with_passwords_2025-12-08T08-04-09.csv
- Contains 10 students
- Each has: CPID, Password, Age, Name, Email, etc.
2. Password Management
Password Tracker (utils/password_tracker.py):
- Purpose: Tracks password state for each student
- Storage: In-memory dictionary (singleton)
- Lifetime: Per test session (resets when tests restart)
How It Works:
1. Student logs in with Excel password (from CSV)
2. Password reset modal appears
3. Reset to TEST_NEW_PASSWORD (Admin@123)
4. Password tracker updates: {CPID → TEST_NEW_PASSWORD}
5. Next login uses TEST_NEW_PASSWORD (from tracker)
Example:
# First login
password = password_tracker.get_password('BAR210A010D', 'oajXgRkKLF8#')
# Returns: 'oajXgRkKLF8#' (Excel password)
# After password reset
password_tracker.update_password('BAR210A010D', 'Admin@123')
# Next login
password = password_tracker.get_password('BAR210A010D', 'oajXgRkKLF8#')
# Returns: 'Admin@123' (updated password)
Important:
- ✅ Password tracker is in-memory only (resets on restart)
- ✅ Each test session starts fresh
- ✅ If student already reset password, smart login handles it
- ✅ No permanent storage (no database/file updates)
3. Student Lifecycle
Scenario 1: Fresh Student (First Time)
1. Login with Excel password → Success
2. Password reset modal appears
3. Reset to TEST_NEW_PASSWORD
4. Password tracker updated
5. Profile incomplete modal appears
6. Navigate to profile editor
7. Complete profile with student data (correct DOB)
8. Age verification modal: NOT APPEARED (DOB matches)
9. Profile reaches 100%
Scenario 2: Already Reset Student
1. Login with Excel password → Fails
2. Smart login tries TEST_NEW_PASSWORD → Success
3. Password tracker updated (if not already)
4. Profile incomplete modal (if profile < 100%)
5. Complete profile with student data
6. Age verification modal: NOT APPEARED (DOB matches)
Scenario 3: Profile Already Complete
1. Login with TEST_NEW_PASSWORD → Success
2. No modals appear
3. Profile already at 100%
4. Ready for assessments
4. Multiple Students Handling
Current Setup:
- CSV contains 10 students
- Each student processed independently
- Password tracker maintains state per student
- Student data manager loads all students once
How Multiple Students Work:
# Student 1: BAR210A010D
login('BAR210A010D') → Reset password → Complete profile
password_tracker: {'BAR210A010D': 'Admin@123'}
# Student 2: BIS212B040F
login('BIS212B040F') → Reset password → Complete profile
password_tracker: {'BAR210A010D': 'Admin@123', 'BIS212B040F': 'Admin@123'}
# Student 3: BAT611A0304
login('BAT611A0304') → Reset password → Complete profile
password_tracker: {'BAR210A010D': 'Admin@123', 'BIS212B040F': 'Admin@123', 'BAT611A0304': 'Admin@123'}
Important:
- ✅ Each student has independent password state
- ✅ Password tracker remembers all students
- ✅ Student data manager has all students loaded
- ✅ Can process all 10 students in sequence
5. When All Students Are Used
What Happens:
- After all 10 students reset passwords → All use
TEST_NEW_PASSWORD - Password tracker has all 10 students tracked
- Can still use them (all passwords are
Admin@123) - No issue - system continues working
When You Need Fresh Students:
- ✅ When you want to test with different students
- ✅ When you want fresh Excel passwords
- ✅ When you want to test password reset flow again
- ✅ When you create new students in the system
How to Provide New Students:
- Create new students in the system
- Export to Excel/CSV (same format)
- Place CSV in project root:
students_with_passwords_YYYY-MM-DDTHH-MM-SS.csv - System auto-detects latest file
- All tests use new students automatically
Current Students (10 total):
- BAR210A010D - Hridaan Kade (Age: 16)
- BIS212B040F - Riaan Rajagopal (Age: 17)
- BAT611A0304 - Nayantara Sheth (Age: 14)
- DES590B020U - Jivika Shankar (Age: 17)
- CHA410A0509 - Anahita Barad (Age: 15)
- BIR311C070A - Purab Varghese (Age: 16)
- MAH112B080D - Farhan Gole (Age: 16)
- DAV990B090B - Kismat Biswas (Age: 18)
- CHE411C060W - Indrans Babu (Age: 15)
- BUC612A010D - Piya Singh (Age: 16)
🔄 ACTUAL FLOW
Test Execution Flow:
1. Test starts
↓
2. Student data manager loads CSV (if not loaded)
↓
3. Password tracker initialized (empty)
↓
4. Test uses student CPID
↓
5. Login with smart password handling:
- Try Excel password (from CSV)
- If fails, try TEST_NEW_PASSWORD
- Update password tracker
↓
6. Handle password reset (if modal appears)
- Get current password from tracker
- Reset to TEST_NEW_PASSWORD
- Update password tracker
↓
7. Navigate to profile editor
↓
8. Complete profile with student data:
- Get student data from manager
- Use correct DOB (matches school records)
- Fill all fields with student data
- Save after each tab
- Handle age verification modal (if appears)
↓
9. Verify profile reaches 100%
↓
10. Test completes
✅ ANSWERS TO YOUR QUESTIONS
Q1: Will it work if all 10 students get used (passwords updated)?
Answer: ✅ YES, it will continue working!
Why:
- Password tracker remembers all students
- All students will use
TEST_NEW_PASSWORD(Admin@123) - System continues working normally
- No issue with reused students
Example:
After processing all 10 students:
password_tracker = {
'BAR210A010D': 'Admin@123',
'BIS212B040F': 'Admin@123',
'BAT611A0304': 'Admin@123',
...
'BUC612A010D': 'Admin@123'
}
All students can still be used - all passwords are Admin@123
Q2: How is it running actually?
Answer: Here's the actual flow:
Step-by-Step:
-
CSV Loading:
- System finds latest CSV file
- Loads all 10 students into memory
- Calculates DOB for each (Age → DOB)
- Stores in
_studentsdictionary
-
Password Management:
- Each student starts with Excel password (from CSV)
- First login → Password reset → Update to
Admin@123 - Password tracker remembers:
{CPID: 'Admin@123'} - Next login uses
Admin@123(from tracker)
-
Profile Completion:
- Gets student data from manager
- Uses correct DOB (prevents age verification modal)
- Fills profile with student data
- Saves after each tab
- Handles age verification modal (if appears)
-
Multiple Students:
- Each student processed independently
- Password tracker maintains state per student
- Can process all 10 students in sequence
- All passwords become
Admin@123after reset
Q3: When do you need fresh students?
Answer: You need fresh students when:
-
Testing Password Reset Flow:
- Want to test password reset again
- Need students with Excel passwords (not Admin@123)
-
Testing Fresh Student Journey:
- Want to test first-time login flow
- Need students who haven't reset password
-
Different Student Data:
- Want to test with different ages/DOBs
- Need different student profiles
-
Exhausted Current Students:
- All 10 students processed
- Want fresh batch for testing
How to Provide:
- Create new students in system
- Export to CSV (same format)
- Place in project root
- System auto-detects and uses it
🚀 READY TO TEST
Current Status:
- ✅ 10 students loaded from CSV
- ✅ All have correct DOB calculated
- ✅ Password tracker ready
- ✅ Age verification handler ready
- ✅ Profile completion updated
Test Command:
# Test profile completion with student data
pytest tests/student_profile/test_profile_completion_with_student_data.py -v
# Test specific student
pytest tests/student_profile/test_profile_completion_with_student_data.py::TestProfileCompletionWithStudentData::test_profile_completion_with_correct_dob -v
📊 SUMMARY
How It Works:
- ✅ CSV loaded once → All students in memory
- ✅ Password tracker → Remembers each student's password
- ✅ Student data → Provides correct DOB (prevents modal)
- ✅ Age verification handler → Handles modal if appears
- ✅ Multiple students → All work independently
When You Need Fresh Students:
- ✅ When you want to test password reset again
- ✅ When you want fresh Excel passwords
- ✅ When you create new students
- ✅ Just provide new CSV → System uses it automatically
Current Students:
- ✅ 10 students available
- ✅ All can be used
- ✅ Passwords will be updated to Admin@123
- ✅ System continues working after all are used
Document Version: 1.0
Created: 2025-01-20
Status: ✅ COMPLETE - READY FOR TESTING
🚀 SYSTEM IS READY - LET'S TEST THE COMPLETE FLOW!