from django.shortcuts import render, get_object_or_404, HttpResponse, HttpResponseRedirect from call.forms import CreatureForm from django.views import generic from .models import Creature from django.urls import reverse # from io import StringIO from PIL import Image from random import randint, seed def index(request): """ Main page of call, with 2bitcharactergenerator, receives POST to save a new creature """ if request.method == "POST": print ("post", request.POST) print ("files", request.FILES) form = CreatureForm(request.POST, request.FILES) # form = CreatureFormNo(request.POST, request.FILES) # formset = AuthorFormSet(request.POST, request.FILES) if form.is_valid(): print ("FORM IS VALID") form.save() # return HttpResponseRedirect(reverse("statement", args=(form.instance.id,))) # do something. return HttpResponse("ok") else: print ("FORM NOT VALID") else: form = CreatureForm() return render(request, "call/index.html", {"form": form}) class Guestbook(generic.ListView): """ public guestbook page """ paginate_by = 20 model=Creature template_name = "call/guestbook.html" queryset = Creature.objects.filter(published=True) class CreatureList(generic.ListView): """ public guestbook page """ paginate_by = 20 model=Creature template_name = "call/creature_list.html" queryset = Creature.objects.filter(published=True) def creature_detail(request, creature_id): """ Generates Pixelated PNG of creature """ context = {} context['creature'] = get_object_or_404(Creature, pk=creature_id) context['cell'] = int(request.GET.get("cell", "0")) context['scale'] = int(request.GET.get("scale", "6")) context['width'] = int(request.GET.get("width", "432")) context['height'] = int(request.GET.get("height", "768")) seed(creature_id) context['bg_hue'] = randint(0, 360) context['bg_sat'] = 100 context['bg_lightness'] = randint(50, 100) # context['bg_hue'] = 0 # randint(0, 360) # context['bg_sat'] = 0 # 100 # context['bg_lightness'] = 66 # randint(50, 100) return render(request, "call/creature_detail.html", context) def creature_frame (request, creature_id): """ Generates Pixelated PNG of creature """ cell = int(request.GET.get("cell", "0")) creature = get_object_or_404(Creature, pk=creature_id) im = Image.open(creature.image.path) response = HttpResponse(content_type="image/png") scale = int(request.GET.get("scale", "6")) # 24 # limit from 1-100 scale = max(1, min(100, scale)) im = im.crop((16*cell, 0, (16*cell)+16, 16)) w, h = im.size im = im.resize((w*scale,h*scale), resample=Image.NEAREST) im.save(response, "PNG") #im_with_background = Image.new("RGBA", (w*scale, h*scale), (128,0,0)) #im_with_background.paste(im, mask=im) #im_with_background.save(response, "PNG") return response def call_block(request): """ Call text for animation """ context = {} context['width'] = int(request.GET.get("width", "432")) context['height'] = int(request.GET.get("height", "768")) # context['bg_hue'] = randint(0, 360) # context['bg_sat'] = 100 # context['bg_lightness'] = randint(50, 100) context['bg_hue'] = 0 # randint(0, 360) context['bg_sat'] = 0 # 100 context['bg_lightness'] = 66 # randint(50, 100) return render(request, "call/call_block.html", context)