File size: 3,075 Bytes
f742815 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | """
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()
|