Нема описа

views.py 1.2KB

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