QUA-002, premiere moitie. **Ce commit ne fait que reformater** : aucun changement de comportement, aucune ligne de logique touchee. 72 fichiers, 4 restaient deja conformes. Il est isole exprès, pour que `git log -p` sur les commits voisins reste lisible. `quote-style = "preserve"` etait deja pose dans pyproject.toml, ce qui evite le brassage guillemets simples / doubles : le diff porte sur les retours a la ligne, l indentation des appels longs et les virgules finales, pas sur le style de chaine. Verification : 263 tests passent avant et apres, ruff check propre. L activation en CI arrive dans le commit suivant, separement, pour que ce diff-ci ne contienne rien d autre. Co-Authored-By: Claude Opus 5 <[email protected]>
31 lines
1.4 KiB
Python
31 lines
1.4 KiB
Python
"""Match / scrimmage within a tryout."""
|
|
|
|
from app.extensions import db
|
|
from app.models.match_model.base import BaseMatch
|
|
|
|
|
|
class Match(BaseMatch):
|
|
"""Match / scrimmage within a tryout."""
|
|
|
|
__tablename__ = 'matches'
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
tryout_id = db.Column(db.Integer, db.ForeignKey('tryouts.id'), nullable=False)
|
|
match_type = db.Column(db.String(20), nullable=False)
|
|
team1_id = db.Column(db.Integer, db.ForeignKey('teams.id'), nullable=True)
|
|
team2_id = db.Column(db.Integer, db.ForeignKey('teams.id'), nullable=True)
|
|
|
|
creator = db.relationship('User', backref='created_matches')
|
|
tryout = db.relationship('Tryout', backref='matches')
|
|
team1 = db.relationship('Team', foreign_keys=[team1_id], backref='matches_as_team1')
|
|
team2 = db.relationship('Team', foreign_keys=[team2_id], backref='matches_as_team2')
|
|
# delete-orphan: without it, SQLAlchemy tries to detach participants by
|
|
# setting match_id to NULL, which the NOT NULL column refuses — so
|
|
# deleting any match that had participants raised IntegrityError.
|
|
# TeamMatch.participants already declared this; Match did not.
|
|
participants = db.relationship(
|
|
'MatchParticipant', backref='match', lazy='dynamic', cascade='all, delete-orphan'
|
|
)
|
|
|
|
def get_participating_players(self):
|
|
return [p.player_id for p in self.participants.all()]
|