class Post(db.Model): id = db.Column(db.Integer, primary_key=True) blog_id = db.Column(db.Integer, db.ForeignKey('blog.id')) author_id = db.Column(db.Integer, db.ForeignKey('author.id')) title = db.Column(db.String(80)) body = db.Column(db.Text) image = db.Column(db.String(255)) slug = db.Column(db.String(256), unique=True) publish_date = db.Column(db.DateTime) live = db.Column(db.Boolean) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', backref=db.backref('posts', lazy='dynamic')) @property def imgsrc(self): return uploaded_images.url(self.image) def __init__(self, blog, author, title, body, category, image=None, slug=None, publish_date=None, live=True): self.blog_id = blog.id self.author_id = author.id self.title = title self.body = body self.category = category self.image = image self.slug = slug if publish_date is None: self.publish_date = datetime.utcnow() self.live = live def __repr__(self): return '<Post %r>' % self.title
class User(db.Model, UserMixin): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(20), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) image_file = db.Column(db.String(20), nullable=False, default='default.jpg') password = db.Column(db.String(60), nullable=False) posts = db.relationship('Post', backref=db.backref('author', lazy=True)) # "P" Upper case for Class def __repr__(self): return f"User('{self.username}', '{self.email}', '{self.image_file}')"
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) blog_id = db.Column(db.Integer, db.ForeignKey('blog.id')) author_id = db.Column(db.Integer, db.ForeignKey('author.id')) title = db.Column(db.String(80)) body = db.Column(db.Text) image = db.Column(db.String(255)) slug = db.Column(db.String(256), unique=True) # so slug is a string composed of date blog is published and the page name. # so slug kinda gives each blog post its own url publish_date = db.Column(db.DateTime) live = db.Column(db.Boolean) # It is usally not a good practice to delete entries from DB # so what we do is set live to false which means it will not be visible category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', backref=db.backref('posts', lazy='dynamic')) # we are establishing a relationship between catergory and posts @property def imgsrc(self): return uploaded_images.url(self.image) def __init__(self, blog, author, title, body, category, image=None, slug=None, publish_date=None, live=True): self.blog_id = blog.id self.author_id = author.id self.category_id = category.id self.image = image self.title = title self.body = body self.slug = slug if publish_date is None: self.publish_date = datetime.utcnow() else: self.publish_date = publish_date self.live = live def __repr__(self): return "<Post > {}".format(self.title)
class Comment(db.Model): id = db.Column(db.Integer, primary_key=True) post_id = db.Column(db.Integer, db.ForeignKey('post.id')) username = db.Column(db.String(255)) body = db.Column(db.Text) post = db.relationship('Post', backref=db.backref('posts', lazy='dynamic')) def __init__(self, post_id, username, body): self.post_id = post_id self.username = username if body is None: self.body = "" else: self.body = body def __repr__(self): return str(self.body)
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(140)) slug = db.Column(db.String(140), unique=True) body = db.Column(db.Text) created = db.Column(db.DateTime, default=datetime.now()) tags = db.relationship( 'Tag', secondary=post_tags, backref=db.backref('posts', lazy='dynamic') ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.generate_slug() def generate_slug(self): if self.title: self.slug = slugify(self.title) def __repr__(self): return f'<Post id: {self.id}, title: {self.title}>'
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) blog_id = db.Column(db.Integer, db.ForeignKey('blog.id')) author_id = db.Column(db.Integer, db.ForeignKey('author.id')) title = db.Column(db.String(80)) body = db.Column(db.Text) slug = db.Column(db.String(250), unique=True) publish_date = db.Column(db.DateTime) live = db.Column(db.Boolean) category_id = db.Column(db.Integer, db.ForeignKey('category.id')) category = db.relationship('Category', backref=db.backref('posts', lazy='dynamic')) def __init__(self, blog, author, title, body, category, slug=None, publish_date=None, live=True): self.blog_id = blog.id self.author_id = author.id self.title = title self.body = body self.category_id = category.id self.slug = slug if publish_date is None: self.publish_date = datetime.datetime.utcnow() else: self.publish_date = publish_date self.live = live def __repr__(self): return '<post {}>'.format(self.title)