from flask import current_app, jsonify, request
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
from application.signal_manager import signalManager
from models.package import getListPackageSchema,getPackageSchema
from webcreator.response import ResponseCode, response_result

class PackageResourceList(Resource):
    def __init__(self):
        pass
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser = RequestParser()

    def get(self):
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser.add_argument("page", type=int, location="args", default=1)
        # self.parser.add_argument("pageSize", type=int, location="args", default=15)
        # args = self.parser.parse_args()

        try:
            json_payload = request.json
            print("========>", json_payload)
            data = getListPackageSchema.load(json_payload)
            result = signalManager.actionGetPackage.emit(**data)
            json_dumps = getListPackageSchema.dump(result)
            return jsonify(json_dumps), 200
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)

class PackageResource(Resource):
    def __init__(self):
        pass
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser = RequestParser()

    @jwt_required
    def get(self, uuid):
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser.add_argument("page", type=int, location="args", default=1)
        # self.parser.add_argument("pageSize", type=int, location="args", default=15)
        # args = self.parser.parse_args()

        try:
            json_payload = request.json
            print("========>", uuid, json_payload)
            data = getPackageSchema.load(json_payload)
            result = signalManager.actionGetPackage.emit(**data)
            json_dumps = getPackageSchema.dump(result)
            return jsonify(json_dumps), 200
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.DB_ERROR)