import click from flask.cli import with_appcontext from models import db, ClassGroup, Student, Assessment, Exercise, GradingElement @click.command() @with_appcontext def init_db(): """Initialize the database with sample data.""" db.create_all() # Check if data already exists if ClassGroup.query.first(): click.echo("Database already initialized!") return # Create sample class groups classe_6a = ClassGroup(name="6ème A", description="Classe de 6ème A", year="2024-2025") classe_5b = ClassGroup(name="5ème B", description="Classe de 5ème B", year="2024-2025") db.session.add(classe_6a) db.session.add(classe_5b) db.session.commit() # Create sample students students_data = [ ("Dupont", "Marie", "marie.dupont@email.com", classe_6a.id), ("Martin", "Pierre", "pierre.martin@email.com", classe_6a.id), ("Durand", "Sophie", "sophie.durand@email.com", classe_6a.id), ("Moreau", "Lucas", "lucas.moreau@email.com", classe_5b.id), ("Bernard", "Emma", "emma.bernard@email.com", classe_5b.id), ] for last_name, first_name, email, class_group_id in students_data: student = Student( last_name=last_name, first_name=first_name, email=email, class_group_id=class_group_id ) db.session.add(student) db.session.commit() # Create sample assessment assessment = Assessment( title="Évaluation de mathématiques", description="Évaluation sur les fractions et les décimaux", class_group_id=classe_6a.id, coefficient=2.0 ) db.session.add(assessment) db.session.commit() # Create sample exercise exercise = Exercise( assessment_id=assessment.id, title="Exercice 1 - Fractions", description="Calculs avec les fractions", order=1 ) db.session.add(exercise) db.session.commit() # Create sample grading elements elements_data = [ ("Calcul de base", "Addition et soustraction de fractions", "Calculer", 4.0, "points"), ("Méthode", "Justification de la méthode utilisée", "Raisonner", 2.0, "score"), ("Présentation", "Clarté de la présentation", "Communiquer", 2.0, "score"), ] for label, description, skill, max_points, grading_type in elements_data: element = GradingElement( exercise_id=exercise.id, label=label, description=description, skill=skill, max_points=max_points, grading_type=grading_type ) db.session.add(element) db.session.commit() click.echo("Database initialized with sample data!")