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:
@@ -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())
|
||||||
|
|||||||
@@ -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'))
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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 %}
|
||||||
|
|||||||
@@ -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 %}
|
|
||||||
|
|||||||
10
files/templates/categories/delete.html
Normal file
10
files/templates/categories/delete.html
Normal 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>
|
||||||
12
files/templates/categories/rename.html
Normal file
12
files/templates/categories/rename.html
Normal 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>
|
||||||
@@ -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 %}
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user