class Majoring(db.Model): """ defines table name """ __tablename__ = 'majoring' __table_args__ = {'extend_existing': True} """ defines attributes """ id = db.Column(db.String(30), db.ForeignKey( 'students.id'), primary_key=True) maj_name = db.Column(db.String(100), db.ForeignKey( 'majors.maj_name'), primary_key=True)
class Completions(db.Model): """ defines table name and arguments""" __tablename__ = 'completions' __table_args__ = {'extend_existing': True} """ defines attributes and key constraints """ id = db.Column(db.String(30), db.ForeignKey( 'students.id'), primary_key=True) modcode = db.Column(db.String(100), db.ForeignKey( 'modules.modcode'), nullable=False, primary_key=True)
class Minoring(db.Model): """ defines table name """ __tablename__ = 'minoring' __table_args__ = {'extend_existing': True} """ defines attributes """ uid = db.Column(db.String(30), db.ForeignKey('webusers.uid'), primary_key=True) min_name = db.Column(db.String(100), db.ForeignKey('minors.min_name'), primary_key=True)
class Preclusions(db.Model): """ defines table name and arguments""" __tablename__ = 'preclusions' __table_args__ = {'extend_existing': True} """ defines attributes and key constraints""" modcode = db.Column(db.String(100), db.ForeignKey('modules.modcode'), db.CheckConstraint('modcode <> precluded'), primary_key=True) precluded = db.Column(db.String(100), db.ForeignKey('modules.modcode'), primary_key=True)
class Gets(db.Model): """ defines table name and arguments""" __tablename__ = 'gets' __table_args__ = {'extend_existing': True} """ defines attributes and key constraints """ id = db.Column(db.String(30), db.ForeignKey( 'students.id'), primary_key=True) id_adder = db.Column(db.String(30), db.ForeignKey( 'webusers.id'), primary_key=True) modcode = db.Column(db.String(100), nullable=False, primary_key=True) lnum = db.Column(db.Integer, nullable=False, primary_key=True) is_audit = db.Column(db.Boolean, default=False) db.ForeignKeyConstraint([lnum, modcode], [Lectures.lnum, Lectures.modcode])
class Majors(db.Model): """ defines table name """ __tablename__ = 'majors' __table_args__ = {'extend_existing': True} """ defines attributes """ maj_name = db.Column(db.String(100), primary_key=True) fname = db.Column(db.String(100), db.ForeignKey( 'faculties.fname'), default='NUS')
class Exchanges(db.Model): """ defines table name """ __tablename__ = 'exchanges' __table_args__ = {'extend_existing': True} """ defines attributes """ # id serves as a primary key as well as a FK which references webuser table id = db.Column(db.String(30), db.ForeignKey( 'students.id'), primary_key=True) home_country = db.Column(db.String(100), nullable=False)
class WebAdmins(db.Model): """ defines table name """ __tablename__ = 'webadmins' __table_args__ = {'extend_existing': True} """ defines attributes """ # id serves as a primary key as well as a FK which references webuser table id = db.Column(db.String(30), db.ForeignKey( 'webusers.id'), primary_key=True) name = db.Column(db.String(100), nullable=False) contact = db.Column(db.String(100))
class Minors(db.Model): """ defines table name """ __tablename__ = 'minors' __table_args__ = {'extend_existing': True} """ defines attributes """ min_name = db.Column(db.String(100), primary_key=True) fname = db.Column(db.String(100), db.ForeignKey('faculties.fname'), default='NUS') """ defines relationships """ minoring = db.relationship("Minoring", cascade="all, delete, save-update")
class Bids(db.Model): """ defines table name and arguments""" __tablename__ = 'bids' __table_args__ = {'extend_existing': True} """ defines attributes and key constraints""" id = db.Column(db.String(30), db.ForeignKey( 'students.id'), primary_key=True) modcode = db.Column(db.String(100), nullable=False, primary_key=True) lnum = db.Column(db.Integer, nullable=False, primary_key=True) status = db.Column(db.Boolean, default=True) bid_time = db.Column(db.DateTime, primary_key=True) remark = db.Column(db.String(100), default="Successful bid!") db.ForeignKeyConstraint([lnum, modcode], [Lectures.lnum, Lectures.modcode])
class Lectures(db.Model): """ defines table name """ __tablename__ = 'lectures' __table_args__ = {'extend_existing': True} """ defines attributes """ lnum = db.Column(db.Integer, primary_key=True) modcode = db.Column(db.String(100), db.ForeignKey('modules.modcode'), primary_key=True) quota = db.Column(db.Integer, nullable=False) deadline = db.Column(db.DateTime, nullable=False) """ defines relationship """ slots = db.relationship("Slots", cascade="all") bids = db.relationship("Bids", cascade="all, delete") gets = db.relationship("Gets", cascade="all, delete")
class Modules(db.Model): """ defines table name """ __tablename__ = 'modules' __table_args__ = {'extend_existing': True} """ defines attributes """ modcode = db.Column(db.String(100), primary_key=True) modname = db.Column(db.String(100), nullable=False) descriptions = db.Column(db.Text) fname = db.Column(db.String(100), db.ForeignKey('faculties.fname'), default='NUS') workload = db.Column(db.Integer, nullable=False) """ defines relationships """ lectures = db.relationship("Lectures", passive_deletes="all") prerequisites = db.relationship("Prerequisites", cascade="all, delete") preclusions = db.relationship("Preclusions", cascade="all, delete")
class Students(db.Model): """ defines table name """ __tablename__ = 'students' __table_args__ = {'extend_existing': True} """ defines attributes """ # UID serves as a primary key as well as a FK which references webuser table uid = db.Column(db.String(30), db.ForeignKey('webusers.uid'), primary_key=True) name = db.Column(db.String(100), nullable=False) enroll = db.Column(db.Date, nullable=False) """ defines relationships and cascade delete constraints """ exchanges = db.relationship("Exchanges", cascade="all,delete") minoring = db.relationship("Minoring", cascade="all, delete, save-update") bids = db.relationship("Bids", cascade="all, delete, save-update") gets = db.relationship("Gets", cascade="all, delete, save-update") completions = db.relationship("Completions", cascade="all, delete, save-update")