package.py 2.83 KB
Newer Older
wanli's avatar
wanli committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
# -*- coding: utf-8 -*-

from application.app import db, ma
from .base import PrimaryModel 
from marshmallow import Schema, fields, INCLUDE, EXCLUDE

class PackageModel(PrimaryModel):
    __tablename__ = 'evm_package'

    app = db.Column(db.Integer)
    app_version = db.Column(db.String(200))
    package_info = db.Column(db.String(20))
    file_path = db.Column(db.String(200))
    source = db.Column(db.Integer)
    user_agent = db.Column(db.String(200))
    download_url = db.Column(db.String(200))
    ip = db.Column(db.String(128))
    geo_location = db.Column(db.String(200))
    operator = db.Column(db.String(50))

    # __table_args__ = (
    #     db.Index('idx_xxx', 'xxx', mysql_using='btree'),
    # )

    def __init__(self, app, app_version, package_info, file_path, source, user_agent, download_url, ip, geo_location, operator):
        self.app = app
        self.app_version = app_version
        self.package_info = package_info
        self.file_path = file_path
        self.source = source
        self.user_agent = user_agent
        self.download_url = download_url
        self.ip = ip
        self.geo_location = geo_location
        self.operator = operator

    def __repr__(self):
        return '<PackageModel %r>' % (self.app)

    def to_json(self):
        return {
            'app_version': self.app_version,
            'package_info': self.package_info,
            'file_path': self.file_path,
            'source': self.source,
            'user_agent': self.user_agent,
            'download_url': self.download_url,
            'ip': self.ip,
            'geo_location': self.geo_location,
            'operator': self.operator,
        }


class GetListPackageSchema(ma.SQLAlchemySchema):
    class Meta:
        # unknown = INCLUDE # 未知字段默认包含
        # unknown = EXCLUDE # 未知字段默认排除
        model = PackageModel

    page = fields.Integer(required=False)
    pageSize = fields.Integer(required=False)
    app = ma.auto_field()
    app_version = ma.auto_field()
    package_info = ma.auto_field()
    file_path = ma.auto_field()
    source = ma.auto_field()
    user_agent = ma.auto_field()
    download_url = ma.auto_field()
    ip = ma.auto_field()
    geo_location = ma.auto_field()
    operator = ma.auto_field()

getListPackageSchema = GetListPackageSchema()

class GetPackageSchema(ma.SQLAlchemySchema):
    class Meta:
        # unknown = INCLUDE # 未知字段默认包含
        # unknown = EXCLUDE # 未知字段默认排除
        model = PackageModel

    app = ma.auto_field()
    app_version = ma.auto_field()
    package_info = ma.auto_field()
    file_path = ma.auto_field()
    source = ma.auto_field()
    user_agent = ma.auto_field()
    download_url = ma.auto_field()
    ip = ma.auto_field()
    geo_location = ma.auto_field()
    operator = ma.auto_field()

getPackageSchema = GetPackageSchema()