示例#1
0
class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), nullable=False)

    def __repr__(self):
        return '<Category %r>' % self.name

    def __str__(self):
        return self.name
示例#2
0
class Tags(db.Model):
    __tablename__ = 'tags'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)

    def __repr__(self):
        return '<Tags %r>' % self.name

    @staticmethod
    def load_by_name(name):
        return Tags.query.filter_by(name=name).first_or_404()
示例#3
0
class Tags(db.Model):
    __tablename__ = 'tags'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    blogs = db.relationship(
        'Blog', secondary=tag_blog, lazy='dynamic', backref="tags")

    def __repr__(self):
        return '<Tags %r>' % self.name

    def __str__(self):
        return self.name
示例#4
0
class UserInfor(db.Model):
    __tablename__ = 'userinfor'
    id = db.Column(db.Integer, primary_key=True)
    # confirmed_time = db.Column(db.DateTime, nullable=True)
    # registered_time = db.Column(db.DateTime, nullable=False)
    # score = db.Column(db.Integer, nullable=False, default=100)
    avatar = db.Column(db.String)
    word = db.Column(db.Text, nullable=True)
    introduce = db.Column(db.Text, nullable=True)
    school = db.Column(db.String, nullable=True)

    def __repr__(self):
        return "<UserInfor %r>" % self.id
示例#5
0
class Notices(db.Model):
    __tablename__ = 'notices'
    id = db.Column(db.Integer, primary_key=True)
    notice = db.Column(db.Text, nullable=False)
    publish = db.Column(db.DateTime, nullable=False)

    __mapper_args__ = {"order_by": publish.desc()}

    # def __init__(self, notice):
    #     self.notice = notice

    def __repr__(self):
        return "<Notices %r>" % self.title
示例#6
0
class Module(db.Model):
    '''
    后台管理:admin_manager
    问题管理:que_manager
    回复管理:rep_manager
    个人管理:own_manager
    '''
    __tablename__ = 'modules'
    id = db.Column(db.Integer, primary_key=True)
    modulecode = db.Column(db.String(81), unique=True)
    modulename = db.Column(db.String(81), unique=True)
    parentcode = db.Column(db.String(81), nullable=True)
    moduleurl = db.Column(db.String(81), nullable=True)
示例#7
0
class Articles(db.Model):
    __tablename__ = 'articles'
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.String, nullable=False)
    title = db.Column(db.String(50), nullable=False)
    publish = db.Column(db.DateTime, nullable=False)
    updated = db.Column(db.DateTime, default=datetime.now())
    content = db.Column(db.Text, nullable=False)
    category = db.Column(db.String, nullable=False)
    copy = db.Column(db.Boolean, nullable=True, default=False)
    '''多个标签对多篇文章'''
    tags = db.relationship(
        'Tags',
        secondary=tag_article,
        backref=db.backref('articles', lazy='dynamic'))

    __mapper_args__ = {"order_by": publish.desc()}

    def __repr__(self):
        return "<Articles %r>" % self.title

    @staticmethod
    def load_by_id(qid):
        return Articles.query.filter_by(id=qid).first_or_404()

    @staticmethod
    def load_by_tag(tag):
        article = Articles.query.join(Articles.tags).\
                  filter(Tags.name == tag).all()
        return article

    @staticmethod
    def load_by_category(category):
        return Articles.query.filter_by(category=category).all()
示例#8
0
class Route(db.Model):
    __tablename__ = 'routes'
    id = db.Column(db.Integer, primary_key=True)
    endpoint = db.Column(db.String(256), nullable=False)
    rule = db.Column(db.String(512), nullable=False)
    permissions = db.relationship('Permiss',
                                  secondary=routes_permissions,
                                  backref=db.backref('routes'))

    def __str__(self):
        return "<%s : %s>" % (self.endpoint, self.rule)

    def __repr__(self):
        return "<Route %r>" % self.endpoint
示例#9
0
class Questions(db.Model):
    __tablename__ = 'questions'
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.String(20), nullable=False)
    title = db.Column(db.String(48), nullable=False)
    describ = db.Column(db.Text, nullable=False)
    answer = db.Column(db.Text, nullable=False)
    private = db.Column(db.Boolean, nullable=False, default=False)
    private_id = db.Column(db.Integer, nullable=True)
    publish = db.Column(db.DateTime, nullable=False)

    __mapper_args__ = {"order_by": publish.desc()}

    def __repr__(self):
        return "<Questions %r>" % self.title

    @staticmethod
    @cache.cached(timeout=60, key_prefix='questions:id')
    def load_by_id(qid):
        return Questions.query.filter_by(id=qid).first_or_404()

    @staticmethod
    @cache.cached(timeout=60, key_prefix='questions:id')
    def load_by_author(name):
        return Questions.query.filter_by(author=name).all()

    @staticmethod
    @cache.cached(timeout=60, key_prefix='questions:id')
    def load_by_private():
        questions = Questions.query.filter_by(author=current_user.username,
                                              private=True).all()
        return questions
示例#10
0
class Notice(db.Model):
    __tablename__ = 'notices'
    id = db.Column(db.Integer, primary_key=True)
    notice = db.Column(db.Text, nullable=False)
    created_at = db.Column(db.DateTime,
                           default=datetime.utcnow(),
                           nullable=False)

    __mapper_args__ = {"order_by": created_at.desc()}

    # def __init__(self, notice):
    #     self.notice = notice

    def __repr__(self):
        return "<Notice %r>" % self.id
示例#11
0
class Comments(db.Model):
    __tablename__ = 'comments'
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.String, nullable=False)
    publish = db.Column(db.DateTime, nullable=False)
    content = db.Column(db.Text, nullable=False)
    articles_id = db.Column(db.Integer, db.ForeignKey('articles.id'))
    article = db.relationship(
        'Articles', backref=db.backref('comments', lazy='dynamic'))

    def __init__(self, author, content):
        self.author = author
        self.content = content

    def __repr__(self):
        return "<Comments %r>" % self.content
示例#12
0
class Role(db.Model):
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(81), nullable=False, default='unconfirmed')
    description = db.Column(db.String(255), nullable=True)
    parents = db.relationship('Role',
                              secondary=roles_parents,
                              primaryjoin=(id == roles_parents.c.role_id),
                              secondaryjoin=(id == roles_parents.c.parent_id),
                              backref=db.backref('children'))

    def __str__(self):
        return self.name

    def __repr__(self):
        return '<Role %r>' % self.name
示例#13
0
class Tags(db.Model):
    __tablename__ = 'tags'
    '''帖子节点'''
    id = db.Column(db.Integer, primary_key=True)
    author = db.Column(db.String(50), nullable=False)
    name = db.Column(db.String(50), nullable=False)
    time = db.Column(db.DateTime, nullable=False)

    __mapper_args__ = {"order_by": time.desc()}

    def __init__(self, name, author):
        self.name = name
        self.author = author
        self.time = datetime.now()

    def __repr__(self):
        return '<Tags %r>' % self.name
示例#14
0
class Question(db.Model):
    __tablename__ = 'questions'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(48), nullable=False)
    describ = db.Column(db.Text, nullable=False)
    answer = db.Column(db.Text, nullable=False)
    is_private = db.Column(db.Boolean, default=False, nullable=False)
    created_at = db.Column(db.DateTime,
                           default=datetime.utcnow(),
                           nullable=False)
    author_id = db.Column(db.Integer,
                          db.ForeignKey('users.id', ondelete="CASCADE"))
    author = db.relationship('User',
                             backref=db.backref('questions',
                                                cascade='all,delete-orphan',
                                                lazy='dynamic'))

    __mapper_args__ = {"order_by": created_at.desc()}

    def __repr__(self):
        return "<Question %r>" % self.title

    def __str__(self):
        return self.title

    @classmethod
    def get(cls, queId):
        return cls.query.filter_by(id=queId).first_or_404()

    @classmethod
    def get_question_list(cls, page=1, filter_dict=dict()):
        if not filter_dict:
            return cls.query.paginate(page, 18, True)
        return cls.query.filter_by(**filter_dict).paginate(page, 18, True)
示例#15
0
class Permiss(db.Model):
    __tablename__ = 'permissions'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(512), nullable=False)
    is_allow = db.Column(db.Boolean, default=True)
    method = db.Column(db.String(16), nullable=False)
    roles = db.relationship('Role',
                            secondary=roles_permissions,
                            backref=db.backref('permissions'))

    def __str__(self):
        if self.is_allow:
            return self.name + '允许' + self.method
        else:
            return self.name + '禁止' + self.method

    def __repr__(self):
        return "<Permiss %r>" % self.id
示例#16
0
class Lover(db.Model):
    __tablename__ = 'loves'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete="CASCADE"))
    reply_id = db.Column(db.Integer,
                         db.ForeignKey('replies.id', ondelete="CASCADE"))
    like_time = db.Column(db.DateTime, default=datetime.now(), nullable=False)

    def __init__(self):
        self.like_time = datetime.now()

    @staticmethod
    def load_by_id(rid, uid):
        return Lover.query.filter_by(reply_id=rid, user_id=uid).first()

    @staticmethod
    def load(rid, uid):
        return Lover.query.filter_by(reply_id=rid, user_id=uid).first()
示例#17
0
class Role(db.Model):
    '''
     super
     admin
     member
     banned
     unconfirmed
     guest
     group_admin
     board_admin
    '''
    __tablename__ = 'roles'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(81), nullable=False, default='unconfirmed')
    description = db.Column(db.String(255), nullable=True)
    rank = db.Column(db.Integer, nullable=False, default=1)
    users = db.relationship('User',
                            secondary='user_role',
                            backref=db.backref('roles', lazy='dynamic'))
    __mapper_args__ = {"order_by": rank.desc()}
示例#18
0
class Permission(db.Model):
    '''
    admin_manager:admin_post,admin_edit,admin_read,admin_delete
    que_manager:que_post,que_edit,que_read,que_delete
    rep_manager:rep_post,rep_edit,rep_read,rep_delete
    own_manager:update_password,update_infor,own_read
    '''
    __tablename__ = 'permission'
    id = db.Column(db.Integer, primary_key=True)
    percode = db.Column(db.String(81), nullable=False)
    pername = db.Column(db.String(81), nullable=False)
    description = db.Column(db.String(255), nullable=True)
    module_id = db.Column(db.Integer,
                          db.ForeignKey('modules.id', ondelete="CASCADE"))
    module = db.relationship('Module',
                             backref=db.backref('permission',
                                                cascade='all,delete-orphan',
                                                lazy='dynamic'))
    roles = db.relationship('Role',
                            secondary='role_permission',
                            backref=db.backref('permission', lazy='dynamic'))
示例#19
0
class Tags(db.Model):
    __tablename__ = 'tags'
    id = db.Column(db.Integer, primary_key=True)
    time = db.Column(db.DateTime, default=datetime.utcnow())
    tagname = db.Column(db.String(64), nullable=False)
    summary = db.Column(db.Text)
    tags = db.relationship('Topic',
                           secondary=tag_topic,
                           lazy='dynamic',
                           backref="tags")
    parents = db.relationship('Tags',
                              secondary=tags_parents,
                              primaryjoin=(id == tags_parents.c.tag_id),
                              secondaryjoin=(id == tags_parents.c.parent_id),
                              backref=db.backref('children', lazy='joined'))

    def __str__(self):
        return self.tagname

    def __repr__(self):
        return '<Tags %r>' % self.tagname
示例#20
0
class Collector(db.Model):
    __tablename__ = 'collects'
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer,
                        db.ForeignKey('users.id', ondelete="CASCADE"))
    question_id = db.Column(db.Integer,
                            db.ForeignKey('questions.id', ondelete="CASCADE"))
    collect_time = db.Column(db.DateTime,
                             default=datetime.now(),
                             nullable=False)

    def __init__(self):
        self.collect_time = datetime.now()

    @staticmethod
    def load_by_id(qid, uid):
        return Collector.query.filter_by(question_id=qid, user_id=uid).first()

    @staticmethod
    def load(qid, uid):
        return Collector.query.filter_by(question_id=qid, user_id=uid).first()
示例#21
0
class Reply(db.Model):
    __tablename__ = 'replies'
    id = db.Column(db.Integer, primary_key=True)
    content = db.Column(db.Text, nullable=False)
    # quote = db.Column(db.Text, nullable=True)
    publish = db.Column(db.DateTime, default=datetime.now())
    updated = db.Column(db.DateTime)
    topic_id = db.Column(db.Integer,
                         db.ForeignKey('topics.id', ondelete="CASCADE"))
    topic = db.relationship('Topic',
                            backref=db.backref(
                                'replies',
                                cascade='all,delete-orphan',
                                lazy='dynamic',
                                order_by='Reply.publish.desc()'))

    author_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    author = db.relationship('User',
                             backref=db.backref('replies',
                                                lazy='dynamic',
                                                order_by='Reply.publish'))
    likers = db.relationship('User',
                             secondary='likes',
                             backref=db.backref("likes", lazy='dynamic'))
    __mapper_args__ = {"order_by": publish.desc()}
示例#22
0
class Books(db.Model):
    __tablename__ = 'books'
    id = db.Column(db.Integer, primary_key=True)
    tag = db.Column(db.Text)
    name = db.Column(db.Text)
    title = db.Column(db.Text)
    author = db.Column(db.Text)
    content = db.Column(db.Text)

    def __init__(self, tag, name, title, author, content):
        self.name = name
        self.tag = tag
        self.title = title
        self.author = author
        self.content = content

    def __repr__(self):
        return '<Books %r>' % self.name

    @classmethod
    def get(cls, bookId):
        return cls.query.filter_by(id=bookId).first_or_404()

    @classmethod
    def get_book_list(cls, page=1, filter_dict=dict()):
        if not filter_dict:
            return cls.query.paginate(page, 18, True)
        return cls.query.filter_by(**filter_dict).paginate(page, 18, True)
示例#23
0
class Blog(db.Model):
    __tablename__ = 'blogs'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(50), nullable=False)
    created_at = db.Column(
        db.DateTime, default=datetime.utcnow(), nullable=False)
    updated_at = db.Column(
        db.DateTime, default=datetime.utcnow(), onupdate=datetime.utcnow())
    content = db.Column(db.Text, nullable=False)
    is_copy = db.Column(db.Boolean, nullable=True, default=False)
    category_id = db.Column(
        db.Integer, db.ForeignKey(
            'categories.id', ondelete="CASCADE"))
    category = db.relationship(
        'Category',
        backref=db.backref(
            'blogs', cascade='all,delete-orphan', lazy='dynamic'))
    author_id = db.Column(
        db.Integer, db.ForeignKey(
            'users.id', ondelete="CASCADE"))
    author = db.relationship(
        'User',
        backref=db.backref(
            'blogs', cascade='all,delete-orphan', lazy='dynamic'))

    __mapper_args__ = {"order_by": created_at.desc()}

    def __repr__(self):
        return "<Blog %r>" % self.title

    def __str__(self):
        return self.title

    @classmethod
    def get(cls, blogId):
        return cls.query.filter_by(id=blogId).first_or_404()

    @classmethod
    def get_blog_list(cls, page=1, filter_dict=dict()):
        per_page = current_app.config['PER_PAGE']
        bloglist = cls.query
        if 'tag' in filter_dict.keys():
            tag = filter_dict.pop('tag')
            bloglist = bloglist.join(cls.tags).filter(Tags.name == tag)
        if 'category' in filter_dict.keys():
            category = filter_dict.pop('category')
            bloglist = bloglist.filter(cls.category == category)
        bloglist = bloglist.paginate(page, per_page, True)
        return bloglist
示例#24
0
class Follow(db.Model):
    __tablename__ = 'follows'
    id = db.Column(db.Integer, primary_key=True)
    follower_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    following_user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    following_tag_id = db.Column(db.Integer, db.ForeignKey('tags.id'))
    following_collect_id = db.Column(db.Integer, db.ForeignKey('collects.id'))
    followinf_topic_id = db.Column(db.Integer, db.ForeignKey('topics.id'))
示例#25
0
class Board_F(db.Model):
    __tablename__ = 'board_f'
    id = db.Column(db.Integer, primary_key=True)
    chname_f = db.Column(db.String, nullable=False)
    enname_f = db.Column(db.String, nullable=False)
    rank = db.Column(db.Integer, nullable=False)
    count_id = db.Column(db.Integer,
                            db.ForeignKey('counts.id',
                                          ondelete="CASCADE"))
    count = db.relationship("Counts",
                               backref="board_f",
                               cascade='all,delete-orphan',
                               single_parent=True,
                               uselist=False)


    __mapper_args__ = {
        "order_by": rank
    }
    def __init__(self, chname_f, enname_f,rank):
        self.chname_f = chname_f
        self.enname_f = enname_f
        self.rank = rank

    def __repr__(self):
        return "<Board_F %r>" % self.id

    @staticmethod
    def load_all():
        return Board_F.query.all()

    @staticmethod
    def load_by_id(bid):
        return Board_F.query.filter_by(id=bid).first_or_404()

    @staticmethod
    def load_by_name(name):
        return Board_F.query.filter_by(enname_f=name).first_or_404()
示例#26
0
class Count(db.Model):
    __tablename__ = 'counts'
    id = db.Column(db.Integer, primary_key=True)
    drafts = db.Column(db.Integer, default=0)
    collects = db.Column(db.Integer, default=0)
    inviteds = db.Column(db.Integer, default=0)
    follows = db.Column(db.Integer, default=0)
    topics = db.Column(db.Integer, default=0)
    all_topics = db.Column(db.Integer, default=0)

    def __repr__(self):
        return '<Count %r>' % self.id
示例#27
0
class Board_S(db.Model):
    __tablename__ = 'board_s'
    id = db.Column(db.Integer, primary_key=True)
    chname_s = db.Column(db.String, nullable=False)
    enname_s = db.Column(db.String, nullable=False)
    board_id = db.Column(db.Integer, db.ForeignKey('board_f.id',
                                                   ondelete="CASCADE"))
    board_f = db.relationship('Board_F',
                              backref=db.backref('board_s',
                                                 cascade='all,delete-orphan',
                                                 lazy='dynamic'))
    count_id = db.Column(db.Integer,
                            db.ForeignKey('counts.id',
                                          ondelete="CASCADE"))
    count = db.relationship("Counts",
                               backref="board_s",
                               cascade='all,delete-orphan',
                               single_parent=True,
                               uselist=False)

    __mapper_args__ = {
        "order_by": enname_s
    }

    def __init__(self, chname_s, enname_s):
        self.chname_s = chname_s
        self.enname_s = enname_s

    def __repr__(self):
        return "<Board_S %r>" % self.id

    @staticmethod
    def load_by_name(name):
        return Board_S.query.filter_by(enname_s=name).first_or_404()

    @staticmethod
    def load_by_id(bid):
        return Board_S.query.filter_by(id=bid).first_or_404()
示例#28
0
class Collect(db.Model):
    __tablename__ = 'collects'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(32), nullable=False)
    description = db.Column(db.String(256))
    is_privacy = db.Column(db.Boolean, default=False)
    author_id = db.Column(db.Integer,
                          db.ForeignKey('users.id', ondelete="CASCADE"))
    author = db.relationship('User',
                             backref=db.backref('collects',
                                                cascade='all,delete-orphan',
                                                lazy='dynamic'))

    topics = db.relationship('Topic',
                             secondary='collect_topic',
                             lazy='dynamic',
                             backref="collects")

    def __str__(self):
        return self.name

    def __repr__(self):
        return "<Collect %r>" % self.name
示例#29
0
class Comment(db.Model):
    __tablename__ = 'comments'
    id = db.Column(db.Integer, primary_key=True)
    created_at = db.Column(
        db.DateTime, default=datetime.utcnow(), nullable=False)
    content = db.Column(db.Text, nullable=False)
    blog_id = db.Column(
        db.Integer, db.ForeignKey(
            'blogs.id', ondelete="CASCADE"))
    blog = db.relationship(
        'Blog',
        backref=db.backref(
            'comments', cascade='all,delete-orphan', lazy='dynamic'))
    author_id = db.Column(
        db.Integer, db.ForeignKey(
            'users.id', ondelete="CASCADE"))
    author = db.relationship(
        'User',
        backref=db.backref(
            'comments', cascade='all,delete-orphan', lazy='dynamic'))

    # def __init__(self, author, content):
    #     self.author = author
    #     self.content = content

    def __repr__(self):
        return "<Comment %r>" % self.content

    @classmethod
    def get_comment_list(cls, page=20, filter_dict=None):
        per_page = current_app.config['PER_PAGE']
        if filter_dict is None:
            return cls.query.paginate(page, per_page, True)
        commentlist = cls.query.filter_by(**filter_dict).paginate(
            page, per_page, True)
        return commentlist
示例#30
0
class UserSetting(db.Model):
    '''
    1:all user
    2:logined user
    3:only own
    '''
    __tablename__ = 'usersetting'
    id = db.Column(db.Integer, primary_key=True)
    online_status = db.Column(db.Integer, nullable=False, default=1)
    topic_list = db.Column(db.Integer, nullable=False, default=1)
    rep_list = db.Column(db.Integer, nullable=False, default=1)
    ntb_list = db.Column(db.Integer, nullable=False, default=3)
    collect_list = db.Column(db.Integer, nullable=False, default=2)
    locale = db.Column(db.String(32), default='zh')
    timezone = db.Column(db.String(32), default='UTC')

    def __repr__(self):
        return "<UserSetting %r>" % self.id