51 lines
2.1 KiB
Python
51 lines
2.1 KiB
Python
"""Contract documents for players to sign."""
|
|
from app.extensions import db
|
|
from datetime import datetime
|
|
|
|
|
|
class Contract(db.Model):
|
|
"""Contract documents for players to sign."""
|
|
__tablename__ = 'contracts'
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
player_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
|
|
team_id = db.Column(db.Integer, db.ForeignKey('org_teams.id'), nullable=True)
|
|
uploaded_by_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
|
|
|
|
original_filename = db.Column(db.String(255), nullable=False)
|
|
stored_filename = db.Column(db.String(255), nullable=False)
|
|
file_path = db.Column(db.String(500), nullable=False)
|
|
|
|
signed_filename = db.Column(db.String(255), nullable=True)
|
|
signed_file_path = db.Column(db.String(500), nullable=True)
|
|
|
|
status = db.Column(db.String(20), default='pending')
|
|
notes = db.Column(db.Text, nullable=True)
|
|
uploaded_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
signed_at = db.Column(db.DateTime, nullable=True)
|
|
|
|
player = db.relationship('User', foreign_keys=[player_id], backref='contracts')
|
|
team = db.relationship('OrgTeam', foreign_keys=[team_id])
|
|
uploader = db.relationship('User', foreign_keys=[uploaded_by_id])
|
|
|
|
def can_view(self, user):
|
|
if user.id == self.player_id:
|
|
return True
|
|
from app.models.user_model.admin import Admin
|
|
from app.models.user_model.manager import Manager
|
|
from app.models.user_model.coach import Coach
|
|
from app.models.user_model.user import User
|
|
from app.models.org_team.org_team import OrgTeam
|
|
if isinstance(user, Admin):
|
|
return True
|
|
if isinstance(user, Manager):
|
|
player = User.query.get(self.player_id)
|
|
if player and player.get_org_teams():
|
|
return True
|
|
if isinstance(user, Coach):
|
|
org_team = OrgTeam.query.filter_by(coach_id=user.id).first()
|
|
if org_team and (not self.team_id or self.team_id == org_team.id):
|
|
return True
|
|
return False
|
|
|
|
def can_upload_signed(self, user):
|
|
return user.id == self.player_id |