import json from django.shortcuts import render from django.http import HttpResponse, HttpResponseRedirect from django.urls import reverse from .models import GURPSCharacter from .forms import UploadFileForm def index(request): characters = GURPSCharacter.objects.all() context = {"characters":characters} if request.method == "POST": form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): handle_uploaded_file(request.FILES["file"]) return HttpResponseRedirect(reverse("index")) else: form = UploadFileForm() context['form'] = form return render(request, "characters/list.html", context) def details(request, uuid): character = GURPSCharacter.objects.get(uuid=uuid) context = {"character": character} #import bpdb;bpdb.set_trace() return render(request, "characters/embedded.html", context) def upload_file(request): if request.method == "POST": form = UploadFileForm(request.POST, request.FILES) if form.is_valid(): handle_uploaded_file(request.FILES["file"]) return HttpResponseRedirect("/success/url/") else: form = UploadFileForm() return render(request, "characters/upload.html", {"form": form}) def handle_uploaded_file(f): import bpdb;bpdb.set_trace() f.seek(0) # We read the file in the validator data = json.loads(f.read()) uuid = data['id'] name = data["profile"]["name"] try: character = GURPSCharacter.objects.get(uuid=uuid) character.details = data character.name = name character.save() except GURPSCharacter.DoesNotExist: character = GURPSCharacter(uuid=uuid, name=name, details = data) character.save() def download(irequest, uuid): mime_type = "application/x-gcs-gcs" character = GURPSCharacter.objects.get(uuid=uuid) response = HttpResponse(json.dumps(character.details), content_type=mime_type) response['Content-Disposition'] = "attachment; filename=%s.gcs" % character.name return response