En el, el administrador puede
-subir un nuevo archivo
-crear una categorio
-renombrar una categoria
- eliminar una categoria
A medida que me valla naciendo ire haciendo mas controles
85 lines
2.2 KiB
Python
85 lines
2.2 KiB
Python
from flask import Blueprint, flash, request, redirect, url_for
|
|
from flask import render_template
|
|
from files.auth import admin_required
|
|
from files.models import Category, File, db
|
|
from files.files import _delete_file
|
|
|
|
bp = Blueprint('categories', __name__, url_prefix='/categories')
|
|
|
|
|
|
@bp.route('/')
|
|
def index():
|
|
categories = Category.query.all()
|
|
return render_template('categories/index.html', categories=categories)
|
|
|
|
|
|
@bp.route('/create', methods=['GET', 'POST'])
|
|
@admin_required
|
|
def create():
|
|
if request.method == 'POST':
|
|
name = request.form['category.create.name']
|
|
error = None
|
|
|
|
if not name:
|
|
error = "Name is required"
|
|
|
|
if error is not None:
|
|
flash(error)
|
|
else:
|
|
category = Category(name)
|
|
db.session.add(category)
|
|
db.session.commit()
|
|
return redirect(url_for(
|
|
'categories.view',
|
|
category_id=category.id))
|
|
|
|
return render_template('categories/create.html')
|
|
|
|
@bp.route('/rename', methods=['POST'])
|
|
@admin_required
|
|
def rename():
|
|
name = request.form['category.rename.name']
|
|
|
|
if not name:
|
|
flash('No valid name')
|
|
return redirect(request.url)
|
|
|
|
if 'category.rename.category' not in request.form:
|
|
flash('No category selected')
|
|
return redirect(request.url)
|
|
|
|
category = Category.query.get(request.form['category.rename.category'])
|
|
category.name = name
|
|
db.session.commit()
|
|
|
|
return redirect(url_for('categories.view', category_id=category.id))
|
|
|
|
|
|
@bp.route('<int:category_id>')
|
|
def view(category_id):
|
|
category = Category.query.get(category_id)
|
|
files = category.files
|
|
return render_template(
|
|
'categories/view.html',
|
|
category=category,
|
|
files=files)
|
|
|
|
|
|
@bp.route('/delete', methods=['POST'])
|
|
@admin_required
|
|
def delete():
|
|
if 'category.rename.category' not in request.form:
|
|
flash('No category selected')
|
|
return redirect(request.url)
|
|
|
|
category = Category.query.get(request.form['category.rename.category'])
|
|
|
|
files = File.query.filter_by(category_id=category.id).all()
|
|
for file in files:
|
|
_delete_file(file)
|
|
|
|
db.session.delete(category)
|
|
db.session.commit()
|
|
|
|
return redirect(url_for('categories.index'))
|