Added filetype support

This commit is contained in:
Daniel Cortes
2019-03-12 00:51:29 -03:00
parent f12fe5b46d
commit 77c901f4f0
5 changed files with 97 additions and 19 deletions

View File

@@ -5,7 +5,7 @@ from flask import Flask, Blueprint, flash, request, redirect, url_for, current_a
from werkzeug.utils import secure_filename
from werkzeug.exceptions import abort
from files.models import db, File, Category, User
from files.models import db, File, Category, User, FileType
from files.auth import admin_required
@@ -21,7 +21,7 @@ def _get_path_in_upload(filename):
return os.path.join(current_app.config['UPLOAD_FOLDER'], filename)
def _save_file(file, private, category):
def _save_file(file, private, category, file_type):
if private is None:
is_private = 0
else:
@@ -30,7 +30,7 @@ def _save_file(file, private, category):
filename = secure_filename(file.filename)
file.save(_get_path_in_upload(filename))
f = File(filename, is_private, category.id)
f = File(filename, is_private, category.id, file_type.id)
db.session.add(f)
db.session.commit()
@@ -85,23 +85,33 @@ def upload_file():
flash('The category selected won\'t exists')
return redirect(request.url)
if 'file_type' not in request.form:
flash('No file type selected')
return redirect(request.url)
file_type = FileType.query.get(request.form['file_type'])
if file_type is None:
flash('The file type selected won\'t exists')
return redirect(request.url)
if file.filename == '':
flash('No seleted file')
return redirect(request.url)
if file:
_save_file(file, private, category)
_save_file(file, private, category, file_type)
return redirect(url_for('files.index'))
return render_template('files/upload.html', categories=Category.query.all())
return render_template('files/upload.html', categories=Category.query.all(), file_types=FileType.query.all())
@bp.route('/preview/<int:id>')
def preview_file(id):
file = File.query.get(id)
categories = Category.query.all()
file_types = FileType.query.all()
if (file.private == 1 and g.user is not None) or (file.private == 0):
return render_template('files/preview.html', file=file, categories=categories)
return render_template('files/preview.html', file=file, categories=categories, file_types=file_types)
else:
return abort(404)
@@ -144,6 +154,24 @@ def recategorize(id):
return redirect(url_for('files.preview_file', id=file.id))
@bp.route('/retype/<int:id>', methods=['POST'])
@admin_required
def retype(id):
file = File.query.get(id)
if 'new_type' not in request.form:
flash('No type selected')
return redirect(request.url)
new_type = FileType.query.get(request.form['new_type'])
if new_type is None:
flash('The file type selected won\'t exists')
return redirect(request.url)
file.file_type_id= new_type.id
db.session.commit()
return redirect(url_for('files.preview_file', id=file.id))
@bp.route('/delete/<int:id>', methods=['POST'])
@admin_required