Exemple #1
0
class ToDoList(db.Model):
    __tablename__ = 'todolist'
    __table_args__ = {"extend_existing": True}
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(120), nullable=False)
    taskname = db.Column(db.String(120), nullable=False)
    accomplish = db.Column(db.Boolean, nullable=False)

    def save_to_db(self):
        db.session.add(self)
        db.session.commit()

    @classmethod
    def find_task_by_username(cls, username):
        result = cls.query.filter_by(username=username)
        task_list = list()
        for i in result:
            task_list.append(i)
        return task_list

    @classmethod
    def update_task(cls, id, new_task_name, accomplish):
        result = cls.query.filter(cls.id == id).first()
        result.taskname = new_task_name
        result.accomplish = accomplish
        db.session.commit()

    @classmethod
    def del_task(cls, id):
        result = cls.query.filter_by(id=id).first()
        db.session.delete(result)
        db.session.commit()
Exemple #2
0
class User(db.Model):
    """This class represent user model."""

    __tablename__ = 'user'

    guid = db.Column(postgresql.UUID, index=True, unique=True, server_default=func.uuid_generate_v4(), primary_key=True)
    email = db.Column(db.String(255), index=True, unique=True, nullable=False)
    password = db.Column(db.String(255), nullable=False)
    first_name = db.Column(db.String(32), nullable=True)
    last_name = db.Column(db.String(32), nullable=True)
    created_at = db.Column(db.DateTime, server_default=func.now(), nullable=False)
    updated_at = db.Column(db.DateTime, nullable=True)

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

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

    def __iter__(self):
        yield 'guid', self.guid
        yield 'email', self.email
        yield 'first_name', self.first_name
        yield 'last_name', self.last_name
        yield 'created_at', self.created_at
        yield 'updated_at', self.updated_at

    def __repr__(self):
        return '<User %s>' % self.email
Exemple #3
0
class Optimization(db.Model, ModelBase):
    """
    门店优化结果关系表,根据生成的对应优化结果保存基本信息
    """

    __tablename__ = "optimization"

    store_id = db.Column(db.Integer, nullable=False)
    # 对应 forecast.version
    version = db.Column(db.String(64), nullable=False)
    # 当前库存周转天数
    current_inventory_turnover_days = db.Column(db.Integer, nullable=False)
    # 补货后库存周转天数(门店维度)
    optimized_inventory_turnover_days = db.Column(db.Integer, nullable=False)
    # 安全库存天数 默认为 7 天
    safe_inventory_days = db.Column(db.Integer,
                                    nullable=False,
                                    server_default=db.text("7"))
    order_amount_total = db.Column(db.Float)
    # 预估的货损率信息和业务配置目标预设的结果,json 字段保存信息.
    target_info = db.Column(db.Text(), nullable=True)
    # 当前优化的状态:初始化,修改中,完成
    status = db.Column(TINYINT(display_width=1))
    # 订单 id,提交订单时自动生成:store_id+年+月+日+当天第几个订单 eg. 1023432_20200531002
    order_id = db.Column(db.String(64), nullable=True, index=True)
Exemple #4
0
class User(db.Model, UserMixin):

    user_id = db.Column('id', db.Integer, primary_key=True)
    name = db.Column(db.String(20), unique=True)
    password = db.Column(db.String(50))
    role = db.Column(db.String(200))

    __tablename__ = 'tb_user'

    def __init__(self,
                 user_id=None,
                 role=None,
                 password=None,
                 name="anonymous"):

        self.user_id = user_id
        self.role = role
        self.password = password
        self.name = name

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return unicode(self.user_id)

    def __repr__(self):
        return '<User %r>' % (self.user_id)
class Contact(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(25), nullable=False, unique=True)
    email = db.Column(db.String(50), nullable=True)
    phone = db.Column(db.String(10), nullable=True)
    birthday = db.Column(db.Date, nullable=True)
    balance = db.Column(db.Integer, nullable=False, default=0)
Exemple #6
0
class User(db.Model, UserMixin):
    user_id = db.Column('user_id', db.Integer, primary_key=True)
    accountNumber = db.Column(db.String(200), unique=True)
    password = db.Column(db.String(50), unique=True)

    __tablename__ = 'data_user'

    def __init__(self,
                 user_id=None,
                 accountNumber=None,
                 password=None,
                 name="anonymous"):
        self.user_id = user_id
        self.accountNumber = accountNumber
        self.password = password

    def is_authenticated(self):
        return True

    def is_active(self):
        return True

    def is_anonymous(self):
        return False

    def get_id(self):
        return str(self.user_id)

    def __repr__(self):
        return '<User %r>' % (self.accountNumber)
Exemple #7
0
class User(db.Model, UserMixin, ModelBase):

    __tablename__ = "user"

    name = db.Column(db.String(255), unique=True, nullable=False)
    email = db.Column(db.String(255), unique=True, nullable=False)
    password_hash = db.Column(db.String(255), nullable=False)
    # true: 为正常账号用户, false: 为禁用账号用户
    active = db.Column(db.Boolean())
    # 账号申请审批状态
    status = db.Column(db.Integer)
    is_admin = db.Column(db.Boolean(), default=False)
    roles = db.relationship(
        "Role",
        secondary=roles_users,
        backref=db.backref("users", lazy="dynamic"),
    )

    @property
    def is_active(self):
        return self.active

    @property
    def is_authenticated(self):
        return True

    @property
    def is_anonymous(self):
        return False

    def get_id(self):
        return str(self.id)

    @property
    def password(self):
        raise AttributeError("password is not readable")

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

    def validate_password(self, password):
        return verify_password(password, self.password_hash)

    # 有效期为 24 小时
    def generate_confirmation_token(self, expiration=24 * 3600):
        """
        生成 confirm 链接校验 token
        """
        serializer = Serializer(current_app.config["SECRET_KEY"], expiration)
        return serializer.dumps({"confirm": self.id}).decode("utf-8")

    @staticmethod
    def get_id_by_token(token):
        serializer = Serializer(current_app.config["SECRET_KEY"])
        try:
            data = serializer.loads(token)
            return data.get("confirm")
        except (SignatureExpired, BadSignature):
            return None
class FacebookCredential(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    username = db.Column(db.String(4096))
    password = db.Column(db.String(4096))

    logged_timestamp = db.Column(db.DateTime, default=datetime.utcnow)
Exemple #9
0
class Tool(BaseModel):
    __tablename__ = 'tools'
    name = db.Column(db.String(255), nullable=False)
    path = db.Column(db.String(255), nullable=False)
    description = db.Column(db.Text, nullable=False)

    def __repr__(self):
        return "<Tool '{}'>".format(self.name)
Exemple #10
0
class Contact(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    # Ici, on souhaite que chaque Contact dispose des champs:
    #  name :  un nom unique et obligatoire (type String)
    name = db.Column(db.String(25), unique=True, nullable=False)
    #  email : une adresse mail optionnelle (type String)
    email = db.Column(db.String(50), nullable=True)
    #  phone : un numero de telephone optionnel (type String)
    phone = db.Column(db.String(10), nullable=True)
Exemple #11
0
class Chat(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user1 = db.Column(db.String(64), index=True)
    user2 = db.Column(db.String(64), index=True)
    chat = db.Column(db.String(640000), index=True)

    def __repr__(self):
        return '<Chat {0}:{1}>'.format(self.user1, self.user2)

    def to_dict(self):
        return {"user1": self.user1, "user2": self.user2, "chat": self.chat}
Exemple #12
0
class User(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 to_dict(self):
        return {"username": self.username, "id": self.id, "email": self.email}
class Record(db.Model):
    __tablename__ = 'tb_record'
    index = db.Column(db.Integer, primary_key=True)
    timestamp = db.Column(db.String(200), nullable=False)           #时间戳
    pre_describe = db.Column(db.String(200), nullable=False)
    describe = db.Column(db.String(200), nullable=False)             #区块描述对象

    def __init__(self, index=None, timestamp=None,  pre_describe=None, describe=None):
        self.index = index
        self.timestamp = timestamp
        self.pre_describe=pre_describe
        self.describe = describe
Exemple #14
0
class Hub(db.Model, DBBase):
    """
    仓库数据表 / 补货关系表
    """

    __tablename__ = "hub"

    hub_id = db.Column(db.String(16),
                       primary_key=True,
                       autoincrement=False,
                       nullable=False)
    store_id = db.Column(db.String(16), nullable=False)
    hub_name = db.Column(db.String(16), nullable=False)
Exemple #15
0
class User(db.Model, UserMixin):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(100), index=True, unique=True)
    password_hash = db.Column(db.String(128))
    email = db.Column(db.String(100), index=True, unique=True)

    # posts = db.relationship('Post', backref='author', lazy='dynamic')

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def verify_password(self, password):
        return check_password_hash(self.password_hash, password)
Exemple #16
0
    def list(cls, **kwargs):
        page, per_page = kwargs.pop("page"), kwargs.pop("per_page")
        args = [
            cls._model.updated_at,
            cls._model.order_id,
            (db.cast(cls._model.store_id, db.String(10)) +
             Store.store_name).label("store"),
            cls._model.current_inventory_turnover_days,
            cls._model.optimized_inventory_turnover_days,
        ]
        # # 订单列表只展示已完成状态的订单
        filter_spec = [(cls._model.status, OPTIMIZATION_STATUS.FINISHED.value)]
        df = cls._model.model_query(
            args=args,
            join_ons=[(Store, Store.store_id == cls._model.store_id)],
            order_keys=cls._model.updated_at.desc(),
            filter_spec=filter_spec,
            df=True,
        )

        df["updated_at"] = df.apply(
            lambda row: row.updated_at.strftime("%Y年%m月%d"), axis=1)
        return {
            "currentPageNum":
            page,
            "totalNum":
            df.__len__(),
            "optimizations":
            df[(page - 1) * per_page:page * per_page].to_dict("record"),
        }
Exemple #17
0
class Post(db.Model):
    """This class represent post model."""

    __tablename__ = 'post'

    guid = db.Column(postgresql.UUID,
                     index=True,
                     unique=True,
                     server_default=func.uuid_generate_v4(),
                     primary_key=True)
    blog_guid = db.Column(postgresql.UUID, index=True, nullable=False)
    title = db.Column(db.String(255), index=True, nullable=False)
    body = db.Column(db.Text, nullable=True)
    created_at = db.Column(db.DateTime,
                           server_default=func.now(),
                           nullable=False)
    updated_at = db.Column(db.DateTime, nullable=True)

    def __iter__(self):
        yield 'guid', self.guid
        yield 'blog_guid', self.blog_guid
        yield 'title', self.title
        yield 'body', self.body
        yield 'created_at', self.created_at
        yield 'updated_at', self.updated_at

    def __repr__(self):
        return '<Post %s>' % self.title
Exemple #18
0
class HubInventory(db.Model, InventoryModelBase):

    __tablename__ = "hub_inventory"
    __table_args__ = (db.Index("ix_location_id_date", "location_id", "date"), )

    # location_id is Foreign hub.hub_id
    location_id = db.Column(db.String(16), nullable=False)
Exemple #19
0
class Tool(BaseModel):
    __tablename__ = 'tools'
    name = db.Column(db.String(255), nullable=False)
    path = db.Column(db.String(255), nullable=False)
    description = db.Column(db.Text, nullable=False)

    def serialize(self):
        return {
            'id': self.id,
            'name': self.name,
            'path': self.path,
            'description': self.description,
        }

    def __repr__(self):
        return "<Tool '{}'>".format(self.name)
Exemple #20
0
class Post(db.Model):
    __tablename__ = 'post'

    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(140))
    content = db.Column(db.Text)
    pub_date = db.Column(db.DateTime)
Exemple #21
0
class SKU(db.Model, DBBase):
    """
    商品主数据表
    """

    __tablename__ = "sku"

    sku_id = db.Column(
        db.String(16), primary_key=True, autoincrement=False, nullable=False
    )
    category = db.Column(db.String(64), nullable=False)
    brand = db.Column(db.String(64), nullable=False)
    sub_brand = db.Column(db.String(64), nullable=False)
    barcode = db.Column(db.BigInteger, nullable=False)
    sku_name = db.Column(db.String(128), nullable=False)
    name_en = db.Column(db.String(128), nullable=False)
    cost = db.Column(db.Float, nullable=False)
    shelf_life = db.Column(db.Integer, nullable=False)
    pack_size = db.Column(db.String(64), nullable=False)
    net_weight = db.Column(db.Float, nullable=False)
    moq = db.Column(db.Float, nullable=False)
    moa = db.Column(db.Float, nullable=False)
    price = db.Column(db.Float, nullable=False)
    is_seasonal = db.Column(db.Boolean, nullable=False)
    status = db.Column(db.Boolean, nullable=False)
Exemple #22
0
class Classroom(db.Model):
    __tablename__ = 'classroom'

    id = db.Column(db.Integer, primary_key=True)
    description = db.Column(db.String(100), nullable=False)
    time = db.Column(db.Time, nullable=False)
    start_date = db.Column(db.Date, nullable=False)
    end_date = db.Column(db.Date, nullable=True)
    volunteer_id = db.Column(db.Integer, nullable=False)
    student_id = db.Column(db.Integer, nullable=False)

    def insert(self):
        try:
            db.session.add(self)
            db.session.commit()
        except:
            db.session.rollback()
            raise DBException(f"Failed to create Classroom {self.description}")
        finally:
            db.session.close()

    def update(self):
        try:
            db.session.commit()
        except:
            db.session.rollback()
            raise DBException(f"Failed to update Classroom {self.name}")
        finally:
            db.session.close()

    def delete(self):
        try:
            db.session.delete(self)
            db.session.commit()
        except:
            db.session.rollback()
            raise DBException(f"Failed to remove Classroom {self.name}")
        finally:
            db.session.close()

    def long(self):
        classroom_info = {
            "id": self.id,
            "description": self.description,
            "time": str(self.time),
            "start_date": str(self.start_date),
            "end_date": str(self.end_date),
            "volunteer_id": self.volunteer_id,
            "student_id": self.student_id
        }
        return classroom_info

    def __repr__(self):
        return f'<Volunteer {self.volunteer_id}: Student {self.student_id}>'

    def __hash__(self):
        return self.id
Exemple #23
0
class Bug(BaseModel):
    __tablename__ = 'bugs'
    title = db.Column(db.String(255), nullable=False)
    vuln_id = db.Column(db.Integer, nullable=False, default=0)
    severity = db.Column(db.Integer, nullable=False, default=0)
    description = db.Column(db.Text, nullable=False)
    impact = db.Column(db.Text, nullable=False)
    status = db.Column(db.Integer, nullable=False, default=0)
    submitter_id = db.Column(db.Integer,
                             db.ForeignKey('users.id'),
                             nullable=False)
    reviewer_id = db.Column(db.Integer,
                            db.ForeignKey('users.id'),
                            nullable=False)

    @property
    def vulnerability_as_string(self):
        return VULNERABILITIES[self.vuln_id][0]

    @property
    def severity_as_string(self):
        return SEVERITY[self.severity]

    @property
    def status_as_string(self):
        return BUG_STATUSES[self.status]

    @property
    def bounty(self):
        return VULNERABILITIES[self.vuln_id][1] * self.severity

    @staticmethod
    def is_unique(signature):
        for bug in Bug.query.all():
            s = ' '.join((bug.title, bug.description, bug.impact))
            js = get_jaccard_sim(signature, s)
            if js > 0.5:
                return False
        return True

    @property
    def is_validated(self):
        # includes any validation result
        # rejected, confirmed, and fixed
        if self.status > 0:
            return True
        return False

    @property
    def is_accepted(self):
        # includes confirmed and fixed
        if self.status > 1:
            return True
        return False

    def __repr__(self):
        return "<Bug '{}'>".format(self.title)
Exemple #24
0
class Score(BaseModel):
    __tablename__ = 'scores'
    player = db.Column(db.String(255), nullable=False)
    score = db.Column(db.Integer, nullable=False)
    recid = db.Column(db.Integer)
    recording = db.Column(db.Text, nullable=False)

    def __repr__(self):
        return "<Score '{}:{}'>".format(self.player, self.score)
Exemple #25
0
class Scan(BaseModel):
    __tablename__ = 'scans'
    id = db.Column(db.String(36), primary_key=True)
    command = db.Column(db.String(255), nullable=False)
    results = db.Column(db.Text)
    complete = db.Column(db.Boolean, default=False, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)

    def serialize(self, include_results=False):
        return {
            'id': self.id,
            'created': self.created_as_string,
            'modified': self.modified_as_string,
            'command': self.command,
            'complete': self.complete,
        }

    def __repr__(self):
        return "<Scan '{}'>".format(self.name)
Exemple #26
0
class Store(db.Model, DBBase):
    """
    门店主数据表
    """

    __tablename__ = "store"

    store_id = db.Column(db.Integer,
                         primary_key=True,
                         autoincrement=False,
                         nullable=False)
    store_name = db.Column(db.String(128), nullable=False)
    # 年销售量
    gsv = db.Column(db.Float, nullable=True)
    province = db.Column(db.String(128), nullable=False)
    city = db.Column(db.String(64), nullable=False)
    region = db.Column(db.String(64), nullable=False)
    # 开店日期
    opening_dte = db.Column(db.DateTime)
Exemple #27
0
class UserModel(db.Model):
    __tablename__ = 'users'
    __table_agrs__ = {"extend_eisting": True}  # 如果表已经被创建过,需要加这个参数提供扩展
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(120), unique=True, nullable=False)
    password = db.Column(db.String(120), nullable=False)

    def save_to_db(self):
        '''创建实例,调用save_to_db保存数据'''
        db.session.add(self)
        db.session.commit()

    @classmethod
    def find_by_username(cls, username):
        '''调用类方法,按username查询用户信息'''
        return cls.query.filter_by(username=username).first()

    @classmethod
    def return_all(cls):
        '''返回所有的用户'''
        def to_json(x):
            return {'username': x.username, 'password': x.password}

        return {
            "user": list(map(lambda x: to_json(x), UserModel.query.all()))
        }  # 直接用to_json

    @classmethod
    def delete_all(cls):
        try:
            num_rows_delete = db.session.query(cls)
            db.session.commit()
            return {'message': f"{num_rows_delete} row(s) deleted"}
        except:
            return {'message': "Someting went wrong"}

    @staticmethod
    def generate_hash(password):
        return sha256.hash(password)

    @staticmethod
    def verify_hash(password, hash):
        return sha256.verify(password, hash)
Exemple #28
0
class Url(db.Model):
    __tablename_ = 'urls'
    id = db.Column(db.INTEGER,primary_key=True,autoincrement=True)
    name = db.Column(db.String(64), unique=True, index=True)
    url = db.Column(db.TEXT)
    mode = db.Column(db.String(10))
    method = db.Column(db.String(10))
    timeout = db.Column(db.INTEGER)

    def to_dict(self):
        return {
            'id':self.id,
            'name':self.name,
            'url': self.url,
            'mode': self.mode,
            'method':self.method,
            'timeout': self.timeout,
        }

    def __repr__(self):
        return  '\r\n'.join(['{}={}'.format(key,val) for key,val in self.__dict__.items()])
Exemple #29
0
class Forecast(db.Model, ModelBase):
    """
    预测结果输出表
    """

    __tablename__ = "forecast"
    __table_args__ = (db.Index(
        "ix_version_store_id_forecast_week",
        "version",
        "store_id",
        "predict_week",
    ), )

    version = db.Column(db.String(36), nullable=False)
    store_id = db.Column(db.Integer, nullable=False)
    predict_week = db.Column(db.String(8), nullable=False)
    sku_id = db.Column(db.String(16), nullable=False)
    run_week = db.Column(db.String(8), nullable=False)
    price = db.Column(db.Float,
                      nullable=False)  # 预测结果实际用到的 sku price,可能与产品主数据中不同
    qty_mean = db.Column(db.Float, nullable=False)
    qty_std = db.Column(db.Float, nullable=False)
Exemple #30
0
class OptimizedOrder(db.Model, ModelBase):
    """
    优化结果数据表
    """

    __tablename__ = "optimized_order"

    sku_id = db.Column(db.String(16), nullable=False)
    # 当时可用库存
    store_inventory = db.Column(db.Float)
    # 优化算法根据商品主数据中对应 SKU 单价值
    unit_price = db.Column(db.Float)
    order_id = db.Column(db.String(64), nullable=True, index=True)
    """
    优化算法根据预测结果给出的第一版 AI 优化补货结果
    包括:
        - 补货量
        - 库存周转天数(门店下 SKU 维度)
    """
    optimized_replenishment = db.Column(db.Float)
    optimized_inventory_turnover_days = db.Column(db.Float)
    """
    人工修改过之后的确认版本优化补货结果
    """
    # 人工修改数据 可以 +/-
    modify = db.Column(db.Float, nullable=False, server_default=db.text("0"))
    """
    这里默认 default 值不需要在建表时候自动创建
    所以不用使用 server_default 方法,动态生成对应值即可.
    """
    replenishment = db.Column(
        db.Float,
        nullable=False,
        default=cal_replenishment,
        onupdate=cal_replenishment,
    )
    inventory_turnover_days = db.Column(
        db.Float, nullable=False, default=default_inventory_turnover_days)