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
This commit is contained in:
Daniel Cortes
2019-03-12 18:26:55 -03:00
parent 7b7fd0301d
commit 6437ea151e
8 changed files with 119 additions and 64 deletions

View File

@@ -1,11 +1,14 @@
from flask import Flask, Blueprint, flash, request, redirect, url_for from flask import Blueprint, flash, request, redirect, url_for, render_template
from flask import current_app, render_template, jsonify
from files.auth import admin_required from files.auth import admin_required
from files.models import Category, db from files.models import Category, FileType
bp = Blueprint('admin', __name__, url_prefix='/admin') bp = Blueprint('admin', __name__, url_prefix='/admin')
@bp.route('/') @bp.route('/')
@admin_required
def index(): def index():
return render_template('admin/index.html') return render_template(
'admin/index.html',
categories=Category.query.all(),
file_types=FileType.query.all())

View File

@@ -1,7 +1,8 @@
from flask import Blueprint, flash, request, redirect, url_for from flask import Blueprint, flash, request, redirect, url_for
from flask import render_template from flask import render_template
from files.auth import admin_required from files.auth import admin_required
from files.models import Category, db from files.models import Category, File, db
from files.files import _delete_file
bp = Blueprint('categories', __name__, url_prefix='/categories') bp = Blueprint('categories', __name__, url_prefix='/categories')
@@ -16,7 +17,7 @@ def index():
@admin_required @admin_required
def create(): def create():
if request.method == 'POST': if request.method == 'POST':
name = request.form['name'] name = request.form['category.create.name']
error = None error = None
if not name: if not name:
@@ -28,10 +29,31 @@ def create():
category = Category(name) category = Category(name)
db.session.add(category) db.session.add(category)
db.session.commit() db.session.commit()
return redirect(url_for('categories.index')) return redirect(url_for(
'categories.view',
category_id=category.id))
return render_template('categories/create.html') 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>') @bp.route('<int:category_id>')
def view(category_id): def view(category_id):
@@ -43,13 +65,20 @@ def view(category_id):
files=files) files=files)
@bp.route('/<int:id>/update') @bp.route('/delete', methods=['POST'])
@admin_required
def update():
pass
@bp.route('/<int:id>/delete')
@admin_required @admin_required
def delete(): def delete():
pass 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'))

View File

@@ -87,31 +87,31 @@ def index():
@admin_required @admin_required
def upload_file(): def upload_file():
if request.method == 'POST': if request.method == 'POST':
if 'file' not in request.files: if 'file.upload.file' not in request.files:
flash('No file part') flash('No file part')
return redirect(request.url) return redirect(request.url)
file = request.files['file'] file = request.files['file.upload.file']
if 'private' not in request.form: if 'file.upload.private' not in request.form:
private = None private = None
else: else:
private = request.form['private'] private = request.form['file.upload.private']
if 'category' not in request.form: if 'file.upload.category' not in request.form:
flash('No category selected') flash('No category selected')
return redirect(request.url) return redirect(request.url)
category = Category.query.get(request.form['category']) category = Category.query.get(request.form['file.upload.category'])
if category is None: if category is None:
flash('The category selected won\'t exists') flash('The category selected won\'t exists')
return redirect(request.url) return redirect(request.url)
if 'file_type' not in request.form: if 'file.upload.file_type' not in request.form:
flash('No file type selected') flash('No file type selected')
return redirect(request.url) return redirect(request.url)
file_type = FileType.query.get(request.form['file_type']) file_type = FileType.query.get(request.form['file.upload.file_type'])
if file_type is None: if file_type is None:
flash('The file type selected won\'t exists') flash('The file type selected won\'t exists')
return redirect(request.url) return redirect(request.url)

View File

@@ -3,5 +3,18 @@
{% block title %}admin{% endblock %} {% block title %}admin{% endblock %}
{% block content %} {% block content %}
<h4>Hi!</h4> <h3>Admin Panel</h3>
<hr>
<h4>Files</h4>
{% include 'files/upload.html' %}
<hr>
<h4>Categories</h4>
{% include 'categories/create.html' %}
{% include 'categories/rename.html' %}
{% include 'categories/delete.html' %}
{% endblock %} {% endblock %}

View File

@@ -1,12 +1,6 @@
{% extends 'base.html' %} <h5>Create category</h5>
<form action="{{ url_for('categories.create') }}" method="post">
{% block title %}categories/create{% endblock %} <label for="category.create.name">~/name</label>
<input type="text" class="u-full-width" name="category.create.name" id="category.create.name">
{% block content %} <input type="submit" class="button-primary" value="create">
<h3>Create category</h3> </form>
<form method="post">
<label for="name">~/name</label>
<input type="text" class="u-full-width" name="name" id="name">
<input type="submit" class="button-primary" value="create">
</form>
{% endblock %}

View File

@@ -0,0 +1,10 @@
<h5>Delete category</h5>
<form action="{{ url_for('categories.delete') }}" method="post">
<label for="category">~/category</label>
<select class="u-full-width" name="category.rename.category" id="category.rename.category">
{% for category in categories %}
<option value="{{ category.id }}">{{ category.name }}</option>
{% endfor %}
</select>
<input type="submit" class="button-primary" value="Delete">
</form>

View File

@@ -0,0 +1,12 @@
<h5>Rename category</h5>
<form action="{{ url_for('categories.rename') }}" method="post">
<label for="category">~/category</label>
<select class="u-full-width" name="category.rename.category" id="category.rename.category">
{% for category in categories %}
<option value="{{ category.id }}">{{ category.name }}</option>
{% endfor %}
</select>
<label for="category.rename.name">~/name</label>
<input type="text" class="u-full-width" name="category.rename.name" id="category.rename.name">
<input type="submit" class="button-primary" value="Rename">
</form>

View File

@@ -1,31 +1,25 @@
{% extends 'base.html' %} <h5>Upload File</h5>
{% block title %}upload{% endblock %} <form action="{{ url_for('files.upload_file' )}}" method="post" enctype="multipart/form-data">
<label for="file.upload.file">~/file</label>
<input type="file" class="u-full-width" name="file.upload.file" id="file.upload.file">
<label for="file.upload.category">~/category</label>
<select class="u-full-width" name="file.upload.category" id="file.upload.category">
{% for category in categories %}
<option value="{{ category.id }}">{{ category.name }}</option>
{% endfor %}
</select>
<label for="file.upload.file_type">~/file-type</label>
<select class="u-full-width" name="file.upload.file_type" id="file.upload.file_type">
{% for file_type in file_types %}
<option value="{{ file_type.id }}">{{ file_type.name }}</option>
{% endfor %}
</select>
<label for="file.upload.private">~/private</label>
<label>
<input type="checkbox" name="file.upload.private" id="file.upload.private">
</label>
{% block content %} <input type="submit" class="button-primary" value="upload">
<h4>Upload</h4> </form>
<form method="post" enctype="multipart/form-data">
<label for="file">~/file</label>
<input type="file" class="u-full-width" name="file" id="file">
<label for="category">~/category</label>
<select class="u-full-width" name="category" id="category">
{% for category in categories %}
<option value="{{ category.id }}">{{ category.name }}</option>
{% endfor %}
</select>
<label for="file_type">~/file-type</label>
<select class="u-full-width" name="file_type" id="file_type">
{% for file_type in file_types %}
<option value="{{ file_type.id }}">{{ file_type.name }}</option>
{% endfor %}
</select>
<label for="private">~/private</label>
<label>
<input type="checkbox" name="private" id="private">
</label>
<input type="submit" class="button-primary" value="upload">
</form>
{% endblock %}