package.py 4.1 KB
Newer Older
1 2
#!/usr/bin/env python
# -*- coding: utf_8 -*-
wanli's avatar
wanli committed
3 4

from application.app import db, ma
5
from .base import PrimaryModel
wanli's avatar
wanli committed
6 7 8 9 10
from marshmallow import Schema, fields, INCLUDE, EXCLUDE

class PackageModel(PrimaryModel):
    __tablename__ = 'evm_package'

wanli's avatar
wanli committed
11 12 13
    app = db.Column(db.Integer, nullable = False)
    app_version = db.Column(db.String(200), nullable = False)
    package_info = db.Column(db.String(20), nullable = False)
14 15 16 17 18 19 20 21
    algorithm = db.Column(db.String(50), nullable = False, default = 'zlib')
    file_path = db.Column(db.String(200), nullable = False, default = '')
    source = db.Column(db.Integer, nullable = False, default = 0)
    user_agent = db.Column(db.String(200), nullable = False, default = '')
    download_url = db.Column(db.String(200), nullable = False, default = '')
    ip = db.Column(db.String(128), nullable = False, default = '127.0.0.1')
    geo_location = db.Column(db.String(200), nullable = False, default = '')
    operator = db.Column(db.String(50), nullable = False, default = '')
wanli's avatar
wanli committed
22 23 24 25 26

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

27
    def __init__(self, app, app_version, package_info, algorithm='zlib', file_path='', source=0, user_agent='', download_url='', ip='127.0.0.1', geo_location='', operator='', create_by=None, create_at=None, update_by=None, update_at=None, remarks=""):
wanli's avatar
wanli committed
28 29 30
        self.app = app
        self.app_version = app_version
        self.package_info = package_info
31
        self.algorithm = algorithm
wanli's avatar
wanli committed
32 33 34 35 36 37 38
        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
wanli's avatar
wanli committed
39 40
        self.create_by = create_by
        self.create_at = create_at
41
        self.update_by = update_by
wanli's avatar
wanli committed
42
        self.update_at = update_at
43
        self.remarks = remarks
wanli's avatar
wanli committed
44 45 46 47

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

48
    def to_dict(self):
49 50 51 52
        source = 'Frontend'
        if self.source == 1:
            source = 'API'

wanli's avatar
wanli committed
53
        return {
54
            'uuid': self.uuid,
wanli's avatar
wanli committed
55 56
            'app_version': self.app_version,
            'package_info': self.package_info,
57
            'algorithm': self.algorithm,
wanli's avatar
wanli committed
58
            'file_path': self.file_path,
59
            'source': source,
wanli's avatar
wanli committed
60 61 62 63 64
            'user_agent': self.user_agent,
            'download_url': self.download_url,
            'ip': self.ip,
            'geo_location': self.geo_location,
            'operator': self.operator,
65 66 67
            'remarks': self.remarks,
            "create_at": self.create_at.strftime("%Y-%m-%d %H:%M:%S") if self.create_at else None,
            "update_at": self.update_at.strftime("%Y-%m-%d %H:%M:%S") if self.update_at else None,
wanli's avatar
wanli committed
68 69 70 71 72 73
        }


class GetListPackageSchema(ma.SQLAlchemySchema):
    class Meta:
        # unknown = INCLUDE # 未知字段默认包含
wanli's avatar
wanli committed
74
        unknown = EXCLUDE # 未知字段默认排除
wanli's avatar
wanli committed
75 76
        model = PackageModel

77 78
    id = fields.Integer(required=False, nullable=True)
    uuid = fields.String(required=False, nullable=True)
wanli's avatar
wanli committed
79 80
    page = fields.Integer(required=False)
    pageSize = fields.Integer(required=False)
81
    app = fields.String(required=False)
wanli's avatar
wanli committed
82
    app_version = ma.auto_field()
83
    package_info = fields.String(required=False)
wanli's avatar
wanli committed
84 85 86 87 88
    file_path = ma.auto_field()
    source = ma.auto_field()
    user_agent = ma.auto_field()
    download_url = ma.auto_field()
    ip = ma.auto_field()
89
    geo_location = fields.String(required=False)
wanli's avatar
wanli committed
90 91 92
    operator = ma.auto_field()

getListPackageSchema = GetListPackageSchema()
93
getListPackagesSchema = GetListPackageSchema(many=True)
wanli's avatar
wanli committed
94 95 96 97

class GetPackageSchema(ma.SQLAlchemySchema):
    class Meta:
        # unknown = INCLUDE # 未知字段默认包含
wanli's avatar
wanli committed
98
        unknown = EXCLUDE # 未知字段默认排除
wanli's avatar
wanli committed
99 100 101 102 103 104 105 106 107 108 109 110 111 112
        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()