暫無描述

views.py 1.1KB

12345678910111213141516171819202122232425262728
  1. from base64 import b64encode
  2. from datetime import datetime
  3. from django.http import HttpResponse, HttpResponseBadRequest
  4. from django.shortcuts import render
  5. from django.views import View
  6. from .forms import CrosswordForm
  7. from .xword import extract_crossword_grid, grid_to_png
  8. class HomeView(View):
  9. def get(self, request, *args, **kwargs):
  10. return render(request, 'home/index.html', {'form': CrosswordForm()})
  11. def post(self, request, *args, **kwargs):
  12. form = CrosswordForm(request.POST, request.FILES)
  13. if not form.is_valid():
  14. return HttpResponseBadRequest('Invalid form data')
  15. warnings, grid, num_rows, num_cols, block_img = extract_crossword_grid(
  16. form.cleaned_data['file'].temporary_file_path(),
  17. filter_colours=False
  18. )
  19. image = grid_to_png(grid, num_rows, num_cols)
  20. return render(request, 'home/output.html', {
  21. 'warnings': warnings,
  22. 'image_file_name': 'xword_{}.png'.format(datetime.now().strftime('%Y%m%d_%H%M%S')),
  23. 'image_url': 'data:image/png;base64,' + b64encode(image).decode()
  24. })