1234567891011121314151617181920212223242526272829303132333435 |
- import json
- from ariadne import (
- QueryType, graphql_sync, load_schema_from_path, make_executable_schema
- )
- from django.conf import settings
- from django.http import HttpResponseBadRequest, JsonResponse
- from django.shortcuts import render
- from django.views.decorators.csrf import csrf_exempt
- from .schema import schema
- @csrf_exempt
- def graphql_view(request):
- if request.method == "GET":
- return render(request, "misago/admin/graphql_playground.html")
- if request.method != "POST":
- return HttpResponseBadRequest()
- if request.content_type != "application/json":
- return HttpResponseBadRequest()
- try:
- data = json.loads(request.body)
- except ValueError:
- return HttpResponseBadRequest()
- success, result = graphql_sync(
- schema, data, context_value=request, debug=settings.DEBUG
- )
- status_code = 200 if success else 400
- return JsonResponse(result, status=status_code)
|