43 lines
2.2 KiB
Python
43 lines
2.2 KiB
Python
"""Tryout event for player evaluations and team formation."""
|
|
from app.extensions import db
|
|
from app.models._associations import tryout_coaches
|
|
from datetime import datetime
|
|
|
|
|
|
class Tryout(db.Model):
|
|
"""Tryout event for player evaluations and team formation."""
|
|
__tablename__ = 'tryouts'
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
title = db.Column(db.String(200), nullable=False)
|
|
description = db.Column(db.Text, nullable=True)
|
|
game = db.Column(db.String(50), nullable=False)
|
|
date = db.Column(db.Date, nullable=False)
|
|
end_date = db.Column(db.Date, nullable=True)
|
|
location = db.Column(db.String(200), nullable=True)
|
|
status = db.Column(db.String(20), default='upcoming')
|
|
max_players = db.Column(db.Integer, nullable=True)
|
|
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) # 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='_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')
|
|
target_org_team = db.relationship('OrgTeam', backref='tryouts', foreign_keys=[target_org_team_id])
|
|
|
|
@property
|
|
def is_ended(self):
|
|
"""Tryout is considered ended after its end_date passes.
|
|
Falls back to date if end_date is not set."""
|
|
from datetime import date as date_type
|
|
today = date_type.today()
|
|
if self.end_date is not None:
|
|
return self.end_date < today
|
|
return self.date < today
|