123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- import json
- from ariadne import QueryType, graphql_sync, 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
- type_defs = """
- type Query {
- hello: String!
- }
- """
- query = QueryType()
- @query.field("hello")
- def resolve_hello(*_):
- return "Hello Misago Admin!"
- schema = make_executable_schema(type_defs, query)
- @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)
|