response.py
1.03 KB
import enum
from django.http import JsonResponse
from .named_enum import NamedEnum
def res_content(meta_status, msg, data=None):
if data is None:
data = {}
return {'code': meta_status, 'message': msg, 'data': data}
@enum.unique
class MetaStatus(NamedEnum):
SUCCESS = (0, 'success')
NEED_LOGIN = (1, 'need login')
INVALID_PARAMS = (2, 'invalid params')
INTERNAL_ERROR = (3, 'internal error')
NOT_EXIST = (4, 'object not exist')
ASYNC_WAIT = (5, 'async wait')
NO_PERMISSION = (6, 'no permission')
ILLEGAL_OPERATION = (7, 'illegal operation')
class APIResponse(JsonResponse):
def __init__(self, meta_status, data=None, msg='', json_dumps_params=None, **kwargs):
data = res_content(meta_status, msg, data)
json_dumps_params = json_dumps_params or {'ensure_ascii': False}
kwargs['json_dumps_params'] = json_dumps_params
super().__init__(data, **kwargs)
def ok(**kwargs):
return APIResponse(MetaStatus.SUCCESS.value, msg=MetaStatus.SUCCESS.verbose_name, **kwargs)