display messages in editor api

This commit is contained in:
Laura Klünder 2018-11-21 22:01:53 +01:00
parent badda67549
commit 52e684ced5

View file

@ -5,6 +5,8 @@ from typing import Optional
from django.contrib import messages from django.contrib import messages
from django.contrib.auth.views import redirect_to_login from django.contrib.auth.views import redirect_to_login
from django.contrib.messages import DEFAULT_TAGS as DEFAULT_MESSAGE_TAGS
from django.contrib.messages import get_messages
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.http import HttpResponse, HttpResponseNotModified, HttpResponseRedirect from django.http import HttpResponse, HttpResponseNotModified, HttpResponseRedirect
from django.shortcuts import redirect, render from django.shortcuts import redirect, render
@ -197,7 +199,19 @@ class NoAPIHybridResponse(Exception):
def call_api_hybrid_view_for_api(func, request, *args, **kwargs): def call_api_hybrid_view_for_api(func, request, *args, **kwargs):
response = func(request, *args, **kwargs) response = func(request, *args, **kwargs)
if isinstance(response, APIHybridResponse): if isinstance(response, APIHybridResponse):
api_response = APIResponse(response.get_api_response(request), status=response.status_code) result = OrderedDict(response.get_api_response(request))
messages = []
for message in get_messages(request):
messages.append({
'level': DEFAULT_MESSAGE_TAGS[message.level],
'message': message.message
})
if messages:
result['messages'] = messages
result.move_to_end('messages', last=False)
api_response = APIResponse(result, status=response.status_code)
if response.etag: if response.etag:
api_response['ETag'] = response.etag api_response['ETag'] = response.etag
if response.last_modified: if response.last_modified: