| """
|
| 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():
|
|
|
| print("Dropping existing tables...")
|
| db.drop_all()
|
|
|
|
|
| print("Creating tables...")
|
| db.create_all()
|
|
|
|
|
| print("Seeding sample classrooms...")
|
|
|
| classrooms = [
|
| Classroom(
|
| name="N28-01-01",
|
| building="N28 (Faculty of Computing)",
|
| latitude=1.5586,
|
| 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")
|
|
|
|
|
| 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()
|
|
|