class Page(db.Model): __tablename__ = "pages" id = db.Column(db.Integer, primary_key=True) type = db.Column(db.String(50)) author_id = db.Column(db.Integer, db.ForeignKey("users.id")) title = db.Column(db.String(120)) slug = db.Column(db.String(120), unique=True) summary = db.Column(db.String()) published = db.Column(db.Boolean()) created_at = db.Column(db.DateTime(), default=datetime.datetime.utcnow) updated_at = db.Column(db.DateTime(), onupdate=datetime.datetime.utcnow) published_at = db.Column(db.DateTime()) content = db.Column(db.String()) hits = db.Column(db.Integer, default=0) author = db.relationship("User", backref=db.backref("pages", lazy="dynamic")) tags = db.relationship( "Tag", secondary=tags_pages, backref=db.backref("pages", lazy="dynamic") ) comments_enabled = db.Column(db.Boolean(), default=True) __mapper_args__ = {"polymorphic_on": type, "polymorphic_identity": "page"} def __repr__(self): return f"{self.title}"
class Tag(db.Model): __tablename__ = "tags" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), unique=True) description = db.Column(db.String(255)) def __repr__(self): return f"{self.name}"
class Image(db.Model): __tablename__ = "images" id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(64), unique=True, nullable=False) filename = db.Column(db.String(128), unique=True) def __repr__(self): return self.name @property def url(self): return images.url(self.filename) @property def filepath(self): if self.filename is None: return return images.path(self.filename)
class User(db.Model, UserMixin): __tablename__ = "users" id = db.Column(db.Integer, primary_key=True) email = db.Column(db.String(255), unique=True) password = db.Column(db.String(255)) username = db.Column(db.String(255)) first_name = db.Column(db.String(255)) last_name = db.Column(db.String(255)) last_login_at = db.Column(db.DateTime()) current_login_at = db.Column(db.DateTime()) last_login_ip = db.Column(db.String(100)) current_login_ip = db.Column(db.String(100)) login_count = db.Column(db.Integer) active = db.Column(db.Boolean()) confirmed_at = db.Column(db.DateTime()) roles = db.relationship( "Role", secondary=roles_users, backref=db.backref("users", lazy="dynamic") ) def __repr__(self): return f"{self.email}"