Files
dromara--domain-admin/domain_admin/utils/flask_ext/flask_app.py
T
2026-07-13 12:31:34 +08:00

53 lines
1.3 KiB
Python

# -*- coding: utf-8 -*-
from __future__ import print_function, unicode_literals, absolute_import, division
import six
from flask import Flask, Response
from peewee import ModelSelect, Model
from domain_admin.compat import Iterator
from domain_admin.utils.flask_ext.api_result import ApiResult
from domain_admin.utils.flask_ext.request import Request
class FlaskApp(Flask):
"""
扩展Flask
"""
# Flask <=2.0.0
# json_encoder = JSONEncoder
# Flask > 2.0.0
# json_provider_class = JSONProvider
request_class = Request
# 需要转为json的类型
json_data_class = (
ModelSelect,
Model,
Iterator,
list,
dict,
six.integer_types,
six.text_type
)
def make_response(self, rv):
if isinstance(rv, self.json_data_class) or rv is None:
rv = ApiResult.success(rv)
if isinstance(rv, ApiResult):
return Response(rv.to_json(), content_type='application/json;charset=utf-8')
return super(FlaskApp, self).make_response(rv)
def get(self, rule, **options):
options.setdefault('methods', ['GET'])
return super(FlaskApp, self).route(rule, **options)
def post(self, rule, **options):
options.setdefault('methods', ['POST'])
return super(FlaskApp, self).route(rule, **options)