import enum from django.http import JsonResponse from .named_enum import NamedEnum def res_content(meta_status, msg, data=None): res = {'code': meta_status, 'message': msg} if data is not None: res['data'] = data return res @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') NEED_UPDATE = (8, 'need update') 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) def need_update(**kwargs): return APIResponse(MetaStatus.NEED_UPDATE.value, msg=MetaStatus.NEED_UPDATE.verbose_name, **kwargs)