Ejemplo n.º 1
0
class LikePhoto(db.Model):
    __tablename__ = 'like_photo'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    img_id = db.Column(db.INTEGER, db.ForeignKey('photo.id'))
    user_id = db.Column(db.INTEGER, db.ForeignKey('user.id'))
    timestamp = db.Column(db.DateTime, default=datetime.now)

    photo = db.relationship('Photo', back_populates='likes')
    user = db.relationship('User', back_populates='likes')
Ejemplo n.º 2
0
class User(db.Model, UserMixin):
    __tablename__ = 'user'

    id = db.Column(db.INTEGER, primary_key=True, nullable=False, comment='user id', autoincrement=True)
    username = db.Column(db.String(40), unique=True, nullable=False, comment='user name')
    email = db.Column(db.String(40), unique=True, nullable=False, comment='user register email')
    password = db.Column(db.String(128), nullable=False, comment='user password')
    website = db.Column(db.String(128), comment='user owner website', default='')
    avatar = db.Column(db.String(128), nullable=False, comment='user avatar')
    confirm = db.Column(db.INTEGER, nullable=False, default=0)
    role_id = db.Column(db.INTEGER, db.ForeignKey('role.id'))
    create_time = db.Column(db.DateTime, default=datetime.now)
    slogan = db.Column(db.String(200), default='')
    recent_login = db.Column(db.DateTime, default=datetime.now)
    received_email_tag = db.Column(db.INTEGER, default=1, comment='receive email notify')
    status = db.Column(db.INTEGER, db.ForeignKey('states.id'), default=1)
    reg_way = db.Column(db.INTEGER, db.ForeignKey('third_party.id'), default=1)

    roles = db.relationship('Role', back_populates='users')
    photo_comments = db.relationship('PhotoComment', back_populates='author', cascade='all')
    login_logs = db.relationship('LoginLog', back_populates='user', cascade='all')
    blog_comments = db.relationship('BlogComment', back_populates='author', cascade='all')
    likes = db.relationship('LikePhoto', back_populates='user', cascade='all')
    statuses = db.relationship('States', back_populates='user')
    third_party = db.relationship('ThirdParty', back_populates='user')

    receive_notify = db.relationship('Notification', back_populates='receive_user', cascade='all')

    def __init__(self, **kwargs):
        super(User, self).__init__(**kwargs)
        self.generate_avatar()
        self.set_role()

    def __repr__(self):
        return 'username<%s> email<%s> website<%s>' % (self.username, self.email, self.website)

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

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

    def generate_avatar(self):
        icon = Identicon()
        files = icon.generate(self.username)
        self.avatar = '/accounts/avatar/' + files[2]
        db.session.commit()

    def set_role(self):
        if self.roles is None:
            if self.email == '*****@*****.**' or self.email == '*****@*****.**':
                self.roles = Role.query.filter_by(name='ADMIN').first()
            else:
                self.roles = Role.query.filter_by(name='USER').first()
            db.session.commit()
Ejemplo n.º 3
0
class PhotoComment(db.Model):
    __tablename__ = 'photo_comment'

    id = db.Column(db.INTEGER, primary_key=True)
    body = db.Column(db.String(400))
    timestamp = db.Column(db.DateTime, default=datetime.now, index=True)

    parent_id = db.Column(db.INTEGER)
    replied_id = db.Column(db.INTEGER, db.ForeignKey('photo_comment.id'))
    author_id = db.Column(db.INTEGER, db.ForeignKey('user.id'))
    photo_id = db.Column(db.INTEGER, db.ForeignKey('photo.id'))
    delete_flag = db.Column(db.INTEGER, default=0, comment='this comment delete flag 0 no 1 yes')

    photo = db.relationship('Photo', back_populates='comments')
    author = db.relationship('User', back_populates='photo_comments')
    replies = db.relationship('PhotoComment', back_populates='replied', cascade='all')
    replied = db.relationship('PhotoComment', back_populates='replies', remote_side=[id])
Ejemplo n.º 4
0
class BlogComment(db.Model):
    __tablename__ = 'blog_comment'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    body = db.Column(db.Text)
    timestamp = db.Column(db.DateTime, default=datetime.now)
    parent_id = db.Column(db.INTEGER)

    replied_id = db.Column(db.INTEGER, db.ForeignKey('blog_comment.id'))
    author_id = db.Column(db.INTEGER, db.ForeignKey('user.id'))
    blog_id = db.Column(db.INTEGER, db.ForeignKey('blog.id'))
    delete_flag = db.Column(db.INTEGER, default=0, comment='this comment delete flag 0 no 1 yes')

    blog = db.relationship('Blog', back_populates='comments')
    author = db.relationship('User', back_populates='blog_comments')
    replies = db.relationship('BlogComment', back_populates='replied', cascade='all')
    replied = db.relationship('BlogComment', back_populates='replies', remote_side=[id])
Ejemplo n.º 5
0
class BlogHistory(db.Model):
    __tablename__ = 'blog_history'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    blog_id = db.Column(db.INTEGER, db.ForeignKey('blog.id'))
    save_path = db.Column(db.String(100), nullable=False)
    timestamps = db.Column(db.DateTime, default=datetime.now)

    blog = db.relationship('Blog', back_populates='blog_history')
Ejemplo n.º 6
0
class SongCi(db.Model):
    __tablename__ = 'song_ci'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    author_id = db.Column(db.INTEGER, db.ForeignKey('song_ci_author.id'))
    rhythmic = db.Column(db.String(100), nullable=False)
    content = db.Column(db.TEXT, nullable=False)

    authors = db.relationship('SongCiAuthor', back_populates='cis')
Ejemplo n.º 7
0
class Poem(db.Model):
    __tablename__ = 'poem'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    author_id = db.Column(db.INTEGER, db.ForeignKey('poet.id'))
    title = db.Column(db.String(200), nullable=False)
    content = db.Column(db.TEXT, nullable=False)

    poets = db.relationship('Poet', back_populates='poems')
Ejemplo n.º 8
0
class LoginLog(db.Model):
    __tablename__ = 'login_log'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True, comment='login record')
    timestamp = db.Column(db.DateTime, default=datetime.now)
    login_addr = db.Column(db.String(100), default='')
    real_addr = db.Column(db.String(100), default='')
    user_id = db.Column(db.INTEGER, db.ForeignKey('user.id'))

    user = db.relationship('User', back_populates='login_logs')
Ejemplo n.º 9
0
class ContributeDetail(db.Model):
    __tablename__ = 'contribute_detail'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    cont_id = db.Column(db.INTEGER, db.ForeignKey('contribute.id'))
    timestamps = db.Column(db.DateTime, default=datetime.now().strftime('%H:%m:%S'))
    title = db.Column(db.String(256), default='', nullable=False)
    detail_link = db.Column(db.String(256), default='', nullable=False)

    cont = db.relationship('Contribute', back_populates='con_detail')
Ejemplo n.º 10
0
class Blog(db.Model):
    __tablename__ = 'blog'

    id = db.Column(db.INTEGER,
                   primary_key=True,
                   nullable=False,
                   comment='blog id',
                   autoincrement=True)
    title = db.Column(db.String(200),
                      nullable=False,
                      comment='blog title',
                      index=True)
    type_id = db.Column(db.INTEGER, db.ForeignKey('blog_type.id'))
    pre_img = db.Column(db.String(200),
                        nullable=False,
                        comment='blog preview image')
    introduce = db.Column(db.String(255),
                          nullable=False,
                          comment='blog introduce text',
                          index=True)
    content = db.Column(db.TEXT, nullable=False, comment='blog content')
    is_private = db.Column(db.INTEGER,
                           nullable=False,
                           default=0,
                           comment='is private? 0:no 1:yes')
    create_time = db.Column(db.DateTime, nullable=False, default=datetime.now)
    update_time = db.Column(db.DateTime, nullable=False, default=datetime.now)
    read_times = db.Column(db.INTEGER, default=0)
    delete_flag = db.Column(db.INTEGER, db.ForeignKey('states.id'))
    is_top = db.Column(db.INTEGER, default=0, comment='is it set top?')

    blog_types = db.relationship('BlogType', back_populates='blogs')
    comments = db.relationship('BlogComment',
                               back_populates='blog',
                               cascade='all')
    state = db.relationship('States', back_populates='blog')
    blog_history = db.relationship('BlogHistory',
                                   back_populates='blog',
                                   cascade='all')

    def __repr__(self):
        return '<title> %s <introduce> %s' % (self.title, self.introduce)
Ejemplo n.º 11
0
class FriendLink(db.Model):
    __tablename__ = 'friend_link'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    name = db.Column(db.String(40), nullable=False)
    link = db.Column(db.String(40), nullable=False)
    desc = db.Column(db.String(40), default='')
    timestamp = db.Column(db.DateTime, default=datetime.now)
    flag = db.Column(db.INTEGER, db.ForeignKey('states.id'))

    status = db.relationship(States, back_populates='flink')
Ejemplo n.º 12
0
class MessageBorder(db.Model):
    __tablename__ = 'msg_border'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    user_id = db.Column(db.INTEGER, db.ForeignKey('user.id'))
    parent_id = db.Column(db.INTEGER, default=0)
    body = db.Column(db.TEXT, nullable=False)
    timestamps = db.Column(db.DateTime, default=datetime.now)
    flag = db.Column(db.INTEGER, default=0, comment='is it not effect?')
    plain_text = db.Column(db.TEXT, nullable=False)
    msg_user = db.relationship('User', back_populates='msg_border')
Ejemplo n.º 13
0
class Poet(db.Model):
    """唐宋诗人表"""
    __tablename__ = 'poet'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True, index=True)
    name = db.Column(db.String(100), nullable=False, index=True)
    desc = db.Column(db.TEXT, default='')
    dynasty_id = db.Column(db.INTEGER, db.ForeignKey('dynasty.id'))
    json_id = db.Column(db.String(100), unique=True)

    dynasties = db.relationship('Dynasty', back_populates='poets')
    poems = db.relationship('Poem', back_populates='poets', cascade='all')
Ejemplo n.º 14
0
class Notification(db.Model):
    __tablename__ = 'notification'

    id = db.Column(db.INTEGER, primary_key=True, autoincrement=True)
    type = db.Column(db.INTEGER, default=0, comment='notification type 0 blog 1 photo')
    target_id = db.Column(db.INTEGER)
    target_name = db.Column(db.String(200))
    send_user = db.Column(db.String(40))
    receive_id = db.Column(db.INTEGER, db.ForeignKey('user.id'))
    msg = db.Column(db.String(400))
    read = db.Column(db.INTEGER, default=0, comment='is readed? 0 no 1 yes')
    timestamp = db.Column(db.DateTime, default=datetime.now)

    receive_user = db.relationship('User', back_populates='receive_notify')
Ejemplo n.º 15
0
    counts = db.Column(db.INTEGER, nullable=False, default=0, comment='this type blog counts')
    description = db.Column(db.String(300), nullable=False)
    create_time = db.Column(db.DateTime, default=datetime.now)

    blogs = db.relationship('Blog', back_populates='blog_types')

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

    def __repr__(self):
        return '<name> %s <description> %s' % (self.name, self.description)


tagging = db.Table('tagging',
                   db.Column('photo_id', db.INTEGER, db.ForeignKey('photo.id')),
                   db.Column('tag_id', db.INTEGER, db.ForeignKey('tag.id')))


@whooshee.register_model('title', 'description')
class Photo(db.Model):
    __tablename__ = 'photo'

    id = db.Column(db.INTEGER, primary_key=True, nullable=False, comment='photo id', autoincrement=True)
    title = db.Column(db.String(40), nullable=False, comment='photo title', default='""')
    description = db.Column(db.String(300), nullable=False, comment='photo description', default='""')
    save_path = db.Column(db.String(200), nullable=False, comment='photo save path')
    save_path_s = db.Column(db.String(200), nullable=False, comment='small size')
    create_time = db.Column(db.DateTime, default=datetime.now)
    level = db.Column(db.INTEGER, default=0)
    tags = db.relationship('Tag', secondary=tagging, back_populates='photos')