Example #1
0
class Category(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False, unique=True)
    posts = db.relationship('Post', backref='category', lazy=True)

    def __repr__(self):
        return f'Category({self.name})'

    def posts_count(self):
        return len(self.posts)
Example #2
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(length=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)
    likes = db.relationship('Like', backref='likes', lazy=True)
    comments = db.relationship('Comment', backref='comments', lazy=True)

    def __repr__(self):
        return f"Post('{self.title}', '{self.date_posted}')"
Example #3
0
class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(length=20), unique=True, nullable=False)
    email = db.Column(db.String(length=120), unique=True, nullable=False)
    image_file = db.Column(db.String(length=20), nullable=False, default='default.jpg')
    password = db.Column(db.String(60), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)
    likes = db.relationship('Like', backref='liker', lazy=True)
    comments = db.relationship('Comment', backref='commenter', lazy=True)

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Example #4
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    body = db.Column(db.Text(), nullable=False)
    created_time = db.Column(db.DateTime,
                             nullable=False,
                             default=datetime.now())
    updated_time = db.Column(db.DateTime, nullable=True)
    post_image = db.Column(db.String(20), nullable=True, default='default.jpg')
    author_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    categroy_id = db.Column(db.Integer,
                            db.ForeignKey('category.id'),
                            nullable=False)

    def __repr__(self):
        return f"Post('{self.title}','{self.categroy_id}')"
Example #5
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    public_id = db.Column(db.String(100), unique=True, nullable=False)
    username = db.Column(db.String(12), unique=True, nullable=False)
    email = db.Column(db.String(20), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    admin = db.Column(db.Boolean, nullable=False, default=False)
    active = db.Column(db.Boolean, nullable=False, default=True)
    image_file = db.Column(db.String(20), nullable=True, default='default.jpg')
    posts = db.relationship('Post', backref='author', lazy=True)
    created_time = db.Column(db.DateTime,
                             nullable=False,
                             default=datetime.now())

    def __repr__(self):
        return f"User('{self.username}','{self.email}',active:'{self.active}')"

    @staticmethod
    def auth_encode_token(user_id):
        ''' Generate token to auth'''
        data = {
            'user_id': user_id,
            'exp': datetime.utcnow() + timedelta(minutes=30),
            'iat': datetime.utcnow()  # issued at
        }
        return jwt.encode(data, key)

    @staticmethod
    def auth_decode_token(auth_token):
        '''Decode token'''
        try:
            data = jwt.decode(auth_token, key)
            return data['user_id']
        except jwt.ExpiredSignatureError:
            return 'Signature expired. Please log in again.'
        except jwt.InvalidTokenError:
            return 'Invalid token.'
Example #6
0
class Like(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)
Example #7
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(length=20), nullable=False)
    text = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)