Ejemplo n.º 1
0
class Article(db.Model):
    __tablename__ = "article"
    author = db.Column(db.String(36), index=True)
    articleID = db.Column(db.String(36), primary_key=True, index=True)
    title = db.Column(db.String(40), index=True)
    context = db.Column(db.TEXT)
    tag = db.Column(
        db.Enum("event", "entertainment", "science", "life", "trip"))
    status = db.Column(db.Enum("published", "draft"))
    time = db.Column(db.DateTime)
    read = db.Column(db.Integer)

    def __repr__(self):
        return '<Title %r Content %r>' % (self.title, self.context)
Ejemplo n.º 2
0
class GeneralUser(db.Model):
    __tablename__ = 'generalUser'

    userID = db.Column(db.String(36), primary_key=True)  #主键
    userName = db.Column(db.String(10), index=True)
    registerTime = db.Column(db.DateTime)  #注册时间
    email = db.Column(db.String(120))  #电子邮件
    password = db.Column(db.String(20))  #密码
    realName = db.Column(db.String(10))  #真实姓名
    gender = db.Column(db.Enum("男", "女"))  #性别
    birthday = db.Column(db.Date)  #生日
    describe = db.Column(db.String(100))  #个人签名

    #对于一个一对多的关系,db.relationship 字段通常是定义在“一”这一边。
    #在这种关系下,我们得到一个 user.posts 成员,它给出一个用户所有的 blog。
    #posts = db.relationship('Post', backref='author', lazy='dynamic')
    @property
    def is_authenticated(self):  #属性,判断是否已经授权
        return True

    @property
    def is_active(self):  #属性,判断用户是否已被激活
        return True

    @property
    def is_anonymous(self):  #属性,判断是否是匿名用户
        return False

    def get_id(self):  #方法,返回用户唯一标识
        return str(self.userID)

    #__repr__方法告诉Python如何打印这个类的对象,用来调试
    def __repr__(self):
        return '<GeneralUser %r>' % (self.userName)
Ejemplo n.º 3
0
class BaseModel(db.Model):
    __abstract__ = True
    id = db.Column(db.Integer, primary_key=True)
    created_time = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp())
    updated_time = db.Column(db.TIMESTAMP, server_default=db.func.current_timestamp(),
                             server_onupdate=db.func.current_timestamp())
    status = db.Column(db.Enum(Status), default=Status.VALID)

    def save(self):
        db.session.add(self)
        db.session.commit()
Ejemplo n.º 4
0
class SiteConfig(BaseModel, db.Model):
    """站点配置"""
    __tablename__ = "mogu_site_config"
    id = db.Column(db.Integer, primary_key=True, comment="ID")
    title = db.Column(db.String(80), comment="提示文本")
    name = db.Column(db.String(500), nullable=True, comment="变量名")
    value = db.Column(db.String(500), nullable=True, comment="变量值")
    dtype = db.Column(db.Enum("text", "image", "link", "video"),
                      default="text",
                      comment="变量类型")

    def __repr__(self):
        return "%s[%s]=%s" % (self.title, self.name, self.value)
Ejemplo n.º 5
0
class Users(BaseModel, db.Model):
    """用户模型"""
    __tablename__ = 'tb_users'

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    nick_name = db.Column(db.String(32), unique=True, nullable=False)  # 用户昵称
    password_hash = db.Column(db.String(128), nullable=False)  # 用户密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    avatar_url = db.Column(db.String(256))  # 头像路径
    last_login = db.Column(db.DateTime, default=datetime.now())  # 最后一次登录时间
    signature = db.Column(db.String(512))  # 用户签名
    gender = db.Column(  # 用户性别
        db.Enum('MAN', 'WOMAN'))

    tasks = db.relationship("Tasks", backref='user', lazy="dynamic")

    @property
    def password(self):
        raise AttributeError("当前属性不可读")

    @password.setter
    def password(self, value):
        self.password_hash = generate_password_hash(value)

    def check_password(self, password):
        """
        校验用户名和密码是否正确
        :param password: 接受用户输入的密码明文
        :return: 返回校验结果, True or False
        """
        return check_password_hash(self.password_hash, password)

    def to_dict(self):
        resp_dict = {
            "id":
            self.id,
            "nick_name":
            self.nick_name,
            "avatar_url":
            constants.QINIU_DOMIN_PREFIX +
            self.avatar_url if self.avatar_url else "",
            "mobile":
            self.mobile,
            "gender":
            self.gender if self.gender else "MAN",
            "signature":
            self.signature if self.signature else "",
            # "tasks": self.tasks.title
        }
        return resp_dict
Ejemplo n.º 6
0
class User(db.Model):
    __table_name__ = "user"
    __table_args__ = (PrimaryKeyConstraint('Host', 'User'), )
    Host = db.Column(db.String(60), nullable=False)
    User = db.Column(db.String(32), nullable=False)
    Select_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Insert_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Update_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Delete_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Create_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Drop_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Reload_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Shutdown_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Process_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    File_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Grant_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    References_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Index_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Alter_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Show_db_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Super_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Create_tmp_table_priv = db.Column(db.Enum('N', 'Y'),
                                      nullable=False,
                                      default='N')
    Lock_tables_priv = db.Column(db.Enum('N', 'Y'),
                                 nullable=False,
                                 default='N')
    Execute_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Repl_slave_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Repl_client_priv = db.Column(db.Enum('N', 'Y'),
                                 nullable=False,
                                 default='N')
    Create_view_priv = db.Column(db.Enum('N', 'Y'),
                                 nullable=False,
                                 default='N')
    Show_view_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Create_routine_priv = db.Column(db.Enum('N', 'Y'),
                                    nullable=False,
                                    default='N')
    Alter_routine_priv = db.Column(db.Enum('N', 'Y'),
                                   nullable=False,
                                   default='N')
    Create_user_priv = db.Column(db.Enum('N', 'Y'),
                                 nullable=False,
                                 default='N')
    Event_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Trigger_priv = db.Column(db.Enum('N', 'Y'), nullable=False, default='N')
    Create_tablespace_priv = db.Column(db.Enum('N', 'Y'),
                                       nullable=False,
                                       default='N')
    password_expired = db.Column(db.Enum('N', 'Y'),
                                 nullable=False,
                                 default='N')
Ejemplo n.º 7
0
class User(BaseModel, db.Model):
    """用户"""
    __tablename__ = "info_user"

    id = db.Column(db.Integer, primary_key=True)  # 用户编号
    nick_name = db.Column(db.String(32), unique=True, nullable=False)  # 用户昵称
    password_hash = db.Column(db.String(128), nullable=False)  # 加密的密码
    mobile = db.Column(db.String(11), unique=True, nullable=False)  # 手机号
    avatar_url = db.Column(db.String(256))  # 用户头像路径
    last_login = db.Column(db.DateTime, default=datetime.now)  # 最后一次登录时间
    is_admin = db.Column(db.Boolean, default=False)
    signature = db.Column(db.String(512))  # 用户签名
    gender = db.Column(  # 订单的状态
        db.Enum(
            "MAN",  # 男
            "WOMAN"  # 女
        ),
        default="MAN")

    # 当前用户收藏的所有新闻
    collection_news = db.relationship("News",
                                      secondary=tb_user_collection,
                                      lazy="dynamic")  # 用户收藏的新闻
    # 用户所有的粉丝,添加了反向引用followed,代表用户都关注了哪些人
    followers = db.relationship(
        'User',
        secondary=tb_user_follows,
        primaryjoin=id == tb_user_follows.c.followed_id,
        secondaryjoin=id == tb_user_follows.c.follower_id,
        backref=db.backref('followed', lazy='dynamic'),
        lazy='dynamic')

    # 当前用户所发布的新闻
    news_list = db.relationship('News', backref='user', lazy='dynamic')

    @property
    def password(self):
        raise AttributeError("当前属性不可读")

    @password.setter
    def password(self, value):
        self.password_hash = generate_password_hash(value)

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

    def to_dict(self):
        resp_dict = {
            "id":
            self.id,
            "nick_name":
            self.nick_name,
            "avatar_url":
            constants.QINIU_DOMIN_PREFIX +
            self.avatar_url if self.avatar_url else "",
            "mobile":
            self.mobile,
            "gender":
            self.gender if self.gender else "MAN",
            "signature":
            self.signature if self.signature else "",
            "followers_count":
            self.followers.count(),
            "news_count":
            self.news_list.count()
        }
        return resp_dict

    def to_admin_dict(self):
        resp_dict = {
            "id": self.id,
            "nick_name": self.nick_name,
            "mobile": self.mobile,
            "register": self.create_time.strftime("%Y-%m-%d %H:%M:%S"),
            "last_login": self.last_login.strftime("%Y-%m-%d %H:%M:%S"),
        }
        return resp_dict