Files
notytex/commands.py
Bertrand Benjamin 3e49bd467c refactor: restructure codebase into modular architecture
- Split monolithic app.py (400+ lines) into organized modules
- Extract models, forms, and commands into separate files
- Implement Flask blueprints for route organization
- Maintain full functionality with cleaner architecture
- Update all templates to use new blueprint URLs
- Enhance README with technical documentation

Structure:
├── app.py (50 lines) - Flask app factory
├── models.py (62 lines) - SQLAlchemy models
├── forms.py (43 lines) - WTForms definitions
├── commands.py (74 lines) - CLI commands
└── routes/ - Blueprint modules for each feature

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-03 20:59:10 +02:00

83 lines
2.7 KiB
Python

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!")