""" Database initialization script for Attendr Creates tables and seeds sample data """ from app import app, db from models import Student, Classroom, AttendanceSession, AttendanceRecord from datetime import datetime def init_database(): """Initialize database with tables and sample data""" with app.app_context(): # Drop all tables (use with caution in production!) print("Dropping existing tables...") db.drop_all() # Create all tables print("Creating tables...") db.create_all() # Seed sample classrooms (UTM locations) print("Seeding sample classrooms...") classrooms = [ Classroom( name="N28-01-01", building="N28 (Faculty of Computing)", latitude=1.5586, # UTM Skudai approximate coordinates longitude=103.6376, radius_meters=50 ), Classroom( name="N28-02-03", building="N28 (Faculty of Computing)", latitude=1.5588, longitude=103.6378, radius_meters=50 ), Classroom( name="V01-LT1", building="V01 (Lecture Hall)", latitude=1.5590, longitude=103.6380, radius_meters=75 ), Classroom( name="C22-Lab A", building="C22 (Computer Lab)", latitude=1.5584, longitude=103.6374, radius_meters=40 ) ] for classroom in classrooms: db.session.add(classroom) db.session.commit() print(f"[OK] Created {len(classrooms)} classrooms") # Create a sample student for testing (without face encoding) print("Creating sample student...") sample_student = Student( student_id="A20EC0001", name="Test Student", email="test@graduate.utm.my", is_active=True ) db.session.add(sample_student) db.session.commit() print("[OK] Created sample student (face registration required)") print("\n" + "="*50) print("Database initialization complete!") print("="*50) print("\nSample Classrooms:") for classroom in classrooms: print(f" - {classroom.name} ({classroom.building})") print(f"\nSample Student: {sample_student.student_id} - {sample_student.name}") print("\nNext steps:") print("1. Run the Flask app: python app.py") print("2. Register student faces at: http://localhost:5000/register") print("3. Create attendance session at: http://localhost:5000/lecturer") print("4. Mark attendance at: http://localhost:5000/student") print("="*50) if __name__ == '__main__': init_database()