Exemplo n.º 1
0
class CategoryAttr(SurrogatePK, Model):
    """默认的三个类型选项
	用户无法更改,mark标记唯一,
	管理员更改,外键模板 模板可添加多个文章页等
	数据库读取mark标记
	"""

    __tablename__ = 'category_attrs'

    name = Column(db.String(80), nullable=False)
    summary = Column(db.String(80), nullable=False)
    mark = Column(db.String(80), nullable=False)
    #链接地址
    url = Column(db.String(80), nullable=False)
    #模板页
    templates = Column(db.String(80), nullable=False)

    #用户分类
    category = relationship('Category',
                            backref='categorys_attr',
                            lazy='select')
    #默认内容
    static_context = relationship('TemplatesDefault', backref='category_attrs')

    #模板
    usertemplate_id = reference_col('user_templates')

    #: 栏目页 ,(文章页,图集页,内容页 )

    def __repr__(self):
        return '<({name!r})>'.format(name=self.name)
Exemplo n.º 2
0
class Img(CRUDMixin, db.Model):
    __tablename__ = 'img_is'
    id = db.Column(db.Integer, primary_key=True)
    path = db.Column(db.String())
    name = db.Column(db.String())
    old_size = db.Column(db.String())
    new_size = db.Column(db.String())
    id_user = db.Column(db.Integer,
                        db.ForeignKey('user_is.id', ondelete='CASCADE'))
    date_create = db.Column(db.DateTime(), default=datetime.now())

    @property
    def to_json(self):
        """Return object data in easily serializable format"""
        return {
            'id': self.id,
            'path': self.path.split("main")[-1],
            'name': self.name,
            'old_size': self.old_size,
            'new_size': self.new_size,
            "id_user": self.id_user,
            "date_create": self.date_create.strftime("%d.%m.%Y %H:%M:%S"),
        }

    def __repr__(self):
        return f"<Img-ID:{self.id} NAME: {self.name} >"
Exemplo n.º 3
0
class Car(SurrogatePK, Model):

    __tablename__ = "car"

    number = Column(db.String(100), comment='车牌号')
    car_type = Column(db.String(100), comment='车辆类型')
    brand = Column(db.String(100), comment='品牌')
    colour = Column(db.String(100), comment='颜色')
    status = Column(db.Integer(), default=0, comment='状态默认')
    user_id = Column(db.Integer())
    created_at = Column(db.DateTime,
                        nullable=False,
                        default=dt.datetime.now,
                        comment='创建时间')

    @classmethod
    def insert_data(cls, form):
        status = True if form.get("status") else False
        cls.create(
            number=form.get("number"),
            car_type=form.get("car_type"),
            status=status,
            brand=form.get("brand"),
            colour=form.get("colour"),
            user_id=form.get("user_id"),
        )
Exemplo n.º 4
0
class Category(SurrogatePK,Model):
    """产品分类表:categorys  

    列表参数:
     - product_id:外键产品表 产品id
     - name:分类名称
     - ico:分类图标
     - sort:分类排序
     - active:是否激活 用户是否删除?
     - show:是否显示  
     
    """

    __tablename__ = 'categorys'

    name = Column(db.String(100))
    ico = Column(db.String(200))
    sort = Column(db.Integer())
    active = Column(db.Boolean(),default=True)
    show = Column(db.Boolean(),default=True)


    #:自身上级,引用自身无限级分类
    parent = reference_col('categorys')
    childrens = relationship("Category",lazy="joined",join_depth=2)
    
    product_id = relationship(Product, backref='products')
Exemplo n.º 5
0
class SysParam(SurrogatePK, Model):
    """系统参数表

    表名称:sysparam

    列表参数
     - web_name:站点名称
     - web_describe:站点描述
     - user_register:开放注册
     - active_site:是否启用站点
     - close_website_message:关闭站点提示消息
     - close_register_user_message:关闭会员注册提示消息
     - withdraw_money:允许提现

    """
    __tablename__ = 'sysconfig'
    web_name = Column(db.String(80), nullable=False)
    web_describe = Column(db.String(500))
    user_register = Column(db.Boolean, default=True)
    active_site = Column(db.Boolean, default=True)
    close_website_message = Column(db.String(500))
    close_register_user_message = Column(db.String(500))
    withdraw_money = Column(db.Boolean(), default=True)

    def init_insert():
        db.session.add(SysConfig(web_name='default'))
        db.session.commit()
Exemplo n.º 6
0
class Grade(SurrogatePK, Model):

    __tablename__ = 'grade'
    __table_args__ = {'comment': '年级班级表'}

    name = Column(db.String(100), comment='班级名称')
    remark = Column(db.String(200), comment='描述')
    teacher_id = Column(db.Integer(), comment='教师ID')
    sort = Column(db.Integer(), default=100)

    @classmethod
    def insert_data(cls, form):
        teacher_id = form.get("teacher_id") if form.get("teacher_id") else 0
        sort = form.get("sort") if form.get("sort") else 100
        phone = form.get('phone')
        teacher = Teacher.query.filter_by(phone=phone).first()
        if not teacher:
            flash("该手机号不正确,没有对应的教师")
            return False
        cls.create(
            name=form.get("name"),
            remark=form.get("remark"),
            teacher_id=teacher.id,
            sort=sort,
        )
Exemplo n.º 7
0
class Role(SurrogatePK, Model):
    """A role for a user."""

    __tablename__ = "roles"
    name = Column(db.String(80), nullable=False)
    pid = Column(db.Integer(),comment="上级")
    remark = Column(db.String(100),comment="描述")
    sort = Column(db.Integer(),server_default='100',comment='排序')
    create_at = Column(db.DateTime(),comment='创建时间',default=dt.datetime.now)
    is_del = Column(db.Boolean(),comment="是否删除",default=False)

    def __init__(self, name, **kwargs):
        """Create instance."""
        db.Model.__init__(self, name=name, **kwargs)

    def __repr__(self):
        """Represent instance as a unique string."""
        return f"<Role({self.name})>"
    
    @classmethod
    def insert_data(cls,form):
        sort =  form.get("is_url") if form.get("is_url") else 100
        is_url =  True if form.get("is_url") else ''
        pid =  True if form.get("pid") else 0
        is_del =  True if form.get("pid") else False
        cls.create(
            name = form.get("name"),
            pid = pid,
            remark =  form.get("remark"),
            sort = sort,
            is_del = is_del,
        )
Exemplo n.º 8
0
class User(CRUDMixin, db.Model):
    __tablename__ = 'user_is'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30))
    password = db.Column(db.String(255))
    date_create = db.Column(db.DateTime(), default=datetime.now())

    @property
    def to_json(self):
        """Return object data in easily serializable format"""
        return {
            'id': self.id,
            'name': self.name,
            'date_create': self.date_create.strftime("%A, %d. %B %Y %I:%M%p"),
        }

    def check_encrypted_password(self, p):
        return pwd_context.verify(p + current_app.config['SALT'], self.password)

    @classmethod
    def encrypt_password(cls, password):
        return pwd_context.encrypt(password + current_app.config['SALT'])

    @classmethod
    def get_by_name(cls, name):
        return cls.query.filter_by(name=name).first()

    def __repr__(self):
        return f"<User-ID:{self.id} NAME: {self.name} >"
Exemplo n.º 9
0
class Access(SurrogatePK, Model):

    __tablename____ = "access"
    __table_args__ = {'comment': '权限表'}

    url = Column(db.String(200), nullable=False, comment="路由正则匹配")
    name = Column(db.String(100), comment="节点名称")
    status = Column(db.Integer(), comment="状态", default=1)
    sort = Column(db.Integer(), comment="排序", default=100)
    is_del = Column(db.Boolean(), comment="是否删除", default=False)
    create_at = Column(db.DateTime(), default=dt.datetime.now, comment='创建时间')
    user_id = Column(db.Integer(), comment="创建用户")

    @classmethod
    def insert_data(cls, form):
        status = True if form.get("status") else False
        sort = form.get("sort") if form.get("sort") else 100
        is_del = True if form.get("is_del") else False
        is_url = form.get("is_url") if form.get("is_url") else ''
        pid = form.get("pid") if form.get("pid") else 0
        is_del = True if form.get("pid") else False
        cls.create(name=form.get("name"),
                   url=form.get("url"),
                   status=status,
                   sort=sort,
                   is_del=is_del,
                   user_id=current_user.id)
Exemplo n.º 10
0
class Order(SurrogatePK, Model):
    """订单表:orders  

    列表参数:
     - users_id:外键用户表 购买人
     - products_id:外键产品表 产品id
     - created_at:创建时间
     - consignee:收货人
     - consignee_phone:收货人电话
     - consignee_adress:收货人地址
     - count:购买总数量
     - price:总金额
     - pay_type:支付类型  注册激活、积分购买、等等
     - buy_type:购买类型  商城购买、注册购买
     - state:订单状态 默认0

    """

    __tablename__ = 'orders'

    users_id = reference_col('users')
    products_id = reference_col('products')

    consignee = Column(db.String(30))
    consignee_phone = Column(db.String(30))
    consignee_address = Column(db.String(200))
    count = Column(db.Integer())
    price = Column(db.Numeric(precision=10,scale=2,\
        asdecimal=True, decimal_return_scale=None),default=0)
    pay_type = Column(db.String(100))
    buy_type = Column(db.String(100))
    state = Column(db.Integer(), default=0)
    created_at = Column(db.DateTime,
                        nullable=False,
                        default=datetime.datetime.now)
Exemplo n.º 11
0
class Menu(SurrogatePK, Model):

    __tablename__ = "menu"
    __table_args__ = {'comment': '菜单权限表'}

    title = Column(db.String(100), nullable=False)
    pid = Column(db.Integer(), comment="上级")
    status = Column(db.Integer(), comment="状态", default=0)
    sort = Column(db.Integer(), comment="排序", default=100)
    is_url = Column(db.Boolean(), comment="是否路由地址", default=False)
    url = Column(db.String(200), comment="路由地址")
    blueprint = Column(db.String(50), comment="蓝图地址")
    icon = Column(db.String(50), comment="图标")

    @classmethod
    def insert_data(cls, form):
        status = True if form.get("status") else False
        is_url = True if form.get("is_url") else False
        cls.create(title=form.get("title"),
                   pid=form.get("pid"),
                   status=status,
                   sort=form.get("sort"),
                   is_url=is_url,
                   url=form.get("url"),
                   blueprint=form.get("blueprint"),
                   icon=form.get("icon"))
Exemplo n.º 12
0
class Pages(CRUDMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    title= db.Column(db.String(264), index=True, unique=True)
    url = db.Column(db.String(64), index=True, unique=True)
    content = db.Column(db.Text)

    def __repr__(self):
        return '<Url Page {}>'.format(self.url)
Exemplo n.º 13
0
class Outsiders(SurrogatePK, Model):
    """其他人员 外来人员"""

    __tablename__ = "outsiders"

    name = Column(db.String(50), comment='姓名')
    user_id = Column(db.Integer())
    remark = Column(db.String(200), comment='描述')
Exemplo n.º 14
0
class User(UserMixin, SurrogatePK, Model):
    """A user of the app."""

    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    username = Column(db.String(80), unique=True, nullable=False)
    email = Column(db.String(80), unique=True, nullable=False)
    #: The hashed password
    password = Column(db.Binary(128), nullable=True)
    created_at = Column(db.DateTime, nullable=False, default=dt.datetime.utcnow)
    first_name = Column(db.String(30), nullable=True)
    last_name = Column(db.String(30), nullable=True)
    active = Column(db.Boolean(), default=False)
    is_admin = Column(db.Boolean(), default=False)

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

    # def __init__(self, username, email, password=None, **kwargs):
    #     """Create instance."""
    #     db.Model.__init__(self, username=username, email=email, **kwargs)
    #     if password:
    #         self.set_password(password)
    #     else:
    #         self.password = None

    def set_password(self, password):
        """Set password."""
        self.password = bcrypt.generate_password_hash(password)

    def check_password(self, value):
        """Check password."""
        return bcrypt.check_password_hash(self.password, value)

    @property
    def full_name(self):
        """Full user name."""
        return '{0} {1}'.format(self.first_name, self.last_name)

    def __repr__(self):
        """Represent instance as a unique string."""
        return '<User({username!r})>'.format(username=self.username)

    def add_role(self, role):
        self.roles.append(role)

    def add_roles(self, roles):
        for role in roles:
            self.add_role(role)

    def get_roles(self):
        for role in self.roles:
            yield role
Exemplo n.º 15
0
class Banner(SurrogatePK,Model):
	__tablename__ = 'banners'
	#:横幅标题
	title = Column(db.String(100))
	#:横幅描述
	summary = Column(db.String(200))
	image = Column(db.String(200))
	alt = Column(db.String(80))
	sort = Column(db.Integer())

	user = Column(db.Integer, db.ForeignKey('users.id'))
Exemplo n.º 16
0
class Inventory(db.Model):
    __tablename__ = "inventory"

    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    code = db.Column(db.String(200), index=True, unique=True)
    type = db.Column(db.String(100), index=True)
    created_date = db.Column(db.DateTime,
                             nullable=False,
                             default=db.func.now())
    assignee = db.Column(db.String(100), nullable=True)

    def __repr__(self) -> str:
        return f"<Iventory {self.id}:{self.code}>"
Exemplo n.º 17
0
class SystemVersion(SurrogatePK, Model):

    __tablename__ = 'system_versions'
    #版本号
    number = Column(db.String(20))
    #标题
    title = Column(db.String(100))
    #描述
    summary = Column(db.String(200))
    #内容
    context = Column(db.UnicodeText)

    created_at = Column(db.DateTime, nullable=False, default=dt.datetime.now)
Exemplo n.º 18
0
class User(CRUDMixin, UserMixin, db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(64), index=True, unique=True)
    email = db.Column(db.String(120), index=True, unique=True)
    password_hash = db.Column(db.String(128))

    def __repr__(self):
        return '<User {}>'.format(self.username)

    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)
Exemplo n.º 19
0
class Product(SurrogatePK, Model):

    """产品列表 :products

    列表参数:
     - name:产品名称
     - price:销售价
     - special_price:优惠价进货价
     - note:详情
     - attach_key:附加字段
     - attach_value:附加值
     - active:商品状态
     - is_sell:是否出售
     - order_id:外键订单表
     - category_id:外键分类

    """    
    __tablename__ = 'products'

    category_id = reference_col('categorys')

    name = Column(db.String(100))
    price = Column(db.Numeric(precision=10,scale=2,\
        asdecimal=True, decimal_return_scale=None))
    special_price = Column(db.Numeric(precision=10,scale=2,\
        asdecimal=True, decimal_return_scale=None))
    note =  Column(db.UnicodeText())
    attach_key = Column(db.String(500))
    attach_value = Column(db.String(500))
    active = Column(db.Boolean(),default=True)
    is_sell = Column(db.Boolean(),default=True)
    #热门 0 不热门 1热门
    hot = Column(db.Boolean(),default=True)
    #查看次数
    click_count = Column(db.Integer(),default=0)
    #累计购买总数
    buy_count = Column(db.Integer(),default=0)
    #条码
    ean = Column(db.String(50))
    #规格
    unit = Column(db.Integer,default=1)
    #创建时间
    created_at = Column(db.DateTime, default=datetime.datetime.now)
    #首页展示图
    main_photo = Column(db.String(200))


    def get_all(self):
        return Product.query.all()
Exemplo n.º 20
0
class SysConfig(SurrogatePK, Model):
    """系统配置表 """
    __tablename__ = 'sysconfig'
    #站点名称
    web_name = Column(db.String(80), nullable=False)
    #站点描述
    web_describe = Column(db.String(500))
    #开放注册
    user_register = Column(db.Boolean, default=True)
    #是否启用站点
    active_site = Column(db.Boolean, default=True)

    def init_insert():
        db.session.add(SysConfig(web_name='default'))
        db.session.commit()
Exemplo n.º 21
0
class Role(SurrogatePK, Model, RoleMixin):
    """A role for a user."""

    __tablename__ = 'roles'

    name = db.Column(db.String(80))
    parents = db.relationship(
        'Role',
        secondary=roles_parents,
        primaryjoin=("Role.id == roles_parents.c.role_id"),
        secondaryjoin=("Role.id == roles_parents.c.parent_id"),
        backref=db.backref('children', lazy='dynamic'))

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

    def add_parent(self, parent):
        # You don't need to add this role to parent's children set,
        # relationship between roles would do this work automatically
        self.parents.append(parent)

    def add_parents(self, *parents):
        for parent in parents:
            self.add_parent(parent)

    @staticmethod
    def get_by_name(name):
        return Role.query.filter_by(name=name).first()
Exemplo n.º 22
0
class UserMarkType(SurrogatePK,Model):

	__tablename__ = 'user_mark_types'

	name = Column(db.String(80))

	user_mark = db.relationship('UserMark', backref='user_marks',uselist=False)	

	user = reference_col('users')
Exemplo n.º 23
0
class OrderProduct(SurrogatePK, Model):
    """订单商品列表 快照

    列表参数:
     - name:名称
     - thumbnail:缩略图
     - 
     - 
     - 

    """

    __tablename__ = 'order_products'

    name = Column(db.String(100))
    thumbnail = Column(db.String(200))
    price = Column(db.Numeric(precision=10,scale=2,\
        asdecimal=True, decimal_return_scale=None),default=0)
    count = Column(db.Integer())
Exemplo n.º 24
0
class Category(SurrogatePK,Model):

	__tablename__ = 'categorys'
	#:栏目标题
	title = Column(db.String(80),nullable=False)
	#:栏目描
	summary = Column(db.String(100))
	#:关键字
	key =  Column(db.String(80))
	#:关键描述
	word = Column(db.String(500))
	#:创建时间
	creation_date = Column(db.DateTime(),default=dt.datetime.now)
	#:排序
	sort = Column(db.Integer,default=100)
	#:是否显示
	is_enable = Column(db.Boolean,default=True)
	#:首页展示顺序
	main_sort = Column(db.Integer,default=100)
	#:栏目静态内容
	static_content = Column(db.UnicodeText)
	#:附加内容
	attach_value = Column(db.UnicodeText)
	#状态  0用户删除不做正式删除   1正常
	state = Column(db.Integer,default=1)

	attr_id = reference_col('category_attrs')
	#:所属用户栏目
	user = reference_col('users')
	#:引用自身无限级分类
	parent_id = reference_col('categorys')
	children = relationship("Category",lazy="joined",join_depth=2,post_update=True)

	#所属文章
	article = relationship('Article', backref='categorys',lazy='dynamic')
	#所属图集
	photo = relationship('Photo', backref='categorys',lazy='dynamic')
	#栏目静态内容
	static_context = relationship('StaticContext', backref='categorys',lazy='dynamic')
	 

	def __repr__(self):
		return '<CategoryAttr({name!r})>'.format(name=self.title)
Exemplo n.º 25
0
class ContentAttr(SurrogatePK, Model):
	"""内容属性,
	默认的三个类型选项,mark标记唯一
	用户无法更改
	数据库 读取mark标记  #普通common 首页home  热门hot  推荐recd
	"""

	__tablename__ = 'content_attrs'

	name = Column(db.String(80), nullable=False)

	mark = Column(db.String(80),unique=True,nullable=False)
	#文章
	article = db.relationship('Article', backref='content_attrs',lazy='dynamic')
	#图集
	photo = db.relationship('Photo', backref='content_attrs',lazy='dynamic')
	
	def __repr__(self):
		return '<ArticeAttr({name!r})>'.format(name=self.name)
Exemplo n.º 26
0
class UserMark(SurrogatePK,Model):

	__tablename__ = 'usermarks'
	#用户姓名
	name = Column(db.String(80))
	#联系电话
	phone = Column(db.String(20))
	#留言内容
	content = Column(db.UnicodeText)
	#用户头像
	image = Column(db.String(200))
	#:附加段、值
	attach_key = Column(db.String(200))
	attach_value = Column(db.String(500))

	creation_date = Column(db.DateTime(),default=dt.datetime.now)

	user_mark_type = Column(db.Integer, db.ForeignKey('user_mark_types.id'))
	
	user = reference_col('users')
Exemplo n.º 27
0
class UserUrlAndTemplate(SurrogatePK, Model):

    __tablename__ = 'user_url_and_templates'

    user_url = Column(db.String(100), nullable=False)

    user = reference_col('users')
    template = reference_col('user_templates')

    created_at = Column(db.DateTime, nullable=False, default=dt.datetime.now)
    end_time_at = Column(db.DateTime, nullable=False, default=dt.datetime.now)
Exemplo n.º 28
0
class User(UserMixin, SurrogatePK, Model):
    """A user of the app."""

    __tablename__ = 'users'
    username = Column(db.String(80), unique=True, nullable=False)
    email = Column(db.String(80), unique=True, nullable=False)
    #: The hashed password
    password = Column(db.Binary(128), nullable=True)
    created_at = Column(db.DateTime,
                        nullable=False,
                        default=dt.datetime.utcnow)
    first_name = Column(db.String(30), nullable=True)
    last_name = Column(db.String(30), nullable=True)
    active = Column(db.Boolean(), default=False)
    is_admin = Column(db.Boolean(), default=False)

    def __init__(self, username, email, password=None, **kwargs):
        """Create instance."""
        db.Model.__init__(self, username=username, email=email, **kwargs)
        if password:
            self.set_password(password)
        else:
            self.password = None

    def set_password(self, password):
        """Set password."""
        self.password = bcrypt.generate_password_hash(password)

    def check_password(self, value):
        """Check password."""
        return bcrypt.check_password_hash(self.password, value)

    @property
    def full_name(self):
        """Full user name."""
        return '{0} {1}'.format(self.first_name, self.last_name)

    def __repr__(self):
        """Represent instance as a unique string."""
        return '<User({username!r})>'.format(username=self.username)
Exemplo n.º 29
0
class Staff(SurrogatePK, Model):
    """职工"""

    __tablename__ = "staff"

    name = Column(db.String(50), comment='姓名')
    number_id = Column(db.String(50), comment='员工编号')
    sex = Column(db.Integer(), default=0, comment="性别0女1男")
    status = Column(db.Integer(), default=0, comment="状态 默认0 未定义")
    remark = Column(db.String(200), comment='描述')
    phone = Column(db.String(50), comment='电话')
    user_id = Column(db.String(50), comment='')

    @classmethod
    def insert_data(cls, form):
        status = True if form.get("status") else False
        sex = True if form.get("sex") else False
        cls.create(name=form.get("name"),
                   number_id=form.get("number_id"),
                   sex=sex,
                   status=status,
                   phone=form.get("phone"))
Exemplo n.º 30
0
class Article(SurrogatePK,Model):

	__tablename__ = 'articles'

	#:文章标题
	title = Column(db.String(80),nullable=False)
	#:作者
	author =  Column(db.String(80))
	#:来源
	source =  Column(db.String(80))
	#:文章描述
	summary = Column(db.String(500))
	#:关键字
	key =  Column(db.String(80))
	#:关键描述
	word = Column(db.String(500))
	#:创建时间
	creation_date = Column(db.DateTime(),default=dt.datetime.now)
	#:是否显示
	is_enable = Column(db.Boolean,default=True)
	#:内容
	content = Column(db.UnicodeText)
	#:浏览次数
	count = Column(db.Integer,default=100)
	#缩略图 #保存路径
	image = Column(db.String(200))
	image_alt = Column(db.String(80))
	#文章属性
	#附加字段,附加字段值
	attach_key = Column(db.String(200))
	attach_value = Column(db.String(500))
	#静态内容,用“|”号隔开
	static_context = Column(db.UnicodeText)


	attr_id = reference_col('content_attrs')
	category = reference_col('categorys')
	user = reference_col('users')