class Course(db.Model): __tablename__ = 'courses' id = db.Column(db.String(12), primary_key=True, nullable=False) # CSEE3827 subject_id = db.Column(db.String(6), db.ForeignKey('subjects.id'), nullable=False) # CSEE number = db.Column(db.String(6), nullable=False) # 3827 name = db.Column(db.String(100), nullable=False) # Fundamentals of Computer Systems department_id = db.Column(db.String(6), db.ForeignKey('departments.id'), nullable=False) # COMS def __init__(self, id=None, subject=None, number=None, name=None, department=None): db.Model.__init__(self, id=id, subject=subject, number=number, name=name, department=department) def __repr__(self): return '<Course %r>' % self.id
class Membership(db.Model): __tablename__ = 'memberships' id = db.Column(db.Integer, primary_key=True, autoincrement=True) user_id = db.Column(db.String(40), db.ForeignKey('users.id'), nullable=False) role_id = db.Column(db.Integer, db.ForeignKey('roles.id'), nullable=False) __table_args__ = (db.UniqueConstraint('user_id', 'role_id', name='_memberships_uc'), ) def __repr__(self): return '<Membership %r>' % self.id
class Teaching(db.Model): __tablename__ = 'teachings' id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 1 course_id = db.Column(db.String(12), db.ForeignKey('courses.id'), nullable=False) # CSEE3827 course = db.relation(Course, backref='teachings', lazy=True) professor_uni = db.Column(db.String(8), db.ForeignKey('professors.uni'), nullable=False) # Ewan Lowe professor = db.relation(Professor, backref='teachings', lazy=True) comments = db.relationship('Comment', backref='teaching', lazy=True) __table_args__ = (db.UniqueConstraint('course_id', 'professor_uni', name='_teachings_uc'), )
class Professor(db.Model): __tablename__ = 'professors' uni = db.Column(db.String(8), primary_key=True, nullable=False) # etl2115 name = db.Column(db.String(100), nullable=False) # Ewan Lowe department_id = db.Column(db.String(6), db.ForeignKey('departments.id'), nullable=False) # COMS department = db.relationship('Department', backref='professors', lazy=True) avatar = db.Column(db.String(200)) # Avatar url = db.Column(db.String(200)) # Personal website def __init__(self, uni=None, name=None, department=None, avatar='', url=''): db.Model.__init__(self, uni=uni, name=name, department=department, avatar=avatar, url=url) def __repr__(self): return '<Professor %r>' % self.name
class Comment(db.Model): __tablename__ = 'comments' id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 1 teaching_id = db.Column(db.Integer, db.ForeignKey('teachings.id'), nullable=False) title = db.Column(db.String(100)) # Great course content = db.Column(db.Text) # A very good teacher term_id = db.Column(db.String(12), db.ForeignKey('terms.id'), nullable=False) term = db.relation(Term, backref='comments', lazy=True) rating = db.Column(db.Integer, nullable=False) # 5 workload = db.Column(db.Integer, nullable=False) # 1 grade = db.Column(db.String(2), nullable=False) # A+ user_id = db.Column(db.String(40), db.ForeignKey('users.id'), nullable=False) user = db.relation(User, backref='comments', lazy=True) timestamp = db.Column(db.DateTime, default=datetime.utcnow, nullable=False) tags = db.relationship('Tag', secondary=comments_tags, lazy='subquery', backref=db.backref('comments', lazy=True))
comments = db.relationship('Comment', backref='teaching', lazy=True) __table_args__ = (db.UniqueConstraint('course_id', 'professor_uni', name='_teachings_uc'), ) class Term(db.Model): __tablename__ = 'terms' id = db.Column(db.String(12), primary_key=True, nullable=False) comments_tags = db.Table( 'comments_tags', db.Column('comment', db.Integer, db.ForeignKey('comments.id'), primary_key=True), db.Column('tag', db.Integer, db.ForeignKey('tags.id'), primary_key=True)) class Comment(db.Model): __tablename__ = 'comments' id = db.Column(db.Integer, primary_key=True, autoincrement=True) # 1 teaching_id = db.Column(db.Integer, db.ForeignKey('teachings.id'), nullable=False) title = db.Column(db.String(100)) # Great course content = db.Column(db.Text) # A very good teacher term_id = db.Column(db.String(12), db.ForeignKey('terms.id'), nullable=False)