view.tpl 6.67 KB
Newer Older
1 2 3
#!/usr/bin/env python
# -*- coding: utf_8 -*-

wanli's avatar
wanli committed
4
from flask import current_app, jsonify, request
wanli's avatar
wanli committed
5 6 7
from flask_restful import Resource
from flask_restful.reqparse import RequestParser
from flask_jwt_extended import ( jwt_required, get_jwt_identity )
wanli's avatar
wanli committed
8 9
from application.signal_manager import signalManager
{%- set pipe = joiner(",") %}
10
{%- if "restful" not in config.get("view") or config.get("view").get("restful", None) %}
wanli's avatar
wanli committed
11
from models.{{ config['name'] }} import {% for k, v in config["view"].items() -%}
12 13
{{ pipe() }} {{ k }}{{ config['name'] | capitalize }}Schema{% if k == "getList" %}{{ pipe() }} {{ k }}{{ config['name'] | capitalize }}sSchema{% endif %}
{%- endif %}
14
{%- endfor %}
wanli's avatar
wanli committed
15
from webcreator.log import logger
wanli's avatar
wanli committed
16
from webcreator.response import ResponseCode, response_result
17 18 19 20 21
{#
    判断是否是标准的RESTful请求方式,默认为RESTful请求方式
#}
{% if config["view"].get("restful", None) == None %}
class {{ config['name'] | capitalize }}ResourceList(Resource):
wanli's avatar
wanli committed
22
    def __init__(self):
wanli's avatar
wanli committed
23 24 25
        pass
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser = RequestParser()
wanli's avatar
wanli committed
26

wanli's avatar
wanli committed
27 28
{%- if config["view"]["getList"] %}
{% if config["view"]["getList"]["auth"] %}
29
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
30
{%- endif %}
wanli's avatar
wanli committed
31
    def get(self):
wanli's avatar
wanli committed
32 33 34 35
        # 特殊参数,即不是从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()
wanli's avatar
wanli committed
36 37

        try:
wanli's avatar
wanli committed
38
            json_payload = request.json
wanli's avatar
wanli committed
39
            logger.warn(json_payload)
40
            data = getList{{ config['name'] | capitalize }}Schema.load(json_payload)
41
            result, message = signalManager.actionGetlist{{ config["name"] | capitalize }}.emit(data)
42
            json_dumps = getList{{ config['name'] | capitalize }}Schema.dump(result)
43
            if result:
44
                json_dumps = getList{{ config['name'] | capitalize }}sSchema.dump(result.items)
45
                logger.warn(json_dumps)
46 47
                return response_result(message, data=json_dumps, count=result.total)
            return response_result(message)
wanli's avatar
wanli committed
48 49
        except Exception as e:
            current_app.logger.error(e)
50
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
51 52 53 54
{%- endif %}

{%- if config["view"]["post"] %}
{% if config["view"]["post"]["auth"] %}
55
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
56 57 58 59
{%- endif %}
    def post(self):
        try:
            json_payload = request.json
60 61
            data = post{{ config['name'] | capitalize }}Schema.load(json_payload)
            result, message = signalManager.actionPost{{ config["name"] | capitalize }}.emit(data)
62 63 64
            logger.info(result)
            logger.warn(message)
            return response_result(message)
wanli's avatar
wanli committed
65 66
        except Exception as e:
            current_app.logger.error(e)
67
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
68 69
{% endif %}

70
class {{ config['name'] | capitalize }}Resource(Resource):
wanli's avatar
wanli committed
71 72 73 74 75 76 77
    def __init__(self):
        pass
        # 特殊参数,即不是从json获取参数的接口,可以将这个注释打开
        # self.parser = RequestParser()

{%- if config["view"]["get"] %}
{% if config["view"]["get"]["auth"] %}
78
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
79
{%- endif %}
wanli's avatar
wanli committed
80
    def get(self, uuid):
wanli's avatar
wanli committed
81 82 83 84 85 86 87
        # 特殊参数,即不是从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
wanli's avatar
wanli committed
88
            print("========>", uuid, json_payload)
89 90
            data = get{{ config['name'] | capitalize }}Schema.load(json_payload)
            result, message = signalManager.actionGet{{ config["name"] | capitalize }}.emit(uuid, data)
91
            if result:
92
                json_dumps = get{{ config['name'] | capitalize }}Schema.dump(result)
93 94
                return response_result(message, data=json_dumps)
            return response_result(message)
wanli's avatar
wanli committed
95 96
        except Exception as e:
            current_app.logger.error(e)
97
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
98 99 100 101
{% endif %}

{%- if config["view"]["put"] %}
{% if config["view"]["put"]["auth"] %}
102
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
103
{%- endif %}
wanli's avatar
wanli committed
104
    def put(self, uuid):
wanli's avatar
wanli committed
105 106
        try:
            json_payload = request.json
wanli's avatar
wanli committed
107
            print("========>", uuid, json_payload)
108 109
            data = put{{ config['name'] | capitalize }}Schema.load(json_payload)
            result, message = signalManager.actionPut{{ config["name"] | capitalize }}.emit(uuid, data)
110 111 112
            logger.info(result)
            logger.info(message)
            return response_result(message, data=result)
wanli's avatar
wanli committed
113 114
        except Exception as e:
            current_app.logger.error(e)
115
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
wanli's avatar
wanli committed
116 117 118 119
{% endif %}

{%- if config["view"]["delete"] %}
{% if config["view"]["delete"]["auth"] %}
120
    @jwt_required(locations=["headers"])
wanli's avatar
wanli committed
121
{%- endif %}
wanli's avatar
wanli committed
122
    def delete(self, uuid):
wanli's avatar
wanli committed
123 124
        try:
            json_payload = request.json
wanli's avatar
wanli committed
125
            print("========>", uuid, json_payload)
126 127
            # data = delete{{ config['name'] | capitalize }}Schema.load(json_payload)
            result, message = signalManager.actionDelete{{ config["name"] | capitalize }}.emit(uuid)
128
            return response_result(message, data=result)
wanli's avatar
wanli committed
129 130
        except Exception as e:
            current_app.logger.error(e)
131 132
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
{% endif %}
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
{%- elif "restful" in config.get("view") and config.get("view").get("restful") == False %}
{%- for route in config.get("view").get("routes", []) %}
class {{ route.get("name") | capitalize }}(Resource):
    def __init__(self):
        self.parser = RequestParser()
        
    def {{ route.get("method") }}(self):
    {%- for r in route.get("params", []) %}
        self.parser.add_argument("{{ r.get("name") }}", type={{ r.get("dataType") | getDataType }}, location="{{ r.get('location') }}", {% if "default" in r %}default={{ r.get("default") | getVariableString }}{% endif %}, required={% if r.get("required") %}True{% else %}False{% endif %})
    {%- endfor %}
        args = self.parser.parse_args()

        try:
            print("========>", args)
            result, message = signalManager.action{{ route.get("name") | capitalize }}.emit(args)
            return response_result(message, data=result)
        except Exception as e:
            current_app.logger.error(e)
            return response_result(ResponseCode.HTTP_SERVER_ERROR)
{% endfor %}
{% endif %}