gcs-django/gurps_character/views.py
2024-06-26 14:29:06 +10:00

67 lines
2 KiB
Python

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