Manager ne pouvait pas voir les tryouts.
probleme avec discord bot
This commit is contained in:
cedrick2711
2026-08-06 14:46:51 -04:00
parent 68e3da6601
commit fcf10bcdff
13 changed files with 279 additions and 117 deletions
+8 -1
View File
@@ -15,4 +15,11 @@ org_team_managers = db.Table('org_team_managers',
primary_key=True),
db.Column('manager_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'),
primary_key=True),
)
)
tryout_coaches = db.Table('tryout_coaches',
db.Column('tryout_id', db.Integer, db.ForeignKey('tryouts.id', ondelete='CASCADE'),
primary_key=True),
db.Column('coach_id', db.Integer, db.ForeignKey('users.id', ondelete='CASCADE'),
primary_key=True),
)
+4 -2
View File
@@ -1,5 +1,6 @@
"""Tryout event for player evaluations and team formation."""
from app.extensions import db
from app.models._associations import tryout_coaches
from datetime import datetime
@@ -18,12 +19,13 @@ class Tryout(db.Model):
created_by = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
target_org_team_id = db.Column(db.Integer, db.ForeignKey('org_teams.id'), nullable=True)
manager_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)
coach_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True)
coach_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True) # deprecated, kept for migration
created_at = db.Column(db.DateTime, default=datetime.utcnow)
creator = db.relationship('User', foreign_keys=[created_by], backref='created_tryouts')
manager = db.relationship('User', foreign_keys=[manager_id], backref='managed_tryouts')
coach = db.relationship('User', foreign_keys=[coach_id], backref='coached_tryouts')
coach = db.relationship('User', foreign_keys=[coach_id], backref='_deprecated_coached_tryouts')
coaches = db.relationship('User', secondary=tryout_coaches, backref='coached_tryouts')
registrations = db.relationship('TryoutRegistration', backref='tryout', lazy='dynamic')
evaluations = db.relationship('Evaluation', backref='tryout', lazy='dynamic')
teams = db.relationship('Team', backref='tryout', lazy='dynamic')
+8
View File
@@ -25,6 +25,10 @@ class Coach(User):
).first() is not None
if is_coach_of_target:
return True
# Check many-to-many coaches relationship
if any(c.id == self.id for c in tryout.coaches):
return True
# Backward compat: check deprecated coach_id
if tryout.coach_id == self.id:
return True
return False
@@ -38,9 +42,13 @@ class Coach(User):
def get_visible_tryouts(self):
from app.models.tryout.tryout import Tryout
from app.models._associations import tryout_coaches
team_ids = [t.id for t in self.coached_org_teams.all()]
conditions = []
if team_ids:
conditions.append(Tryout.target_org_team_id.in_(team_ids))
# Check many-to-many coaches
conditions.append(Tryout.coaches.any(id=self.id))
# Backward compat: check deprecated coach_id
conditions.append(Tryout.coach_id == self.id)
return Tryout.query.filter(db.or_(*conditions)).order_by(Tryout.date).all()
+4 -1
View File
@@ -26,4 +26,7 @@ class Manager(User):
def get_visible_tryouts(self):
from app.models.tryout.tryout import Tryout
return Tryout.query.filter_by(created_by=self.id).order_by(Tryout.date).all()
from sqlalchemy import or_
return Tryout.query.filter(
or_(Tryout.created_by == self.id, Tryout.manager_id == self.id)
).order_by(Tryout.date).all()