class Posts(db.Model): """ This class represents Posts in blog post_id: is a unique identification of a Post in DB, integer, auto increment. post_date_creation: datetime post_reading_time: string author_id: integer, relation type with User class one to many category_id: integer, relation type with PostsCategory class one to many post_title: string, 120 characters max post_text: text is_post_published: Boolean, False as default value posts_claps: integer, amount of "likes" of this post's. Posts have a many2many relation with Tags class. """ __tablename__ = "posts" post_id = db.Column(db.Integer, nullable=False, primary_key=True) post_date_creation = db.Column(db.Date, nullable=False, default=datetime.now()) post_reading_time = db.Column(db.String) author_id = db.Column(db.Integer, db.ForeignKey(User.id), nullable=False) category_id = db.Column(db.Integer, db.ForeignKey(PostsCategory.category_id)) post_title = db.Column(db.String(120), nullable=False) short_description = db.Column(db.String(300), default="") post_text = db.Column(db.String, nullable=False) is_post_published = db.Column(db.Boolean, nullable=False, default=False) posts_claps = db.Column(db.Integer, default=0) user = db.relationship(User, back_populates="posts", lazy="joined") post_category = db.relationship(PostsCategory, back_populates="posts") tags = db.relationship("Tags", secondary=tag_posts_relation, back_populates="posts") def __repr__(self): return f"Post{self.post_id} {self.post_title}"
class Comments(db.Model): __tablename__ = 'comments' id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(80), nullable=False) pub_data = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) author = db.Column(db.String, db.ForeignKey('users.username') ,nullable=False) post_id = db.Column(db.Integer, db.ForeignKey('posts.id'), nullable=False)
class Message(db.Model): id = db.Column(db.Integer, primary_key=True) sender_id = db.Column(db.Integer, db.ForeignKey('user.id')) receiver_id = db.Column(db.Integer, db.ForeignKey('user.id')) body = db.Column(db.String(140)) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) # 最后阅读时间 def __repr__(self): return '<Message {}>'.format(self.body)
class Post(SearchableMixin, db.Model): __searchable__ = ['body'] id = db.Column(db.Integer, primary_key=True) body = db.Column(db.String(500)) timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) def __repr__(self): return '<Post {}>'.format(self.body)
class Notification(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128), index=True) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) timestamp = db.Column(db.Float, index=True, default=time) payload_json = db.Column(db.Text) def get_data(self): return json.loads(self.payload_json)
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.String(20), db.ForeignKey('user.id'), nullable=False) def __repr__(self): return "Post {}, {}".format(self.title, self.date)
class Post(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) date_posted = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) content = db.Column(db.Text, nullable=False) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) def __repr__(self): return f"User('{self.title}', '{self.date_posted}')"
class Blog(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80)) admin = db.Column(db.Integer, db.ForeignKey('author.id')) def __init__(self, name, admin): self.name = name self.admin = admin def __repr__(self): return '<Blog {}>'.format(self.name)
class Post(db.Model): __tablename__ = 'posts' id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80), nullable=False) body = db.Column(db.Text, nullable=False) pub_data = db.Column(db.DateTime, nullable=False, default=datetime.utcnow) author = db.Column(db.String, db.ForeignKey('users.username'), nullable=False) comments = db.relationship('Comments') def __repr__(self): return f'Post - {self.title}'
class Task(db.Model): id = db.Column(db.String(36), primary_key=True) name = db.Column(db.String(128), index=True) description = db.Column(db.String(128)) user_id = db.Column(db.Integer, db.ForeignKey('user.id')) complete = db.Column(db.Boolean, default=False) def get_rq_job(self): try: rq_job = rq.job.Job.fetch(self.id, connection=current_app.redis) except (redis.exceptions.RedisError, rq.exceptions.NoSuchJobError): return None return rq_job def get_progress(self): job = self.get_rq_job() return job.meta.get('progress', 0) if job is not None else 100
category_id: is a unique identification of a Post's Category in DB, integer, auto increment. category_name: string, can be repeated in DB """ __tablename__ = "post_category" category_id = db.Column(db.Integer, nullable=False, primary_key=True) category_name = db.Column(db.String, nullable=False) posts = db.relationship("Posts", back_populates="post_category") def __repr__(self): return f"Post's Category Id #{self.category_id}, Category name {self.category_name}" tag_posts_relation = db.Table("tags_posts_relation", db.metadata, db.Column("post_id", db.Integer, db.ForeignKey("posts.post_id")), db.Column("tag_id", db.Integer, db.ForeignKey("tags.tag_id")) ) class Posts(db.Model): """ This class represents Posts in blog post_id: is a unique identification of a Post in DB, integer, auto increment. post_date_creation: datetime post_reading_time: string author_id: integer, relation type with User class one to many category_id: integer, relation type with PostsCategory class one to many post_title: string, 120 characters max post_text: text is_post_published: Boolean, False as default value posts_claps: integer, amount of "likes" of this post's.
for obj in cls.query: add_to_index(cls.__tablename__, obj) db.event.listen(db.session, 'before_commit', SearchableMixin.before_commit) db.event.listen(db.session, 'after_commit', SearchableMixin.after_commit) @login.user_loader def load_user(id): return User.query.get(int(id)) followers = db.Table( 'followers', db.Column('follower_id', db.Integer, db.ForeignKey('user.id')), db.Column('followed_id', db.Integer, db.ForeignKey('user.id'))) class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(64), index=True, unique=True) email = db.Column(db.String(120), index=True, unique=True) password_hash = db.Column(db.String(128)) # to get all posts of a user posts = db.relationship('Post', backref='author', lazy='dynamic') about_me = db.Column(db.String(500)) last_seen = db.Column(db.DateTime, default=datetime.utcnow) followed = db.relationship('User', secondary=followers,
class UserRoles(db.Model): __tablename__ = 'user_roles' id = db.Column(db.Integer, primary_key=True) user_id = db.Column(db.Integer, db.ForeignKey('users.id', ondelete='CASCADE')) roles_id = db.Column(db.Integer, db.ForeignKey('roles.id', ondelete='CASCADE'))