You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
2.0 KiB
Python

from secrets import token_urlsafe
from pathlib import Path
from quart import Blueprint, render_template, request, redirect, url_for, flash, send_from_directory
from flask_login import login_required, current_user
from werkzeug.utils import secure_filename
from flipbook.models import Upload
from flipbook.helpers import allowed_file
from flipbook import config
bp = Blueprint('manage', 'manage', url_prefix='/manage')
@bp.route('')
@login_required
async def index():
return await render_template('manage.html')
@bp.route('/upload', methods=['GET', 'POST'])
@login_required
async def upload():
if request.method == 'POST':
data = await request.form
file = await request.files
post_title = data['title']
if 'file' not in request.files:
await flash('You didn\'t upload a caliente meme, bro! You\'re fuckin up!', 'is-danger')
return await redirect(request.url)
file = request.files['file']
if file.filename == '':
await flash('You didn\'t upload a caliente meme, bro! You\'re fuckin up!', 'is-danger')
return await redirect(request.url)
if post_title == '':
await flash('You didn\'t give your meme a spicy title, bro! You\'re fuckin up!', 'is-danger')
return await redirect(request.url)
if file and allowed_file(file.filename):
filename = '{}-{}'.format(
token_urlsafe(12),
secure_filename(file.filename)
)
file.save(Path(config.UPLOADS_PATH, filename))
upload = Upload(
token_id=0,
title=post_title,
image_name=filename,
text=data['text'],
wallet=current_user,
)
upload.save()
# upload.save_thumbnail()
await flash('Uploaded successfully!', 'is-success')
return redirect(url_for('manage.index'))
return render_template('upload.html')