示例#1
0
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}"
示例#2
0
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)
示例#3
0
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)
示例#4
0
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
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}')"
示例#8
0
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)
示例#9
0
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}'
示例#10
0
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
示例#11
0
    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.
示例#12
0
        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,
示例#13
0
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'))