views.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from io import BytesIO
  2. from flask import (
  3. render_template,
  4. Blueprint,
  5. flash,
  6. send_file,
  7. request,
  8. Response
  9. )
  10. from sesivacka.dashboard.forms import FileForm
  11. from PyPDF2 import PdfFileReader, PdfFileWriter
  12. dashboard_blueprint = Blueprint(
  13. 'dashboard',
  14. __name__,
  15. template_folder='templates'
  16. )
  17. @dashboard_blueprint.route('/', methods=['GET', 'POST'])
  18. def index():
  19. """
  20. Render dashboard page.
  21. :return: rendered page
  22. """
  23. form = FileForm()
  24. if form.validate_on_submit():
  25. pdf_writer = PdfFileWriter()
  26. files = []
  27. for item in ('first_file', 'second_file'):
  28. files.extend(request.files.getlist(item))
  29. for pdf_stream in files:
  30. pdf_reader = PdfFileReader(pdf_stream)
  31. flash(pdf_reader.getDocumentInfo())
  32. for page in range(pdf_reader.getNumPages()):
  33. pdf_writer.addPage(pdf_reader.getPage(page))
  34. pdf = BytesIO()
  35. pdf_writer.write(pdf)
  36. flash(len(pdf.getvalue()))
  37. pdf.seek(0)
  38. # output_file = wrap_file(pdf.getvalue())
  39. return send_file(
  40. pdf,
  41. mimetype='application/pdf',
  42. as_attachment=True,
  43. attachment_filename=files[0].filename
  44. )
  45. return render_template(
  46. 'dashboard.jinja.html',
  47. form=form
  48. )