示例#1
0
class Message(Base):
    """
    短信表
    """
    __tablename__ = "messages"

    content = db.Column(
        db.String(255),
        nullable=False,
        comment="短信内容",
    )
    user_id = db.Column(db.Integer(), default=0, comment="短信发布者")
    username = db.Column(db.String(20), nullable=False, comment="短信发布者用户名")
    ip = db.Column(db.String(20), default="", comment="ip地址")
    published_at = db.Column(db.DateTime(), default="", comment="发布时间")
    pid = db.Column(db.Integer(), default=0, comment="所属短信id")
    label = db.Column(db.String(100), default="", comment="预留")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(
                or_(
                    cls.content.like(keyword),
                    cls.username.like(keyword),
                ))
        return query
示例#2
0
class Note(Base):
    """
   公告表
    """
    __tablename__ = "notes"

    content = db.Column(db.String(255), nullable=False, comment="公告内容")
    level = db.Column(db.Integer(), default=0, comment="排序")
    start_date = db.Column(db.Date(), default="", comment="起始时间")
    end_date = db.Column(db.Date(), default="", comment="结束时间")

    admin_id = db.Column(db.Integer(), db.ForeignKey('admins.id'))

    admin = db.relationship('Admin', backref=db.backref('notes', lazy="dynamic"))

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.content.like(keyword), ))
        return query

    def create(self, data):
        with db.auto_commit():
            self.set_attrs(data)
            self.active = 1
            self.admin = current_user
            self.created_at = time_now()
            self.updated_at = time_now()
            db.session.add(self)
示例#3
0
class Column(Base):
    """
    栏目表
    """
    __tablename__ = "columns"

    title = db.Column(db.String(20),
                      nullable=False,
                      comment="栏目名称",
                      unique=True)
    keyword = db.Column(db.String(255), default="", comment="META关键字")
    description = db.Column(db.String(255), default="", comment="META描述")
    column_type = db.Column(db.String(20), default="", comment="栏目类型")
    thumb_image = db.Column(db.String(100), default="", comment="栏目缩略图")
    label = db.Column(db.String(255), default="", comment="栏目说明")
    external_link = db.Column(db.String(100), default="", comment="外部链接")
    level = db.Column(db.Integer(), default=0, comment="排序")
    pid = db.Column(db.Integer(), default=0, comment="父级节点id")
    target = db.Column(db.Boolean(), default=0, comment="新窗口打开")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(
                or_(
                    cls.title.like(keyword),
                    cls.keyword.like(keyword),
                    cls.description.like(keyword),
                    cls.label.like(keyword),
                ))
        return query
示例#4
0
class User(Base, UserMixin):
    """
   用户表
    """
    __tablename__ = "users"

    name = db.Column(db.String(length=20),
                     nullable=False,
                     comment="用户名",
                     index=True,
                     unique=True)
    email = db.Column(db.String(length=20),
                      nullable=False,
                      comment="用户邮箱",
                      index=True,
                      unique=True)
    """
    属性名用 _password ,创建的字段未password
    """
    _password = db.Column('password',
                          db.String(length=128),
                          nullable=False,
                          comment="密码")
    nick_name = db.Column(db.String(length=20), default='', comment="昵称")
    chinese_name = db.Column(db.String(length=20), default='', comment="中文姓名")
    avatar = db.Column(db.String(length=100), default='', comment="头像")
    sex = db.Column(db.Boolean(), comment="性别", default=0)
    phone = db.Column(db.String(length=20),
                      default='',
                      comment="电话",
                      index=True,
                      unique=True)
    qq = db.Column(db.String(length=20), default='', comment="QQ")
    remarks = db.Column(db.String(length=255), default='', comment="备注")
    login_ip = db.Column(db.String(length=20), default='', comment="登录ip")
    login_time = db.Column(db.String(length=20), default='', comment="登录时间")
    login_count = db.Column(db.Integer(), default=0, comment="登录次数")
    integral = db.Column(db.Integer(), default=0, comment="积分")
    group_id = db.Column(db.Integer(), db.ForeignKey("groups.id"))

    # 属性的getter
    @property
    def password(self):
        return self._password

    # 属性的setter
    @password.setter
    def password(self, raw):
        self._password = generate_password_hash(raw)

    # 校验密码
    def check_password(self, raw):
        return check_password_hash(self._password, raw)

    # get_id 返回str字符串,通过 user 来做标识
    def get_id(self):
        return 'user.' + str(self.id)
示例#5
0
class Guestbook(Base):
    """
    留言表
    """
    __tablename__ = "guestbooks"

    content = db.Column(db.String(255), nullable=False, comment="留言内容", )
    user_id = db.Column(db.Integer(), default=0, comment="留言者")
    user_type = db.Column(db.String(5), default="user", comment="用户类型")
    username = db.Column(db.String(20), default="游客", comment="留言着用户名")
    ip = db.Column(db.String(20), default="", comment="ip地址")
    published_at = db.Column(db.DateTime(), default="", comment="留言时间")
    pid = db.Column(db.Integer(), default=0, comment="所属父级留言id")
    root_id = db.Column(db.String(255),index=True, default=0, comment="节点数据")
    open_comment = db.Column(db.Boolean(), default=0, comment="允许回复我留言")
    good = db.Column(db.Integer(), default=0, comment="点赞")
    read = db.Column(db.Integer(), default=0, comment="是否已读")
    label = db.Column(db.String(100), default="", comment="预留")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.content.like(keyword), cls.username.like(keyword), ))
        return query

    def create(self, data):
        with db.auto_commit():
            self.set_attrs(data)
            self.active = 1
            self.open_comment = 1
            self.ip = get_client_ip()
            self.user_id = current_user.id
            self.username = current_user.name
            self.user_type = 'admin'
            self.published_at = time_now()
            self.created_at = time_now()
            self.updated_at = time_now()
            db.session.add(self)

    @classmethod
    def get_list_all_by_id(cls, id=id):
        query = cls.query.filter(cls.is_delete == 0, cls.root_id.like('%' + str(id) + '%'))
        total = query.with_entities(func.count(cls.id)).scalar()
        result = query.all()
        result = array_sort_by_pid(arrays=result, html="", pid=int(id))
        return total, result

    @classmethod
    def get_by_root_id(cls, root_id=root_id):
        return cls.query.filter(cls.is_delete == 0, cls.root_id == root_id).first()
示例#6
0
class Link(Base):
    """
    友情链接表
    """
    __tablename__ = "links"

    site_name = db.Column(db.String(20), nullable=False, comment="网站名称", unique=True)
    site_url = db.Column(db.String(100), default="", comment="网址")
    label = db.Column(db.String(255), default="", comment="网站说明")
    logo = db.Column(db.String(100), default="", comment="网站logo")
    site_admin = db.Column(db.String(20), default="", comment="网站管理员")
    site_admin_email = db.Column(db.String(100), default="", comment="网站管理员邮箱")
    site_admin_qq = db.Column(db.String(20), default="", comment="网站管理员QQ")
    site_admin_phone = db.Column(db.String(20), default="", comment="网站管理员电话")
    home_show = db.Column(db.Boolean(), default=0, comment="首页显示")
    level = db.Column(db.Integer(), default=0, comment="排序")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.site_name.like(keyword), cls.site_admin.like(keyword),
                                    cls.site_admin_email.like(keyword), cls.site_admin_qq.like(keyword),
                                    cls.site_admin_phone.like(keyword), cls.label.like(keyword), ))
        return query
示例#7
0
class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
    name = db.Column(db.String(64))
    login = db.Column(db.String(64), unique=True)
    password = db.Column(db.String(255))

    is_active = db.Column(db.Boolean(), server_default=expression.text('True'), nullable=False)  # 这里使用 expression.true() 似乎不起作用

    roles = db.relationship(
        'Role',
        secondary=users_roles,
        backref=db.backref('users', lazy='dynamic')
    )

    def set_password(self, password):
        return pbkdf2_sha256.hash(password)

    def check_password(self, password):
        return pbkdf2_sha256.verify(password, self.password)

    def is_authenticated(self):
        return not isinstance(self, AnonymousUserMixin)

    def is_anonymous(self):
        return isinstance(self, AnonymousUserMixin)

    def get_id(self):
        return self.id

    def __repr__(self):
        return '<Model User {}>'.format(self.name)
示例#8
0
class Focus(Base):
    """
    焦点图表
    """
    __tablename__ = "focuses"

    title = db.Column(db.String(20), nullable=False, comment="焦点图名称", unique=True)
    label = db.Column(db.String(255), default="", comment="焦点图说明")
    link = db.Column(db.String(100), default="", comment="链接")
    thumb_image = db.Column(db.String(100), default="", comment="缩略图")
    target = db.Column(db.Boolean(), default=0, comment="新窗口打开")
    column_id = db.Column(db.Integer(), db.ForeignKey('columns.id'))
    level = db.Column(db.Integer(), default=0, comment="排序")

    column = db.relationship('Column', backref=db.backref('focuses', lazy="dynamic"))

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.title.like(keyword), cls.label.like(keyword), ))
        return query

    def create(self, data):
        with db.auto_commit():
            self.column = Column.query.filter_by(id=data['column_id']).api_first_or_404()
            self.set_attrs(data)
            self.active = 1
            self.created_at = time_now()
            self.updated_at = time_now()
            db.session.add(self)

    def update(self, data, edit_one_field=None):
        """
        edit_one_field 是否表内单个编辑 标识
        :param data:
        :param flag:
        :return:
        """
        with db.auto_commit():
            if not edit_one_field:
                self.column = Column.query.filter_by(id=data['column_id']).api_first_or_404()
                self.set_attrs(data)
            else:
                self.set_attr(data)
            self.updated_at = time_now()
示例#9
0
class Role(db.Model):
    __tablename__ = 'roles'

    id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
    name = db.Column(db.String(90), unique=True)
    description = db.Column(db.String(28))

    def __repr__(self):
        return '<Model Role {}>'.format(self.name)
示例#10
0
class Permission(Base):
    """
    权限表
    """
    __tablename__ = "permissions"

    name = db.Column(db.String(20), nullable=False, comment="权限名称", unique=True)
    endpoint_name = db.Column(db.String(20), nullable=False, comment="endpoint名称", unique=True)
    label = db.Column(db.String(20), nullable=True, default="", comment="权限说明")
    level = db.Column(db.Integer(), default=0, comment="排序")
    menu_id = db.Column(db.Integer(), db.ForeignKey('menus.id'), default=0, comment="后台菜单ID")

    menu = db.relationship("Menu", backref=db.backref("permissions",lazy="dynamic"))

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.name.like(keyword), cls.label.like(keyword), cls.endpoint_name.like(keyword)))
        return query
示例#11
0
class Mail(Base):
    """
    网站配置表
    """
    __tablename__ = "mails"

    mail_server = db.Column(db.String(100), nullable=False, comment="邮箱服务器")
    port = db.Column(db.Integer(), default=0, comment="端口")
    link_model = db.Column(db.String(10), default=0, comment="连接类型")
    username = db.Column(db.String(100), nullable=False, comment="邮箱用户名")
    password = db.Column(db.String(100), nullable=False, comment="邮箱密码或秘钥")
示例#12
0
class Menu(Base):
    """
    后台菜单表
    """
    __tablename__ = "menus"

    name = db.Column(db.String(20), nullable=False, comment="菜单名称", unique=True)
    label = db.Column(db.String(255), nullable=True, default="", comment="菜单说明")
    level = db.Column(db.Integer(), default=0, comment="排序")
    pid = db.Column(db.Integer(), default=0, comment="父级节点id")
    icon = db.Column(db.String(20), nullable=True, default="", comment="图标")
    endpoint_name = db.Column(db.String(50), nullable=True, default="", comment="endpoint名称")
    target = db.Column(db.Boolean(), default=0, comment="新窗口打开")


    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(or_(cls.name.like(keyword), cls.label.like(keyword),
                                    cls.endpoint_name.like(keyword)))
        return query
示例#13
0
class System(Base):
    """
    网站配置表
    """
    __tablename__ = "systems"

    site_name = db.Column(db.String(100), nullable=False, comment="网站名称", unique=True)
    title = db.Column(db.String(100), nullable=False, comment="网站标题", )
    keyword = db.Column(db.String(100), nullable=False, comment="META关键词", )
    description = db.Column(db.String(100), nullable=False, comment="META描述", )
    icp = db.Column(db.String(100), default="", comment="备案信息", )
    census_code = db.Column(db.String(255), default="", comment="统计代码", )
    copyright = db.Column(db.String(255), default="", comment="版权信息", )
    upload_path = db.Column(db.String(100), default="", comment="上传路径", )
    water_type = db.Column(db.String(10), default='', comment="水印类型", )
    images_water = db.Column(db.String(255), default="", comment="水印文件", )
    txt_water = db.Column(db.String(100), default="", comment="水印文字", )
    txt_water_size = db.Column(db.String(100), default="", comment="水印文字大小", )
    txt_water_font = db.Column(db.String(100), default="", comment="文字水印字体", )
    txt_water_color = db.Column(db.String(20), default="", comment="文字水印颜色", )
    images_size = db.Column(db.Integer(), default=0, comment="最大图片大小", )
    images_extensions = db.Column(db.String(255), default="", comment="图片类型", )
    images_max_width = db.Column(db.Integer(), default=0, comment="图片最大宽度", )
    images_max_height = db.Column(db.Integer(), default=0, comment="图片最大高度", )
    media_size = db.Column(db.Integer(), default=0, comment="媒体大小", )
    media_extensions = db.Column(db.String(255), default="", comment="媒体类型", )
    video_water = db.Column(db.String(255), default="", comment="视频水印地址", )
    attach_size = db.Column(db.Integer(), default=0, comment="附件大小", )
    attach_extensions = db.Column(db.String(255), default="", comment="附件类型", )
    admin_prefix = db.Column(db.String(50), default='', comment="后台访问地址", )
    open_register = db.Column(db.Boolean(), default=0, comment="允许注册", )
    open_comment = db.Column(db.Boolean(), default=0, comment="开启评论", )
    comment_captcha = db.Column(db.Boolean(), default=0, comment="评论开启验证码", )
    document_water = db.Column(db.Boolean(), default=0, comment="文档水印", )
    user_comment = db.Column(db.Boolean(), default=0, comment="开启用户评论", )
    guest_comment = db.Column(db.Boolean(), default=0, comment="开启游客评论", )
    comment_audit = db.Column(db.Boolean(), default=0, comment="评论开启审核", )
    comment_time_interval = db.Column(db.Integer(), default=0, comment="评论时间间隔", )
    open_cache = db.Column(db.Integer(), default=0, comment="开启缓存", )
    cache_time = db.Column(db.Integer(), default=0, comment="缓存时间", )
    pagination_number = db.Column(db.Integer(), default=0, comment="分页大小", )
    celery_broker_url = db.Column(db.String(255), default="", comment="celery 配置 ", )
    celery_result_backend = db.Column(db.String(255), default="", comment="celery 配置 ", )
示例#14
0
class User(BaseUser, db.Model):
    __table_args__ = {'schema': "twitter"}
    __tablename__ = "User"

    follows = db.Column(db.ARRAY(db.Integer()))

    def __init__(self, id, follows):
        self.id = id
        self.follows = follows

    @property
    def json(self):
        return {
            "follows": self.follows,
            "personality": {
                "o": self.o,
                "c": self.c,
                "e": self.e,
                "a": self.a,
                "n": self.n
            }
        }
示例#15
0
class Document(BaseDocument, db.Model):
    __table_args__ = {'schema': "twitter"}
    __tablename__ = "Document"

    stored_tweets = db.Column(db.Integer())
    first = db.Column(db.Numeric())
    last = db.Column(db.Numeric())

    def __init__(self, id):
        self.id = id
        self.text = ""
        self.stored_tweets = None
        self.first = None
        self.last = None

    @property
    def json(self):
        return {
            "text": self.text,
            "features": self.features,
            "stored_tweets": self.stored_tweets,
            "first": self.first,
            "last": self.last
        }
示例#16
0
# coding=utf-8
from __future__ import absolute_import
from passlib.hash import pbkdf2_sha256

from app.ext import db, login_manager
from app.exception import SessionExpired
from flask_login import UserMixin, AnonymousUserMixin, current_user
from sqlalchemy.sql import expression


users_roles = db.Table('users_role',
    db.Column('user_id', db.Integer(), db.ForeignKey('users.id')),
    db.Column('role_id', db.Integer(), db.ForeignKey('roles.id')))


class Role(db.Model):
    __tablename__ = 'roles'

    id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
    name = db.Column(db.String(90), unique=True)
    description = db.Column(db.String(28))

    def __repr__(self):
        return '<Model Role {}>'.format(self.name)


class User(db.Model, UserMixin):
    __tablename__ = 'users'

    id = db.Column(db.Integer(), autoincrement=True, primary_key=True)
    name = db.Column(db.String(64))
示例#17
0
文件: base.py 项目: wendru18/big5-app
class Word(db.Model):
    __table_args__ = {'schema': "public"}
    __tablename__ = "Word"

    word = db.Column(db.String, primary_key=True)
    HGI_positiv = db.Column(db.Integer())
    HGI_negativ = db.Column(db.Integer())
    HGI_pstv = db.Column(db.Integer())
    HGI_affil = db.Column(db.Integer())
    HGI_ngtv = db.Column(db.Integer())
    HGI_hostile = db.Column(db.Integer())
    HGI_strong = db.Column(db.Integer())
    HGI_power = db.Column(db.Integer())
    HGI_weak = db.Column(db.Integer())
    HGI_submit = db.Column(db.Integer())
    HGI_active = db.Column(db.Integer())
    HGI_passive = db.Column(db.Integer())
    HGI_pleasur = db.Column(db.Integer())
    HGI_pain = db.Column(db.Integer())
    HGI_feel = db.Column(db.Integer())
    HGI_arousal = db.Column(db.Integer())
    HGI_emot = db.Column(db.Integer())
    HGI_virtue = db.Column(db.Integer())
    HGI_vice = db.Column(db.Integer())
    HGI_ovrst = db.Column(db.Integer())
    HGI_undrst = db.Column(db.Integer())
    HGI_academ = db.Column(db.Integer())
    HGI_doctrin = db.Column(db.Integer())
    HGI_econ2 = db.Column(db.Integer())
    HGI_exch = db.Column(db.Integer())
    HGI_econ = db.Column(db.Integer())
    HGI_exprsv = db.Column(db.Integer())
    HGI_legal = db.Column(db.Integer())
    HGI_milit = db.Column(db.Integer())
    HGI_polit2 = db.Column(db.Integer())
    HGI_polit = db.Column(db.Integer())
    HGI_relig = db.Column(db.Integer())
    HGI_role = db.Column(db.Integer())
    HGI_coll = db.Column(db.Integer())
    HGI_work = db.Column(db.Integer())
    HGI_ritual = db.Column(db.Integer())
    HGI_socrel = db.Column(db.Integer())
    HGI_race = db.Column(db.Integer())
    HGI_kin2 = db.Column(db.Integer())
    HGI_male = db.Column(db.Integer())
    HGI_female = db.Column(db.Integer())
    HGI_nonadlt = db.Column(db.Integer())
    HGI_hu = db.Column(db.Integer())
    HGI_ani = db.Column(db.Integer())
    HGI_place = db.Column(db.Integer())
    HGI_social = db.Column(db.Integer())
    HGI_region = db.Column(db.Integer())
    HGI_route = db.Column(db.Integer())
    HGI_aquatic = db.Column(db.Integer())
    HGI_land = db.Column(db.Integer())
    HGI_sky = db.Column(db.Integer())
    HGI_object = db.Column(db.Integer())
    HGI_tool = db.Column(db.Integer())
    HGI_food = db.Column(db.Integer())
    HGI_vehicle = db.Column(db.Integer())
    HGI_bldgpt = db.Column(db.Integer())
    HGI_comnobj = db.Column(db.Integer())
    HGI_natobj = db.Column(db.Integer())
    HGI_bodypt = db.Column(db.Integer())
    HGI_comform = db.Column(db.Integer())
    HGI_com = db.Column(db.Integer())
    HGI_say = db.Column(db.Integer())
    HGI_need = db.Column(db.Integer())
    HGI_goal = db.Column(db.Integer())
    HGI_try = db.Column(db.Integer())
    HGI_means = db.Column(db.Integer())
    HGI_persist = db.Column(db.Integer())
    HGI_complet = db.Column(db.Integer())
    HGI_fail = db.Column(db.Integer())
    HGI_natrpro = db.Column(db.Integer())
    HGI_begin = db.Column(db.Integer())
    HGI_vary = db.Column(db.Integer())
    HGI_increas = db.Column(db.Integer())
    HGI_decreas = db.Column(db.Integer())
    HGI_finish = db.Column(db.Integer())
    HGI_stay = db.Column(db.Integer())
    HGI_rise = db.Column(db.Integer())
    HGI_exert = db.Column(db.Integer())
    HGI_fetch = db.Column(db.Integer())
    HGI_travel = db.Column(db.Integer())
    HGI_fall = db.Column(db.Integer())
    HGI_think = db.Column(db.Integer())
    HGI_know = db.Column(db.Integer())
    HGI_causal = db.Column(db.Integer())
    HGI_ought = db.Column(db.Integer())
    HGI_perceiv = db.Column(db.Integer())
    HGI_compare = db.Column(db.Integer())
    HGI_eval2 = db.Column(db.Integer())
    HGI_eval = db.Column(db.Integer())
    HGI_solve = db.Column(db.Integer())
    HGI_abs2 = db.Column(db.Integer())
    HGI_abs = db.Column(db.Integer())
    HGI_quality = db.Column(db.Integer())
    HGI_quan = db.Column(db.Integer())
    HGI_numb = db.Column(db.Integer())
    HGI_ord = db.Column(db.Integer())
    HGI_card = db.Column(db.Integer())
    HGI_freq = db.Column(db.Integer())
    HGI_dist = db.Column(db.Integer())
    HGI_time2 = db.Column(db.Integer())
    HGI_time = db.Column(db.Integer())
    HGI_space = db.Column(db.Integer())
    HGI_pos = db.Column(db.Integer())
    HGI_dim = db.Column(db.Integer())
    HGI_rel = db.Column(db.Integer())
    HGI_color = db.Column(db.Integer())
    HGI_self = db.Column(db.Integer())
    HGI_our = db.Column(db.Integer())
    HGI_you = db.Column(db.Integer())
    HGI_name = db.Column(db.Integer())
    HGI_yes = db.Column(db.Integer())
    HGI_no = db.Column(db.Integer())
    HGI_negate = db.Column(db.Integer())
    HGI_intrj = db.Column(db.Integer())
    HGI_iav = db.Column(db.Integer())
    HGI_dav = db.Column(db.Integer())
    HGI_sv = db.Column(db.Integer())
    HGI_ipadj = db.Column(db.Integer())
    HGI_indadj = db.Column(db.Integer())
    HGI_powgain = db.Column(db.Integer())
    HGI_powloss = db.Column(db.Integer())
    HGI_powends = db.Column(db.Integer())
    HGI_powaren = db.Column(db.Integer())
    HGI_powcon = db.Column(db.Integer())
    HGI_powcoop = db.Column(db.Integer())
    HGI_powaupt = db.Column(db.Integer())
    HGI_powpt = db.Column(db.Integer())
    HGI_powdoct = db.Column(db.Integer())
    HGI_powauth = db.Column(db.Integer())
    HGI_powoth = db.Column(db.Integer())
    HGI_powtot = db.Column(db.Integer())
    HGI_rcethic = db.Column(db.Integer())
    HGI_rcrelig = db.Column(db.Integer())
    HGI_rcgain = db.Column(db.Integer())
    HGI_rcloss = db.Column(db.Integer())
    HGI_rcends = db.Column(db.Integer())
    HGI_rctot = db.Column(db.Integer())
    HGI_rspgain = db.Column(db.Integer())
    HGI_rsploss = db.Column(db.Integer())
    HGI_rspoth = db.Column(db.Integer())
    HGI_rsptot = db.Column(db.Integer())
    HGI_affgain = db.Column(db.Integer())
    HGI_affloss = db.Column(db.Integer())
    HGI_affpt = db.Column(db.Integer())
    HGI_affoth = db.Column(db.Integer())
    HGI_afftot = db.Column(db.Integer())
    HGI_wltpt = db.Column(db.Integer())
    HGI_wlttran = db.Column(db.Integer())
    HGI_wltoth = db.Column(db.Integer())
    HGI_wlttot = db.Column(db.Integer())
    HGI_wlbgain = db.Column(db.Integer())
    HGI_wlbloss = db.Column(db.Integer())
    HGI_wlbphys = db.Column(db.Integer())
    HGI_wlbpsyc = db.Column(db.Integer())
    HGI_wlbpt = db.Column(db.Integer())
    HGI_wlbtot = db.Column(db.Integer())
    HGI_enlgain = db.Column(db.Integer())
    HGI_enlloss = db.Column(db.Integer())
    HGI_enlends = db.Column(db.Integer())
    HGI_enlpt = db.Column(db.Integer())
    HGI_enloth = db.Column(db.Integer())
    HGI_enltot = db.Column(db.Integer())
    HGI_sklasth = db.Column(db.Integer())
    HGI_sklpt = db.Column(db.Integer())
    HGI_skloth = db.Column(db.Integer())
    HGI_skltot = db.Column(db.Integer())
    HGI_trngain = db.Column(db.Integer())
    HGI_trnloss = db.Column(db.Integer())
    HGI_tranlw = db.Column(db.Integer())
    HGI_meanslw = db.Column(db.Integer())
    HGI_endslw = db.Column(db.Integer())
    HGI_arenalw = db.Column(db.Integer())
    HGI_ptlw = db.Column(db.Integer())
    HGI_nation = db.Column(db.Integer())
    HGI_anomie = db.Column(db.Integer())
    HGI_negaff = db.Column(db.Integer())
    HGI_posaff = db.Column(db.Integer())
    HGI_surelw = db.Column(db.Integer())
    HGI_if = db.Column(db.Integer())
    HGI_notlw = db.Column(db.Integer())
    HGI_timespc = db.Column(db.Integer())
    HGI_formlw = db.Column(db.Integer())
    LIWC_function = db.Column(db.Integer())
    LIWC_pronoun = db.Column(db.Integer())
    LIWC_ppron = db.Column(db.Integer())
    LIWC_i = db.Column(db.Integer())
    LIWC_we = db.Column(db.Integer())
    LIWC_you = db.Column(db.Integer())
    LIWC_shehe = db.Column(db.Integer())
    LIWC_they = db.Column(db.Integer())
    LIWC_ipron = db.Column(db.Integer())
    LIWC_article = db.Column(db.Integer())
    LIWC_prep = db.Column(db.Integer())
    LIWC_auxverb = db.Column(db.Integer())
    LIWC_adverb = db.Column(db.Integer())
    LIWC_conj = db.Column(db.Integer())
    LIWC_negate = db.Column(db.Integer())
    LIWC_verb = db.Column(db.Integer())
    LIWC_adj = db.Column(db.Integer())
    LIWC_compare = db.Column(db.Integer())
    LIWC_interrog = db.Column(db.Integer())
    LIWC_number = db.Column(db.Integer())
    LIWC_quant = db.Column(db.Integer())
    LIWC_affect = db.Column(db.Integer())
    LIWC_posemo = db.Column(db.Integer())
    LIWC_negemo = db.Column(db.Integer())
    LIWC_anx = db.Column(db.Integer())
    LIWC_anger = db.Column(db.Integer())
    LIWC_sad = db.Column(db.Integer())
    LIWC_social = db.Column(db.Integer())
    LIWC_family = db.Column(db.Integer())
    LIWC_friend = db.Column(db.Integer())
    LIWC_female = db.Column(db.Integer())
    LIWC_male = db.Column(db.Integer())
    LIWC_cogproc = db.Column(db.Integer())
    LIWC_insight = db.Column(db.Integer())
    LIWC_cause = db.Column(db.Integer())
    LIWC_discrep = db.Column(db.Integer())
    LIWC_tentat = db.Column(db.Integer())
    LIWC_certain = db.Column(db.Integer())
    LIWC_differ = db.Column(db.Integer())
    LIWC_percept = db.Column(db.Integer())
    LIWC_see = db.Column(db.Integer())
    LIWC_hear = db.Column(db.Integer())
    LIWC_feel = db.Column(db.Integer())
    LIWC_bio = db.Column(db.Integer())
    LIWC_body = db.Column(db.Integer())
    LIWC_health = db.Column(db.Integer())
    LIWC_sexual = db.Column(db.Integer())
    LIWC_ingest = db.Column(db.Integer())
    LIWC_drives = db.Column(db.Integer())
    LIWC_affiliation = db.Column(db.Integer())
    LIWC_achiev = db.Column(db.Integer())
    LIWC_power = db.Column(db.Integer())
    LIWC_reward = db.Column(db.Integer())
    LIWC_risk = db.Column(db.Integer())
    LIWC_focuspast = db.Column(db.Integer())
    LIWC_focuspresent = db.Column(db.Integer())
    LIWC_focusfuture = db.Column(db.Integer())
    LIWC_relativ = db.Column(db.Integer())
    LIWC_motion = db.Column(db.Integer())
    LIWC_space = db.Column(db.Integer())
    LIWC_time = db.Column(db.Integer())
    LIWC_work = db.Column(db.Integer())
    LIWC_leisure = db.Column(db.Integer())
    LIWC_home = db.Column(db.Integer())
    LIWC_money = db.Column(db.Integer())
    LIWC_relig = db.Column(db.Integer())
    LIWC_death = db.Column(db.Integer())
    LIWC_informal = db.Column(db.Integer())
    LIWC_swear = db.Column(db.Integer())
    LIWC_netspeak = db.Column(db.Integer())
    LIWC_assent = db.Column(db.Integer())
    LIWC_nonflu = db.Column(db.Integer())
    LIWC_filler = db.Column(db.Integer())
    MRC_kf_freq = db.Column(db.Float())
    MRC_kf_nsamp = db.Column(db.Float())
    MRC_tl_freq = db.Column(db.Float())
    MRC_brown_freq = db.Column(db.Float())
    MRC_fam = db.Column(db.Float())
    MRC_conc = db.Column(db.Float())
    MRC_imag = db.Column(db.Float())
    MRC_meanc = db.Column(db.Float())
    MRC_meanp = db.Column(db.Float())
    MRC_aoa = db.Column(db.Float())
    NRC_positive = db.Column(db.Integer())
    NRC_negative = db.Column(db.Integer())
    NRC_anger = db.Column(db.Integer())
    NRC_anticipation = db.Column(db.Integer())
    NRC_disgust = db.Column(db.Integer())
    NRC_fear = db.Column(db.Integer())
    NRC_joy = db.Column(db.Integer())
    NRC_sadness = db.Column(db.Integer())
    NRC_surprise = db.Column(db.Integer())
    NRC_trust = db.Column(db.Integer())
    S_visual = db.Column(db.Float())
    S_auditory = db.Column(db.Float())
    S_gustatory = db.Column(db.Float())
    S_olfactory = db.Column(db.Float())
    S_tactile = db.Column(db.Float())
示例#18
0
class Base(db.Model):
    """
    __abstract__设置为True,不会创建Base表
    """
    __abstract__ = True

    id = db.Column(db.Integer(),
                   primary_key=True,
                   autoincrement=True,
                   comment="id")
    is_delete = db.Column(db.Boolean(),
                          index=True,
                          default=0,
                          nullable=False,
                          comment="软删除,0未删除,1删除")
    active = db.Column('is_active',
                       db.Boolean(),
                       index=True,
                       default=0,
                       nullable=False,
                       comment="状态")
    created_at = db.Column(db.DateTime(), nullable=True, comment="创建时间")
    updated_at = db.Column(db.DateTime(), nullable=True, comment="修改时间")

    @classmethod
    def get_limit_all(cls):
        limit = int(request.args.get('limit', 10))
        page = int(request.args.get('page', 1))
        field = request.args.get('field', 'id')
        order = request.args.get('order', 'desc')
        _keyword = request.args.get('keyword', None)
        query = cls.query.filter(cls.is_delete == 0)
        query = cls._query_search(query, _keyword)

        if field and order:
            _obj = getattr(cls, field)
            if order == 'desc':
                query = query.order_by(_obj.desc())
            else:
                query = query.order_by(_obj.asc())
        total = query.with_entities(func.count(cls.id)).scalar()
        result = query.limit(limit).offset((page - 1) * limit).all()
        return total, result

    @classmethod
    def get_list_all(cls, is_sort=False):
        """
        不分页,is_sort 指定是否根据pid排序
        :param is_sort:
        :return:
        """
        _keyword = request.args.get('keyword', None)

        query = cls.query.filter(cls.is_delete == 0)
        query = cls._query_search(query, _keyword)
        total = query.with_entities(func.count(cls.id)).scalar()
        result = query.all()
        if _keyword:
            is_sort = False
        # 搜索的话,结果的 html设置为"" ,防止table渲染问题
        result = array_sort_by_pid(
            result) if is_sort else list_result_with_html(result)
        return total, result

    @classmethod
    def get_all_for_select(cls, is_group=False):
        # is_group 是否分组
        result = cls.query.filter_by().all()
        return array_sort_by_pid_whitespace(result) if is_group else result

    @classmethod
    def get_all(cls, is_group=False):
        # is_group 是否分组
        result = cls.query.filter_by().all()
        return array_sort_to_tree(result) if is_group else result

    @classmethod
    def get_all_in_ids(cls, ids=list()):
        return cls.query.filter(cls.id.in_(ids), cls.is_delete == 0).all()

    def create(self, data):

        with db.auto_commit():
            self.set_attrs(data)
            self.active = 1
            self.created_at = time_now()
            self.updated_at = time_now()
            db.session.add(self)

    def update(self, data, edit_one_field=None):
        """
        edit_one_field 是否表内单个编辑 标识
        :param data:
        :param flag:
        :return:
        """
        with db.auto_commit():
            if not edit_one_field:
                self.set_attrs(data)
            else:
                self.set_attr(data)
            self.updated_at = time_now()

    def destroy(self):
        with db.auto_commit():
            self.is_delete = 1

    def set_attrs(self, attrs):
        for key, value in attrs.items():
            if hasattr(self, key) and key != 'id':
                if value is None:
                    setattr(self, key, 0)
                elif isinstance(value, str):
                    setattr(self, key, value.strip())
                else:
                    setattr(self, key, value)

    def set_attr(self, attrs):
        for key, value in attrs.items():
            if hasattr(self,
                       key) and key != 'id' and key in get_request_field():
                if isinstance(value, str):
                    setattr(self, key, value.strip())
                else:
                    setattr(self, key, value)

    @classmethod
    def get_by_id(cls, id):
        return cls.query.filter_by(id=id).api_first_or_404()

    @classmethod
    def get_all_except_by_id(cls, id, is_sort=True):
        """
        查询除了某个id之外的所有结果
         is_sort是根据pid排序,id和未激活的子集都会清除
        :param id:
        :param is_sort:
        :return:
        """
        result = cls.query.filter_by().filter(cls.id != id,
                                              cls.active == 1).all()
        return array_sort_by_pid_whitespace(result) if is_sort else result
示例#19
0
class Document(Base):
    """
    文档表
    """
    __tablename__ = "documents"

    uuid = db.Column(db.String(100),
                     nullable=False,
                     comment="别名",
                     unique=True,
                     index=True)
    title = db.Column(db.String(100),
                      nullable=False,
                      comment="文档标题",
                      unique=True)
    use_title = db.Column(db.String(100), comment="文档标题带样式")
    sub_title = db.Column(db.String(100), nullable=False, comment="副标题")
    keyword = db.Column(db.String(255), default="", comment="META关键字")
    description = db.Column(db.String(255), default="", comment="META描述")
    label = db.Column(db.String(255), default="", comment="摘要")
    external_link = db.Column(db.String(100), default="", comment="外部链接")
    published_at = db.Column(db.DateTime(), default="", comment="发布时间")
    thumb_image = db.Column(db.String(100), default="", comment="缩略图")
    author = db.Column(db.String(20), default="", comment="作者")
    source = db.Column(db.String(100), default="", comment="来源")
    source_link = db.Column(db.String(100), default="", comment="来源链接")
    attribute = db.Column(db.String(100), default="", comment="属性")
    content = db.Column(db.Text(), default="", comment="正文")
    tags = db.Column(db.String(100), default="", comment="标签", index=True)
    target = db.Column(db.Boolean(), default=0, comment="新窗口打开")
    click = db.Column(db.Integer(), default=0, comment="阅读数")
    editor = db.Column(db.String(100), default="", comment="编辑")
    is_original = db.Column(db.Boolean(), default=0, comment="是否原创")
    open_comment = db.Column(db.Boolean(), default=0, comment="允许评论")
    attach_file = db.Column(db.String(100), default="", comment="附件地址")
    attach_name = db.Column(db.String(100), default="", comment="附件名称")

    column_id = db.Column(db.Integer(),
                          db.ForeignKey('columns.id'),
                          comment="栏目id")
    admin_id = db.Column(db.Integer(),
                         db.ForeignKey('admins.id'),
                         comment="管理员id")

    column = db.relationship('Column',
                             backref=db.backref('documents', lazy="dynamic"))
    admin = db.relationship('Admin',
                            backref=db.backref('documents', lazy="dynamic"))

    login_show = db.Column(db.Boolean(), default=0, comment="登录可见")
    password_txt = db.Column(db.String(100), default=0, comment="不为空为密码可见")
    user_group = db.Column(db.Boolean(), default=0, comment="VIP可见")

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(
                or_(
                    cls.title.like(keyword),
                    cls.label.like(keyword),
                    cls.keyword.like(keyword),
                    cls.description.like(keyword),
                    cls.author.like(keyword),
                ))
        return query

    def create(self, data):
        attributes = request.form.getlist('attribute[]')
        with db.auto_commit():
            self.set_attrs(data)
            self.active = 1
            self.admin = current_user
            self.attribute = ",".join(attributes)
            self.created_at = time_now()
            self.updated_at = time_now()
            db.session.add(self)

    def update(self, data, edit_one_field=None):
        """
        edit_one_field 是否表内单个编辑 标识
        :param data:
        :param flag:
        :return:
        """
        attributes = request.form.getlist('attribute[]')
        with db.auto_commit():
            if not edit_one_field:
                self.set_attrs(data)
                self.attribute = ",".join(attributes)
            else:
                self.set_attr(data)
            self.updated_at = time_now()
示例#20
0
class Admin(Base, UserMixin):
    """
    管理员表
    """
    __tablename__ = "admins"

    name = db.Column(db.String(length=20),
                     nullable=False,
                     comment="用户名",
                     index=True,
                     unique=True)
    email = db.Column(db.String(length=20),
                      nullable=False,
                      comment="用户邮箱",
                      index=True,
                      unique=True)
    """
    属性名用 _password ,创建的字段未password
    """
    _password = db.Column('password',
                          db.String(length=128),
                          nullable=False,
                          comment="密码")
    nick_name = db.Column(db.String(length=20), default='', comment="昵称")
    chinese_name = db.Column(db.String(length=20), default='', comment="中文姓名")
    avatar = db.Column(db.String(length=100), default='', comment="头像")
    sex = db.Column(db.Boolean(), comment="性别", default=0)
    phone = db.Column(db.String(length=20),
                      default='',
                      comment="电话",
                      index=True,
                      unique=True)
    qq = db.Column(db.String(length=20), default='', comment="QQ")
    remarks = db.Column(db.String(length=255), default='', comment="备注")
    login_ip = db.Column(db.String(length=20), default='', comment="登录ip")
    login_time = db.Column(db.String(length=20), default='', comment="登录时间")
    login_count = db.Column(db.Integer(), default=0, comment="登录次数")
    is_super = db.Column(db.Boolean(), default=0, comment="是否创始人")

    role_id = db.Column(db.Integer(), db.ForeignKey("roles.id"))

    # role = db.relationship('Role', backref=db.backref("admins", lazy="dynamic"), lazy="select")
    role = db.relationship('Role')

    @classmethod
    def _query_search(cls, query, _keyword):
        if _keyword is not None:
            keyword = '%' + str(_keyword) + '%'
            return query.filter(
                or_(cls.name.like(keyword), cls.email.like(keyword),
                    cls.nick_name.like(keyword),
                    cls.chinese_name.like(keyword), cls.qq.like(keyword),
                    cls.phone.like(keyword)))
        return query

    def update(self, data, edit_one_field=None):
        with db.auto_commit():
            if not edit_one_field:
                if not data['password']:
                    data.pop('password')
                self.set_attrs(data)
            else:
                self.set_attr(data)
            self.updated_at = time_now()

    # 属性的getter
    @property
    def password(self):
        return self._password

    # 属性的setter
    @password.setter
    def password(self, raw):
        self._password = generate_password_hash(raw)

    # 校验密码
    def check_password(self, raw):
        return check_password_hash(self._password, raw)

    def set_password(self, raw):
        self.password = raw

    # get_id 返回str字符串,通过 admin 来做标识
    def get_id(self):
        return 'admin.' + str(self.id)