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.
55 lines
1.8 KiB
Python
55 lines
1.8 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():
|
|
uploads = Upload.select().where(
|
|
Upload.wallet == current_user
|
|
)
|
|
return await render_template(
|
|
'manage.html',
|
|
uploads=uploads
|
|
)
|
|
|
|
@bp.route('/upload', methods=['GET', 'POST'])
|
|
@login_required
|
|
async def upload():
|
|
if request.method == 'POST':
|
|
data = await request.form
|
|
file = list((await request.files).items())[0][1]
|
|
if file.filename == '':
|
|
await flash('Must upload an image.', 'is-danger')
|
|
return redirect(request.url)
|
|
if data['title'] == '':
|
|
await flash('Must set a title', 'is-danger')
|
|
return redirect(request.url)
|
|
if file and allowed_file(file.filename):
|
|
filename = '{}-{}'.format(
|
|
token_urlsafe(12),
|
|
secure_filename(file.filename)
|
|
)
|
|
await file.save(Path(config.UPLOADS_PATH, filename))
|
|
upload = Upload(
|
|
token_id=0,
|
|
title=data['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') |