from base64 import b64encode from datetime import datetime from django.http import HttpResponse, HttpResponseBadRequest from django.shortcuts import render from django.views import View from .forms import CrosswordForm from .xword import extract_crossword class HomeView(View): def get(self, request, *args, **kwargs): return render(request, 'home/index.html', {'form': CrosswordForm()}) def post(self, request, *args, **kwargs): form = CrosswordForm(request.POST, request.FILES) if not form.is_valid(): return HttpResponseBadRequest('Invalid form data') image, warnings = extract_crossword( form.cleaned_data['file'].temporary_file_path(), filter_colours=False ) return render(request, 'home/output.html', { 'warnings': warnings, 'image_file_name': 'xword_{}.png'.format(datetime.now().strftime('%Y%m%d_%H%M%S')), 'image_url': 'data:image/png;base64,' + b64encode(image).decode() })