Exemple #1
0
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(120),
                           nullable=False,
                           default='default.jpg')
    password = db.Column(db.String(120), nullable=False)
    #lazy use for database
    posts = db.relationship(
        'Post', backref='author', lazy=True
    )  #backref use to add another column like new author who create the post

    #set token
    def get_reset_token(self, expires_sec=1800):
        s = Serializer(app.config['SECRET_KEY'], expires_sec)
        return s.dumps({'user_id': self.id}).decode('utf-8')

    @staticmethod  #use to no need to use self as a argument
    def verify_reset_token(token):
        s = Serializer(app.config['SECRET_KEY'])
        try:
            user_id = s.loads(token)['user_id']
        except:
            return None
        return User.query.get(user_id)

    #magic method
    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Exemple #2
0
class Image(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    path = db.Column(db.Unicode(128))
    posts = db.relationship('Post', backref='image', lazy=True)

    def __unicode__(self):
        return self.name
Exemple #3
0
class TimestampMixin(object):
    """Model to track creation and update times."""

    created_timestamp = db.Column(db.DateTime,
                                  nullable=False,
                                  default=datetime.utcnow)
    updated_timestmap = db.Column(db.DateTime, onupdate=datetime.utcnow)
Exemple #4
0
class File(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.Unicode(64))
    path = db.Column(db.Unicode(128))

    def __unicode__(self):
        return self.name
Exemple #5
0
class Follow(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    follower_id = db.Column(db.Integer,  nullable=False)
    followed_id = db.Column(db.Integer,  nullable=False)

    def __repr__(self):
        return f"Post( '{self.follower_id}','{self.followed_id}' )"
Exemple #6
0
class Comment(TimestampMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(1000))
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))

    def __repr__(self):
        return f'<Comment {self.body}>'
Exemple #7
0
class Message(db.Model):

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(100), nullable=False)
    text = db.Column(db.String(3000), nullable=False)

    def __str__(self):
        return '<Message from {}: "{}">'.format(self.name, self.text)
Exemple #8
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True, nullable=False)
    password = db.Column(db.String(64), nullable=False)
    posts = db.relationship('Post', backref='author', lazy=True)
    comments = db.relationship('Comment', backref='author', lazy='dynamic')

    def __repr__(self):
        return f"<User: {self.username}>"
Exemple #9
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"Post('{self.title}', '{self.date_posted}')"
Exemple #10
0
class Comment(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.Text, nullable=False)
    time = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)

    def __repr__(self):
        return f"Post( '{self.mainpost.id}','{self.time}' )"
Exemple #11
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    create_at = db.Column(db.DateTime, default=datetime.now)
    body = 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)

    def __repr__(self):
        return f'<Comment body>'
Exemple #12
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(120), unique=False, nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(60), nullable=False)
    is_admin = db.Column(db.Boolean, nullable=False, default=False)
    blog_entries = db.relationship('BlogEntry', backref='author', lazy=True)

    def __repr__(self):
        return f"User('{self.email}')"
Exemple #13
0
class Tag(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(app.config['TAG_NAME_LENGTH']))

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return '<Tag %r>' % self.name
Exemple #14
0
class user(db.Model,UserMixin):
    id=db.Column(db.Integer,primary_key=True,nullable=False)
    username=db.Column(db.String(120),nullable=False,unique=True)
    email=db.Column(db.String(120),nullable=False)
    password=db.Column(db.String(120),nullable=False)
    image_file=db.Column(db.String(120),nullable=False,default='default.jpg')
    post=db.relationship('posts',backref='author',lazy=True)
    
    def __repr__(self):
        return f"user('{self.username}','{self.email}','{self.image_file}','{self.password}')"
Exemple #15
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    username = db.Column(db.String(20))
    password_hash = db.Column(db.String(128))

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)
Exemple #16
0
class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True)
    slug = db.Column(db.String(64), unique=True)

    def __init__(self, *args, **kargs):
        super().__init__(*args, **kargs)
        self.slug = slugify(self.name)

    def __repr__(self):
        return f"Tag('{self.name}')"
Exemple #17
0
class Post(TimestampMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(120))
    body = db.Column(db.String(1000))
    private = db.Column(db.Boolean, default=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    comments = db.relationship('Comment',
                               backref='original_post',
                               lazy='dynamic')

    def __repr__(self):
        return f'<Post {self.body}>'
Exemple #18
0
class Tore(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    date_posted = db.Column(db.DATETIME,
                            nullable=False,
                            default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    username = db.Column(db.String(20), nullable=False)
    reply_id = db.Column(db.Integer, db.ForeignKey('reply.id'), nullable=False)

    def __repr__(self):
        return f"ReplyTo('{self.content}','{self.date_posted}','{self.reply_id}')"
Exemple #19
0
class Project(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    data_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)
    replies = db.relationship('Reply', backref='project', lazy=True)

    def __repr__(self):
        return f"Project('{self.title}','{self.data_posted},,'{self.user_id}')"
Exemple #20
0
class Reply(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    date_posted = db.Column(db.DATETIME,
                            nullable=False,
                            default=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    username = db.Column(db.String(20), nullable=False)
    project_id = db.Column(db.Integer,
                           db.ForeignKey('project.id'),
                           nullable=False)
    repliesto = db.relationship('Tore', backref='replies', lazy=True)

    def __repr__(self):
        return f"Reply('{self.content}','{self.date_posted}','{self.project_id},{self.username}')"
Exemple #21
0
class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), nullable=False)
    slug = db.Column(db.String(100), nullable=False)

    def generate_slug(self):
        self.slug = ''
        if self.name:
            self.slug = slugtify(self.name)

    def __init__(self, *args, **kwargs):
        super(Tag, self).__init__(*args, **kwargs)
        self.generate_slug()

    def __repr__(self):
        return f"<Tag {self.name}>"
Exemple #22
0
class Post(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(app.config['POST_TITLE_LENGTH']))
    body = db.Column(db.String(app.config['POST_BODY_LENGTH']))
    timestamp = db.Column(db.DateTime)
    tags = db.relationship('Tag',
                           secondary=tags,
                           backref=db.backref('posts', lazy='dynamic'))

    def __init__(self, title, body):
        self.title = title
        self.body = body
        self.timestamp = datetime.utcnow()

    def __repr__(self):
        return '<Post %r>' % self.title
Exemple #23
0
class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(255), nullable=False)
    body = db.Column(db.Text, nullable=False)
    slug = db.Column(db.String(255), nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    created_at = db.Column(db.DateTime, default=datetime.now)
    last_modified = db.Column(db.DateTime,
                              default=datetime.now,
                              onupdate=datetime.now)
    tags = db.relationship("Tag",
                           secondary=posts_tags,
                           backref="posts",
                           lazy="dynamic")

    comments = db.relationship('Comment', backref="post", lazy=True)

    def generate_slug(self):
        self.slug = ''
        if self.title:
            self.slug = slugtify(self.title)

    def __init__(self, *args, **kwargs):
        super(Post, self).__init__(*args, **kwargs)
        self.generate_slug()

    def __repr__(self):
        return f'<Post {self.title}>'
Exemple #24
0
class BlogPost(db.Model):

    users = db.relationship(User)

    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)

    date = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    title = db.Column(db.String(140), nullable=False)
    text = db.Column(db.Text, nullable=False)

    def __init__(self, title, text, user_id):
        self.title = title
        self.text = text
        self.user_id = user_id

    def __repr__(self):
        return f"Post ID: {self.id} -- Date: {self.date} --- {self.title}"
Exemple #25
0
class User(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    pfp = db.Column(db.String(20), nullable=False, default="defaultpfp.png")
    pfc = db.Column(db.String(20), nullable=False, default="defaultpfp.png")
    password = db.Column(db.String(16), nullable=False)
    username = db.Column(db.String(16), nullable=False)
    email = db.Column(db.String(45), nullable=False)

    description = db.Column(db.String(256), default="", nullable=False)
    activity = db.Column(db.String(126), default="I'm Someone :)", nullable=False)
    followers = db.Column(db.Integer, nullable=False , default = 0)

    posts = db.relationship('Post', backref='author', lazy=True)
    comments = db.relationship('Comment', backref='comment_author', lazy=True)

    def __repr__(self):
        return f"User('{self.username}','{self.email}','{self.password}','{self.pfp}','{self.pfc}','{self.description}','{self.activity}','{self.followers}')"
Exemple #26
0
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(550), nullable=False)
  salt = db.Column(db.String(30), nullable=False)
  posts = db.relationship('Post', backref='author', lazy=True)

  def get_reset_token(self, expires_sec=1800):
    s = Serializer(current_app.config['SECRET_KEY'], expires_sec)
    return s.dumps({'user_id': self.id}).decode('utf-8')

  @staticmethod
  def verify_reset_token(token):
    s = Serializer(current_app.config['SECRET_KEY'])
    try:
      user_id = s.loads(token)['user_id']
    except:
      return None
    return User.query.get(user_id)


  def __repr__(self):
    return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Exemple #27
0
class User(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String, unique=True)
    password = db.Column(db.String(16))

    def __init__(self, username, password):
        self.username = username
        self.password = password

    def is_active(self):
        return True

    def is_authenticated(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        try:
            return unicode(self.id)
        except AttributeError:
            raise NotImplementedError("No 'id' attribute - override 'get_id'")

    def __eq__(self, other):
        if isinstance(other, UserMixin):
            return self.get_id() == other.get_id()
        return NotImplemented

    def __ne__(self, other):
        equal = self.__eq__(other)
        if equal is NotImplemented:
            return NotImplemented
        return not equal

    def __repr__(self):
        return '<User %r>' % self.username
Exemple #28
0
class BlogEntry(db.Model):

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(200), unique=True, nullable=False)
    # url friendly version of title
    slug = db.Column(db.String(200), unique=True, nullable=False)
    date_posted = db.Column(db.DateTime,
                            nullable=False,
                            default=datetime.utcnow)
    date_updated = db.Column(db.DateTime,
                             default=datetime.utcnow,
                             onupdate=datetime.utcnow)
    content = db.Column(db.Text, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    is_published = db.Column(db.Boolean, nullable=False, default=True)
    tags = db.relationship('Tag',
                           secondary=entry_tag,
                           backref='entries',
                           lazy=True)

    def __init__(self, *args, **kargs):
        super().__init__(*args, **kargs)
        self.slug = slugify(self.title)

    def __repr__(self):
        return f"BlogEntry('{self.title}', '{self.date_posted}')"

    @property
    def markdown_content(self):
        '''
        Convert markdown content into html
        '''

        hilite = CodeHiliteExtension(linenums=False, css_class='highlight')
        extras = ExtraExtension()

        markdown_content = markdown(self.content, extensions=[hilite, extras])

        return Markup(markdown_content)

    @property
    def preview_content(self):
        '''
        grab the first image and first two paragraphs of a markdown content 
        '''
        soup = BeautifulSoup(self.markdown_content, 'html.parser')
        return [Markup(p) for p in soup.find_all('p')[:2]]
Exemple #29
0
class Post(db.Model, UserMixin):
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.Text, nullable=False)
    smallcontent = db.Column(db.Text, nullable=False)
    title = db.Column(db.String(100), nullable=False)
    time = db.Column(db.DateTime, nullable=False, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    likes = db.Column(db.Integer, nullable=False,default=0)

    comments = db.relationship('Comment', backref='mainpost', lazy=True)

    def __repr__(self):
        return f"Post( '{self.title}','{self.time}' )"
Exemple #30
0
class User(db.Model, UserMixin):

    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    profile_image = db.Column(db.String(64),
                              nullable=False,
                              default='default_profile.png')
    email = db.Column(db.String(64), unique=True, index=True)
    username = db.Column(db.String(64), unique=True, index=True)
    password_hash = db.Column(db.String(128))

    posts = db.relationship('BlogPost', backref='author', lazy=True)

    def __init__(self, email, username, password):
        self.email = email
        self.username = username
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)

    def __repr__(self):
        return f"Username {self.username}"