routes.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import os
  2. import datetime
  3. from flask import render_template, redirect, url_for
  4. from werkzeug import secure_filename
  5. from flask_app import app, db, models
  6. from forms import JobForm
  7. from utils import generate_uniqid
  8. import tasks
  9. @app.route('/', methods=['GET', 'POST'])
  10. def home():
  11. """Render website's home page."""
  12. form = JobForm()
  13. if form.validate_on_submit():
  14. uniqid = generate_uniqid(10)
  15. jobdir = app.config['UPLOAD_FOLDER'] + "/" + uniqid + "/"
  16. os.makedirs(jobdir)
  17. mp3_filename = secure_filename(form.mp3.data.filename)
  18. form.mp3.data.save(jobdir + uniqid + ".mp3")
  19. pic_filename = secure_filename(form.pic.data.filename)
  20. _, pic_extension = os.path.splitext(pic_filename)
  21. form.pic.data.save(jobdir + uniqid + pic_extension)
  22. task = tasks.make_video.apply_async(
  23. countdown=app.config['PHOSIC_TASK_DELAY'],
  24. expires=app.config['PHOSIC_TASK_MAX_EXECUTION_TIME']
  25. )
  26. # Create database item
  27. job = models.Job(
  28. uniqid=uniqid,
  29. task_uuid=task.id,
  30. email=form.email.data,
  31. created=datetime.datetime.utcnow(),
  32. mp3_name=mp3_filename[:255],
  33. pic_name=pic_filename[:255],
  34. )
  35. db.session.add(job)
  36. db.session.commit()
  37. return redirect(url_for('jobs', job_id=job.uniqid))
  38. return render_template('home.html', form=form)
  39. @app.route('/jobs/<job_id>')
  40. def jobs(job_id):
  41. """Render the website's about page."""
  42. job = models.Job.query.filter_by(uniqid=job_id).first_or_404()
  43. return render_template('job.html', job=job)
  44. @app.route('/about/')
  45. def about():
  46. """Render the website's about page."""
  47. return render_template('about.html')
  48. @app.route('/contact/')
  49. def contact():
  50. """Render website's home page."""
  51. return render_template('contact.html')
  52. @app.route('/<file_name>.txt')
  53. def send_text_file(file_name):
  54. """Send your static text file."""
  55. file_dot_text = file_name + '.txt'
  56. return app.send_static_file(file_dot_text)
  57. @app.after_request
  58. def add_header(response):
  59. """
  60. Add headers to both force latest IE rendering engine or Chrome Frame.
  61. """
  62. response.headers['X-UA-Compatible'] = 'IE=Edge,chrome=1'
  63. return response
  64. @app.errorhandler(404)
  65. def page_not_found(error):
  66. """Custom 404 page."""
  67. return render_template('404.html'), 404