Files
ctfd-cheaters/models.py

46 lines
1.5 KiB
Python

from CTFd.models import db
class CheaterTeams(db.Model):
id = db.Column(db.Integer, primary_key=True)
challenge_id = db.Column(
db.Integer, db.ForeignKey("challenges.id", ondelete="CASCADE")
)
cheater_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"))
helper_id = db.Column(db.Integer, db.ForeignKey("users.id", ondelete="CASCADE"))
flag_id = db.Column(db.Integer, db.ForeignKey("flags.id", ondelete="CASCADE"))
date = db.Column(db.DateTime, default=db.func.current_timestamp())
# Relationships
cheater = db.relationship(
"Users", foreign_keys="CheaterTeams.cheater_id", lazy="select"
)
helper = db.relationship(
"Users", foreign_keys="CheaterTeams.helper_id", lazy="select"
)
flag = db.relationship("Flags", foreign_keys="CheaterTeams.flag_id", lazy="select")
challenge = db.relationship(
"Challenges",
foreign_keys="CheaterTeams.challenge_id",
lazy="select",
)
def __init__(
self, challenge_id: int, cheater_id: int, helper_id: int, flag_id: int
):
self.challenge_id = challenge_id
self.cheater_id = cheater_id
self.helper_id = helper_id
self.flag_id = flag_id
def __repr__(self):
return "<CheaterTeams User {0} maybe cheated for challenge {1} with the flag {2} belonging to the User {3} at {4} >".format(
self.cheater_id,
self.challenge_id,
self.flag.content,
self.helper_id,
self.date,
)