Ejemplo n.º 1
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)
Ejemplo n.º 2
0
class StaticContext(SurrogatePK,Model):
	__tablename__ = 'static_contexts'
	html = Column(db.UnicodeText)
	
	default_html = Column(db.UnicodeText)
	main_sort = Column(db.Integer,default=100)


	user = reference_col('users')
	category = reference_col('categorys')
Ejemplo n.º 3
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)
Ejemplo 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')
Ejemplo n.º 5
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)
Ejemplo n.º 6
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')
Ejemplo n.º 7
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)
Ejemplo n.º 8
0
class TemplatesDefault(SurrogatePK, Model):

    __tablename__ = 'template_defaults'

    main_sort = Column(db.Integer, nullable=False)
    html = Column(db.UnicodeText)

    #所属模板
    # user_template = reference_col('user_templates')
    #所属模板属性分类
    user_template_category = reference_col('category_attrs')
Ejemplo n.º 9
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')
Ejemplo n.º 10
0
class Photo(SurrogatePK,Model):
	__tablename__ = 'photos'
	#:图集标题
	title = Column(db.String(80),nullable=False)
	#:图集描述
	summary = Column(db.String(500))
	#:关键字
	key =  Column(db.String(80))
	#:关键描述
	word = Column(db.String(500))
	#:拍摄时间
	photos_date = Column(db.DateTime(),default=dt.datetime.now)
	#:创建时间
	creation_date = Column(db.DateTime(),default=dt.datetime.now)
	#缩略图 #保存路径
	image = Column(db.String(200))
	image_alt = Column(db.String(80))
	#:浏览次数
	count = Column(db.Integer,default=100)
	#:是否显示
	is_enable = Column(db.Boolean,default=True)
	

	#图集属性
	attr_id = db.Column(db.Integer,db.ForeignKey('content_attrs.id'))
	#图集照片
	photo_image = db.relationship('PhotoImage', backref='photo_images',lazy='dynamic')	

	#附加字段,附加字段值
	attach_key = Column(db.String(200))
	attach_value = Column(db.String(500))

	#静态内容,用“|”号隔开
	static_context = Column(db.UnicodeText)

	user = reference_col('users')
	category = reference_col('categorys')
Ejemplo n.º 11
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()
Ejemplo n.º 12
0
class Role(SurrogatePK, Model):
    """A role for a user."""

    __tablename__ = 'roles'
    name = Column(db.String(80), unique=True, nullable=False)
    user_id = reference_col('users', nullable=True)
    user = relationship('User', backref='roles')

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

    def __repr__(self):
        """Represent instance as a unique string."""
        return '<Role({name})>'.format(name=self.name)
Ejemplo n.º 13
0
class BuysCar(SurrogatePK, Model):
    """购物车
	参数列表:
	 - add_price:添加时的价格
	 - product_id:产品id,不做外键
	 - count:数量

	"""

    __tablename__ = 'buys_car'

    add_price = Column(db.Numeric(precision=10,scale=2,\
           asdecimal=True, decimal_return_scale=None),default=0)

    product_id = Column(db.Integer())
    count = Column(db.Integer())

    users_id = reference_col('users')
Ejemplo n.º 14
0
class Store(SurrogatePK, Model):
    """店铺 stores

    列表参数:
     - users_id:外键用户表
     - name:店铺名称
     - created_at:创建时间
     - active:是否激活。默认false

    """
    __tablename__ = 'stores'

    users_id = reference_col('users')

    name = Column(db.String(100))
    created_at = Column(db.DateTime,
                        nullable=False,
                        default=datetime.datetime.now)
    active = Column(db.Boolean(), default=False)
Ejemplo n.º 15
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')
Ejemplo n.º 16
0
class User(SurrogatePK, Model, UserMixin):
    """用户表.

    表名称:users

    列名称:
     - username:用户名
     - password:密码 ,hashed password
     - created_at:创建时间
     - name:姓名
     - active:是否激活。默认false
     - active_at:激活时间,默认当前时间
     - is_admin:是否管理员
     - is_center:是否报单中心
     - phone:手机号,用于登录等
     - buys_id:外键引用 产品购买表
     - integral:积分
     - coins:硬币
     - parent_center:引用自身 上级
     - children_center:引用自身
     - recommends:引用推荐表
     - recommender:外键引用推荐人表
     - buys_car_id:外键购物车

    """
    __tablename__ = 'users'

    username = Column(db.String(80), unique=True, nullable=False)
    password = Column(db.Binary(128), nullable=False)
    created_at = Column(db.DateTime,
                        nullable=False,
                        default=datetime.datetime.now)
    name = Column(db.String(30))
    active = Column(db.Boolean(), default=False)
    active_at = Column(db.DateTime,
                       nullable=False,
                       default=datetime.datetime.now)
    is_admin = Column(db.Boolean(), default=False)
    is_center = Column(db.Boolean(), default=False)
    phone = Column(db.String(30), unique=True)

    integral = Column(db.Integer(), default=0)
    coins = Column(db.Integer(), default=0)

    parent_center = reference_col('users')

    buys_id = relationship('Order', backref='user')
    children_center = relationship("User",
                                   join_depth=2,
                                   lazy="joined",
                                   post_update=True)
    recommends = db.relationship('Recommend',
                                 foreign_keys=[Recommend.recommender_id],
                                 backref=db.backref('recommender',
                                                    lazy='joined'),
                                 lazy='dynamic',
                                 cascade='all, delete-orphan')
    recommender = db.relationship('Recommend',
                                  foreign_keys=[Recommend.recommends_id],
                                  backref=db.backref('recommends',
                                                     lazy='joined'),
                                  lazy='dynamic',
                                  cascade='all, delete-orphan')
    buys_car_id = relationship(BuysCar, backref='users')

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

    def __init__(self, username, password=None, **kwargs):
        """Create instance."""
        db.Model.__init__(self, username=username, **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 is_administrator(self):
        """管理员"""
        return self.is_admin

    def init_insert():
        User.create(username='******', password='******', active=True)

    def generate_auth_token(self, expiration=600):
        s = Serializer(current_app.config['SECRET_KEY'], expires_in=expiration)
        return s.dumps({'id': self.id})

    @staticmethod
    def verify_auth_token(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            data = s.loads(token)
        except SignatureExpired:
            return None  # valid token, but expired
        except BadSignature:
            return None  # invalid token
        user = User.query.get(data['id'])
        return user

    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
Ejemplo n.º 17
0
class User(UserMixin, SurrogatePK, Model):
    """A user of the app."""

    __tablename__ = 'users'
    username = Column(db.String(80), nullable=False)
    #: The hashed password
    password = Column(db.Binary(128), nullable=False)
    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=True)
    is_admin = Column(db.Boolean(), default=False)
    phone = Column(db.String(20))

    memory_capacity = Column(db.Integer, default=0)  #用户内存容量

    #网站名称
    web_name = Column(db.String(200))

    #网站关键词字
    web_key = Column(db.String(200))
    web_word = Column(db.String(500))

    #网站分页数据
    article_page = Column(db.Integer, default=20)
    photo_page = Column(db.Integer, default=20)

    #logo字
    web_logo_word = Column(db.String(50))
    web_logo_img = Column(db.String(200))

    #文章展示和图集展示静态内容
    article_context = Column(db.UnicodeText)
    photo_context = Column(db.UnicodeText)

    #网站状态,1正常 0前台关闭
    web_state = Column(db.Integer, default=1)

    category = relationship('Category', backref='users', lazy='dynamic')
    banner = relationship('Banner', backref='banners', lazy='dynamic')
    static_context = relationship('StaticContext',
                                  backref='users',
                                  lazy='dynamic')
    article = relationship('Article', backref='users', lazy='dynamic')
    photo = relationship('Photo', backref='users', lazy='dynamic')
    user_url_and_template = relationship('UserUrlAndTemplate', backref='users')
    user_mark = relationship('UserMark', backref='users')
    user_mark_type = relationship('UserMarkType', backref='users')

    #用户模板表
    templates = reference_col('user_templates')

    def __init__(self, username, password=None, **kwargs):
        """Create instance."""
        db.Model.__init__(self, username=username, **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 __str__(self):
        return 'users:%s' % self.username

    #管理员
    def is_administrator(self):
        return self.is_admin

    def is_superadmin(self):
        return self.is_admin