gcs-django/gurps_character/views.py
2024-08-10 14:26:12 +10:00

78 lines
2.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}
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):
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(request, 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
def character(request, uuid):
response = HttpResponse("Charcater")
return response
def campaign(request, uuid):
response = HttpResponse("Campaign")
return response