1234567891011121314151617181920212223242526272829303132333435363738 |
- 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)
|