Files
flask-files/files/categories.py
Daniel Cortes 6437ea151e Creado panel de administracion
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
2019-03-12 18:26:55 -03:00

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'))