class Events(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'events' name = db.Column(db.String(50), primary_key=True) full_name = db.Column(db.String(60), unique=True)
class Coursera2020(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'coursera_2020' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(10), unique=True) prn = db.Column(db.String(10), unique=True) faculty = db.Column(db.String(30)) school = db.Column(db.String(25)) program = db.Column(db.String(35)) year = db.Column(db.Integer()) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.prn, self.faculty, self.school, self.program, self.year, ] def validate(self): if self.query.filter(Coursera2020.prn == self.prn).first(): return f'PRN {self.prn} is already registered in the database' return super().validate()
class CPPWSMay2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'cpp_workshop_may_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) def __repr__(self): return '%r' % [self.id, self.name, self.email, self.phone]
class TestTable(db.Model): """ Database model class """ __tablename__ = 'test_users' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) def __repr__(self): return '%r' % [self.id, self.name, self.email, self.phone]
class User(db.Model, UserMixin): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(100), unique=True, nullable=False) password = db.Column(db.String(60), nullable=False) approved = db.Column(db.Boolean, nullable=False, default=False) events = db.relationship('Event', secondary='access') def __repr__(self): return f'User( Id : {self.id}, Username : {self.username}, Email : {self.email}, Approved : {self.approved})'
class CSINovemberNonMember2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'csi_november_non_member_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) department = db.Column(db.String(50)) year = db.Column(db.String(3)) prn = db.Column(db.String(10), unique=True) paid = db.Column(db.String(20)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.department, self.year, self.prn, ] def validate(self): if self.query.filter(CSINovemberNonMember2019.prn == self.prn).first(): return f'PRN {self.prn} is already registered in the database' return super().validate()
class CodexApril2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'codex_april_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) department = db.Column(db.String(50)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.department ]
class CNovember2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'c_november_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) year = db.Column(db.String(3)) prn = db.Column(db.Integer, unique=True) roll = db.Column(db.String(4), unique=True) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.year, self.prn, self.roll, ] def validate(self): if self.year == '2nd': return super().validate() if self.query.filter(CNovember2019.prn == self.prn).first(): return f'PRN {self.prn} has already been registered!' if self.query.filter(CNovember2019.roll == self.roll).first(): return f'Roll number {self.roll} has already been registered!' return 'This workshop is <b>only</b> for SY students'
class Access(db.Model): """ Database model class """ __tablename__ = 'access' event = db.Column(db.String(50), db.ForeignKey('events.name'), nullable=False, primary_key=True) user = db.Column(db.String(20), db.ForeignKey('users.username'), nullable=False, primary_key=True) def __repr__(self): return '%r' % [self.event, self.user]
class Access(db.Model): __tablename__ = 'access' user_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True) event_id = db.Column(db.Integer, db.ForeignKey('events.id'), primary_key=True) read_only = db.Column(db.Boolean, default=True, nullable=False) user = db.relationship(User, backref=db.backref('access', cascade='all, delete-orphan')) event = db.relationship(Event, backref=db.backref('access', cascade='all, delete-orphan')) def __repr__(self): return f'Access( UserId : {self.user_id}, EventId : {self.event_id}, ReadOnly : {self.read_only} )'
class CCPPWSAugust2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'c_cpp_workshop_august_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) department = db.Column(db.String(50)) year = db.Column(db.String(3)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.department, self.year, ] def validate(self): if self.year == '1st': return super().validate() return 'This workshop is <b>only</b> for FY students'
class BOV2020(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'bov_2020' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(31)) email = db.Column(db.String(51), unique=True) phone = db.Column(db.String(19)) hackerrank_username = db.Column(db.String(50), unique=True) country = db.Column(db.String(24)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.hackerrank_username, self.country, ] def validate(self): if (get(f'https://hackerrank.com/{self.hackerrank_username}').content. decode().count(self.hackerrank_username) < 3): return f"Your hackerrank profile doesn't seem to exist!" if self.query.filter(BOV2020.hackerrank_username == self.hackerrank_username).first(): return f"Someone has already registered with hackerrank username <code>{self.hackerrank_username}</code>.<br/>Kindly contact the team if that is your username and it wasn't your registration" return super().validate()
class Users(db.Model, UserMixin): """ Database model class """ __tablename__ = 'users' name = db.Column(db.String(30)) username = db.Column(db.String(20), primary_key=True) password = db.Column(db.String(100)) email = db.Column(db.String(50), unique=True) def get_id(self): return self.username if self is not None else None def check_password_hash(self, password: str) -> bool: return bcrypt.check_password_hash(self.password, password) def generate_password_hash(self, password: str): self.password = bcrypt.generate_password_hash(password).decode('utf-8') def __repr__(self): return '%r' % [self.username, self.name, self.email]
class Event(db.Model): __tablename__ = 'events' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), unique=True, nullable=False) description = db.Column(db.String(500), nullable=False) start_date = db.Column(db.Date, nullable=False) start_time = db.Column(db.Time, nullable=False) end_date = db.Column(db.Date, nullable=False) end_time = db.Column(db.Time, nullable=False) event_creator = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False) contact_email = db.Column(db.String(100), unique=True, nullable=False) active_state = db.Column(db.Boolean, nullable=False, default=False) users = db.relationship('User', secondary='access') creator = db.relationship('User', foreign_keys='Event.event_creator') participants = db.relationship(Participant, backref=db.backref('events')) def __repr__(self): return f'Event( Id : {self.id}, Name : {self.name}, Description : <Use Obj.description to get description>, Start Date : {self.start_date}, Start Time : {self.start_time}, End Date : {self.end_date}, End Time : {self.end_time}, Event Creator : {self.event_creator} ActiveState : {self.active_state} )'
class CodexDecember2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'codex_december_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(62)) email = db.Column(db.String(102), unique=True) phone = db.Column(db.String(21), unique=True) department = db.Column(db.String(20)) year = db.Column(db.String(3)) hackerrank_username = db.Column(db.String(50), unique=True) paid = db.Column(db.String(20)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.department, self.year, self.hackerrank_username, self.paid, ] def validate(self): if (get(f'https://hackerrank.com/{self.hackerrank_username}').content. decode().count(self.hackerrank_username) < 3): return f"Your hackerrank profile doesn't seem to exist!" if self.query.filter(CodexDecember2019.hackerrank_username == self.hackerrank_username).first(): return f"Someone has already registered with hackerrank username <code>{self.hackerrank_username}</code>.<br/>Kindly contact the team if that is your username and it wasn't your registration" return super().validate()
class Participant(db.Model): __tablename__ = 'participants' id = db.Column(db.Integer, primary_key=True) firstname = db.Column(db.String(100), nullable=False) lastname = db.Column(db.String(100), nullable=False) email = db.Column(db.String(100), nullable=False) event_id = db.Column(db.Integer, db.ForeignKey('events.id'), nullable=False) attended = db.Column(db.Boolean, nullable=False, default=False) event = db.relationship('Event', foreign_keys='Participant.event_id') def __repr__(self): return f'Participant( Id : {self.id}, FirstName : {self.firstname}, LastName : {self.lastname}, Email : {self.email}, EventId : {self.event_id}, Attended : {self.attended} )'
class P5November2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'p5_november_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) department = db.Column(db.String(50)) year = db.Column(db.String(3)) level = db.Column(db.String(12)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.department, self.year, self.level, ]
class Hacktoberfest2019(ValidateMixin, db.Model): """ Database model class """ __tablename__ = 'do_hacktoberfest_2019' id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(30)) email = db.Column(db.String(50), unique=True) phone = db.Column(db.String(21), unique=True) department = db.Column(db.String(50)) year = db.Column(db.String(3)) date = db.Column(db.String(2)) def __repr__(self): return '%r' % [ self.id, self.name, self.email, self.phone, self.department, self.year, self.date, ]