示例#1
0
class Store(db.Model):
    '''
    Table of stores information. Key features are:
      - A User is permitted to register more than one store
      - A Store is given assigned a dispatch ride
    '''
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50), nullable=False)
    # Yes, images are stored on the database
    # from experience, it is preferrable a scenario like this
    logo = db.Column(db.BLOB)
    about = db.Column(db.String(150), nullable=False)
    iso_code = db.Column(db.Integer,
                         db.ForeignKey('currency.code'),
                         nullable=False)
    account_id = db.Column(db.Integer, db.ForeignKey('account_detail.id'))
    dispatcher_id = db.Column(db.Integer,
                              db.ForeignKey('dispatcher.id'),
                              nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    phone = db.Column(db.String(15), nullable=False)
    email = db.Column(db.String(100), nullable=False)
    created_at = db.Column(db.DateTime(), default=datetime.utcnow())
    is_active = db.Column(db.Boolean(), default=True)
    # relationships --------------------------------------
    products = db.relationship('Product', backref='store')

    @classmethod
    def public(cls):
        # only products from active stores are made public
        return (Store.query.filter(Store.is_active == 1))
示例#2
0
class Order(db.Model):
    '''
      Table of orders: status can be one of
        * `cart`: The order havenot been checked-out
        * `placed`: It has been checkout, but not yet paid for
        * `paid`: It has been fully paid for
        * `dispatched`: It has been handed to the dispatcher
        * `fulfilled`: It has been delivered to the customer
      Note:
        * When the `PAYMENT_SPLIT_POINT = 'instant'`, the `dispatched`
        and `fulfiled` status are not used.
    '''
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    iso_code = db.Column(db.Integer,
                         db.ForeignKey('currency.code'),
                         nullable=False)
    status = db.Column(db.String(5), default='open', nullable=False)
    amount = db.Column(db.String(20))
    created_at = db.Column(db.DateTime(), default=datetime.utcnow())
    last_modified_at = db.Column(db.DateTime(), default=datetime.utcnow())
    # relationship ---------------
    orderlines = db.relationship('OrderLine', backref='order')

    @classmethod
    def cart(cls):
        # only products from active stores are made public
        return (Order.query.filter(Order.status == 'open'))
示例#3
0
class OrderLine(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    order_id = db.Column(db.Integer, db.ForeignKey('order.id'), nullable=False)
    product_id = db.Column(db.Integer,
                           db.ForeignKey('product.id'),
                           nullable=False)
    price = db.Column(db.Numeric(20, 2), nullable=False)
    qty = db.Column(db.Integer, default=1, nullable=False)
class EnvModel(db.Model):
    # 定义表名
    __tablename__ = 'env'
    env_id = db.Column(db.String(50), primary_key=True, unique=True)
    env_name = db.Column(db.String(15), nullable=False)
    base_url = db.Column(db.String(50), nullable=False)
    create_time = db.Column(db.Date, default=datetime.now)
    is_delete = db.Column(db.Integer, nullable=False, default=0)
    pro_id = db.Column(db.String(50),
                       db.ForeignKey('project.project_id'),
                       nullable=False)
    creator = db.Column(db.String(50),
                        db.ForeignKey('user.user_id'),
                        nullable=False)
class VersionModel(db.Model):
    # 定义表名
    __tablename__ = 'version'
    ver_id = db.Column(db.String(50), primary_key=True, unique=True)
    version = db.Column(db.String(15), nullable=False)
    remark = db.Column(db.String(50))
    is_delete = db.Column(db.Integer, nullable=False, default=0)
    create_time = db.Column(db.Date, default=datetime.now)
    pro_id = db.Column(db.String(50),
                       db.ForeignKey('project.project_id'),
                       nullable=False)
    creator = db.Column(db.String(50),
                        db.ForeignKey('user.user_id'),
                        nullable=False)
class ApiTestReportModel(db.Model):
    # 定义表名
    __tablename__ = 'api_report'
    report_id = db.Column(db.String(50), primary_key=True, unique=True)
    report_name = db.Column(db.String(100), nullable=False)
    success = db.Column(db.Integer, nullable=False, default=0)
    fail = db.Column(db.Integer, nullable=False, default=0)
    create_time = db.Column(db.Date, default=datetime.now)
    pro_id = db.Column(db.String(50),
                       db.ForeignKey('project.project_id'),
                       nullable=False)
    task_id = db.Column(db.String(50),
                        db.ForeignKey('task.task_id'),
                        nullable=False)
示例#7
0
class TestCaseModel(db.Model):
    # 定义表名
    __tablename__ = 'testcase'
    case_id = db.Column(db.String(50), primary_key=True, unique=True)
    case_name = db.Column(db.String(20), nullable=False)
    level = db.Column(db.Integer, nullable=False, default=0)
    method = db.Column(db.Integer, nullable=False, default=0)
    req_url = db.Column(db.String(200), nullable=False, default=None)
    header = db.Column(db.String(100), nullable=False, default=None)
    body = db.Column(db.Text(500), nullable=True)
    case_assert = db.Column(db.Text(500), nullable=False, default=None)
    forward = db.Column(db.Text(500), nullable=True)
    mock = db.Column(db.Text(500), nullable=True)
    remark = db.Column(db.String(200), nullable=True)
    create_time = db.Column(db.Date, default=datetime.now)
    creator = db.Column(db.String(50), db.ForeignKey('user.user_id'), nullable=False)
    pro_id = db.Column(db.String(50), db.ForeignKey('project.project_id'), nullable=False)
示例#8
0
class Dispatcher(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100), unique=True, nullable=False)
    charge = db.Column(db.Integer, nullable=False)
    phone = db.Column(db.String(15), nullable=False)
    email = db.Column(db.String(100), nullable=False)
    account_id = db.Column(db.Integer, db.ForeignKey('account_detail.id'))
    is_active = db.Column(db.Boolean(), default=True)
    # relationships --------------------------------------
    stores = db.relationship('Store', backref='dispatcher')
示例#9
0
class Comment(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ticket_id = db.Column(db.Integer,
                          db.ForeignKey('ticket.id'),
                          nullable=False)
    message = db.Column(db.String(120), nullable=False)
    created_at = db.Column(db.DateTime, nullable=False, default=func.now())

    def __repr__(self):
        return '<Comment for %r>' % self.ticket_id
class TaskModel(db.Model):
    # 定义表名
    __tablename__ = 'task'
    task_id = db.Column(db.String(50), primary_key=True, unique=True)
    task_name = db.Column(db.String(6), nullable=False)
    create_time = db.Column(db.Date, default=datetime.now)
    task_start_time = db.Column(db.BigInteger)
    task_end_time = db.Column(db.BigInteger)
    task_status = db.Column(db.Integer, nullable=False, default=0)
    creator = db.Column(db.String(50),
                        db.ForeignKey('user.user_id'),
                        nullable=False)
    pro_id = db.Column(db.String(50),
                       db.ForeignKey('project.project_id'),
                       nullable=False)
    env_id = db.Column(db.String(50),
                       db.ForeignKey('env.env_id'),
                       nullable=False)
    suite_id = db.Column(db.String(50),
                         db.ForeignKey('suite.suite_id'),
                         nullable=False)
    ver_id = db.Column(db.String(50),
                       db.ForeignKey('version.ver_id'),
                       nullable=False)
示例#11
0
class ProjectModel(db.Model):
    # 定义表名
    __tablename__ = 'project'
    project_id = db.Column(db.String(50), primary_key=True)
    project_name = db.Column(db.String(20), unique=True)
    remark = db.Column(db.String(50))
    is_delete = db.Column(db.Integer, nullable=False, default=0)
    create_time = db.Column(db.Date, default=datetime.now)
    creator = db.Column(db.String(50), db.ForeignKey('user.user_id'), nullable=False)

    # 序列化: 查询一条数据
    def query_one(self):
        res = {
            'projectID': self.project_id,
            'projectName': self.project_name,
            'remark': self.remark,
            'createTime': self.create_time,
            'creator': self.creator
        }
        return res
示例#12
0
class Product(db.Model):
    '''
    Table of all Products from all stores.
    When `PRODUCT_PRICING = 'localize'`, the product prices
    will be converted from their store currencies to the
    visitor's currency. 4 currencies (GBP, KES, NGN, USA,
    are currently supported, and the applicable one defaults to the
    automatically computed ISO CODE based on the visitor's IP location,
    and when the detected ISO_CODE is not part of the supported
    currencies, the product prices are served in USD.
    '''
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    price = db.Column(db.Numeric(20, 2))
    description = db.Column(db.String(200))
    # Yes, images are stored on the database
    # from experience, it is preferrable a scenario like this
    image = db.Column(db.BLOB)
    store_id = db.Column(db.Integer, db.ForeignKey('store.id'), nullable=False)
    is_active = db.Column(db.Boolean, default=False)
    created_at = db.Column(db.DateTime(), default=datetime.utcnow())
    last_modified_at = db.Column(db.DateTime, default=datetime.utcnow())
    # relationships ---------------------------------------------
    orderlines = db.relationship('OrderLine', backref='product')

    @classmethod
    def public(cls):
        # only active products are made public
        return (Product.query.filter(Product.is_active == 1))

    def sale_price(self, product_pricing, to_currency, multi_currency):
        '''
        Converts price of products to visitor's currency based on scale
        '''
        if (product_pricing == 'localize' and multi_currency):
            scale = (Currency.query.filter_by(code=to_currency).first().rate /
                     self.store.currency.rate)
            return round(self.price * scale, 2)
        return self.price
示例#13
0
'''
Human related models are located here, currently we have:
  - Role: Which may be one of Admin | Vendor | Customer
  - User: Table of everyone capable of logging in to the system
'''
from datetime import datetime

from flask_security import utils, current_user, UserMixin, RoleMixin
from flask_admin.contrib import sqla
from wtforms.fields import PasswordField

from factory import db


roles_users = db.Table(
    'roles_users', db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
    db.Column('role_id', db.Integer, db.ForeignKey('role.id')),
)


class Role(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(30), nullable=False)
    description = db.Column(db.String(200))

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


class User(UserMixin, db.Model):
    ''' Table of everyone capable of logging in to the system '''