device.py 4.81 KB
Newer Older
1 2 3
#!/usr/bin/env python
# -*- coding: utf_8 -*-

4
import traceback
wanli's avatar
wanli committed
5 6 7 8 9 10 11 12 13 14 15 16
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.device import  postDeviceSchema, deleteDeviceSchema, getListDeviceSchema, getListDevicesSchema, getDeviceSchema, putDeviceSchema
from webcreator.log import logger
from webcreator.response import ResponseCode, response_result

class DeviceResourceList(Resource):
    def __init__(self):
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
wanli's avatar
wanli committed
17
        self.parser = RequestParser()
wanli's avatar
wanli committed
18

wanli's avatar
wanli committed
19
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
20 21
    def get(self):
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
22 23
        self.parser.add_argument("name", type=str, location="args", required=False)
        self.parser.add_argument("imei", type=str, location="args", required=False)
wanli's avatar
wanli committed
24 25 26
        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()
wanli's avatar
wanli committed
27 28

        try:
29
            jwt = get_jwt_identity()
wanli's avatar
wanli committed
30 31 32 33 34 35 36 37
            data = dict()
            for key, value in args.items():
                if value != None:
                    data[key] = value
            # json_payload = request.json
            # logger.warn(json_payload)
            # data = getListDeviceSchema.load(json_payload)
            logger.info(data)
38
            result, message = signalManager.actionGetListDevice.emit(data, jwt)
wanli's avatar
wanli committed
39
            json_dumps = getListDeviceSchema.dump(result)
40 41
            if result:
                json_dumps = getListDevicesSchema.dump(result.items)
wanli's avatar
wanli committed
42
                return response_result(message, data=json_dumps, total=result.total, pageSize=args.pageSize)
43
            return response_result(message)
wanli's avatar
wanli committed
44 45
        except Exception as e:
            current_app.logger.error(e)
46
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
47 48 49 50

    @jwt_required(locations=["headers"])
    def post(self):
        try:
51
            jwt = get_jwt_identity()
wanli's avatar
wanli committed
52 53
            json_payload = request.json
            data = postDeviceSchema.load(json_payload)
54
            result, message = signalManager.actionPostDevice.emit(data, jwt)
55 56 57
            logger.info(result)
            logger.warn(message)
            return response_result(message)
wanli's avatar
wanli committed
58
        except Exception as e:
59
            traceback.print_exc()
wanli's avatar
wanli committed
60
            current_app.logger.error(e)
61
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80


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

    @jwt_required(locations=["headers"])
    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 = getDeviceSchema.load(json_payload)
81 82 83 84 85
            result, message = signalManager.actionGetDevice.emit(uuid, data)
            if result:
                json_dumps = getDeviceSchema.dump(result)
                return response_result(message, data=json_dumps)
            return response_result(message)
wanli's avatar
wanli committed
86 87
        except Exception as e:
            current_app.logger.error(e)
88
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
89 90 91 92 93 94 95 96


    @jwt_required(locations=["headers"])
    def put(self, uuid):
        try:
            json_payload = request.json
            print("========>", uuid, json_payload)
            data = putDeviceSchema.load(json_payload)
97 98 99 100
            result, message = signalManager.actionPutDevice.emit(uuid, data)
            logger.info(result)
            logger.info(message)
            return response_result(message, data=result)
wanli's avatar
wanli committed
101 102
        except Exception as e:
            current_app.logger.error(e)
103
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
104 105 106 107 108 109 110 111


    @jwt_required(locations=["headers"])
    def delete(self, uuid):
        try:
            json_payload = request.json
            print("========>", uuid, json_payload)
            # data = deleteDeviceSchema.load(json_payload)
112 113
            result, message = signalManager.actionDeleteDevice.emit(uuid)
            return response_result(message, data=result)
wanli's avatar
wanli committed
114 115
        except Exception as e:
            current_app.logger.error(e)
116
            return response_result(ResponseCode.HTTP_SERVER_ERROR)