class LocalAuth(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) password = db.Column(db.String(120)) user_id = db.Column(db.String(50), db.ForeignKey('user.id')) def __init__(self, user_id, password): self.id = next_id() self.user_id = user_id self.password = password def __repr__(self): return '<LocalAuth {!r}>'.format(self.user)
class Comment(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) user_id = db.Column(db.String(50), db.ForeignKey('user.id')) blog_id = db.Column(db.String(50), db.ForeignKey('blog.id')) content = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.datetime.now) def __init__(self, user_id, blog_id, content): self.id = next_id() self.user_id = user_id self.blog_id = blog_id self.content = content def __repr__(self): return '<Comment {!r}>'.format(self.content)
class Category(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) name = db.Column(db.String(120)) image = db.Column(db.String(1024)) about = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.datetime.now) courses = db.relationship('Course', backref='category', lazy='dynamic') def __init__(self, name, image, about): self.id = next_id() self.name = name self.image = image self.about = about def __repr__(self): return '<Category {!r}>'.format(self.name)
class Course(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) name = db.Column(db.String(120)) image = db.Column(db.String(1024)) about = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.datetime.now) category_id = db.Column(db.String(50), db.ForeignKey('category.id')) chapters = db.relationship('Chapter', backref='course', lazy='dynamic') def __init__(self, name, image, about, category_id): self.id = next_id() self.name = name self.image = image self.about = about self.category_id = category_id def __repr__(self): return '<Course {!r}>'.format(self.name)
class Chapter(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) order = db.Column(db.Integer) name = db.Column(db.String(120)) created_at = db.Column(db.DateTime, default=datetime.datetime.now) course_id = db.Column(db.String(50), db.ForeignKey('course.id')) video_url = db.Column(db.Text) content = db.Column(db.Text) def __init__(self, course_id, order, name, video_url, content): self.id = next_id() self.order = order self.course_id = course_id self.name = name self.video_url = video_url self.content = content def __repr__(self): return '<Chapter {!r}>'.format(self.name)
class Blog(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) user_id = db.Column(db.String(50), db.ForeignKey('user.id')) name = db.Column(db.String(50)) summary = db.Column(db.String(50)) content = db.Column(db.Text) created_at = db.Column(db.DateTime, default=datetime.datetime.now) comments = db.relationship('Comment', backref='blog', lazy='dynamic') _regexMapDict = FieldMixin._regexMapDict.copy() def __init__(self, user_id, name, summary, content): self.id = next_id() self.user_id = user_id self.name = name self.summary = summary self.content = content def __repr__(self): return '<Blog {!r}>'.format(self.name)
class User(db.Model, FieldMixin): id = db.Column(db.String(50), primary_key=True) name = db.Column(db.String(120)) email = db.Column(db.String(120), unique=True) created_at = db.Column(db.DateTime, default=datetime.datetime.now) admin = db.Column(db.Boolean) image = db.Column(db.String(500)) localauths = db.relationship('LocalAuth', backref='user', lazy='dynamic') students = db.relationship('Student', backref='user', lazy='dynamic') instructors = db.relationship('Instructor', backref='user', lazy='dynamic') blogs = db.relationship('Blog', backref='user', lazy='dynamic') comments = db.relationship('Comment', backref='user', lazy='dynamic') def __init__(self, name, email, image, admin=False): self.id = next_id() self.name = name self.email = email.lower() self.image = image self.admin = admin def __repr__(self): return '<User {!r}>'.format(self.name) # Flask-Login integration def is_authenticated(self): return True def is_active(self): return True def is_anonymous(self): return False def get_id(self): return self.id # Required for administrative interface def __unicode__(self): return self.name