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 current_app, render_template, jsonify
|
||||
from flask import Blueprint, flash, request, redirect, url_for, render_template
|
||||
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.route('/')
|
||||
@admin_required
|
||||
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 render_template
|
||||
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')
|
||||
|
||||
@@ -16,7 +17,7 @@ def index():
|
||||
@admin_required
|
||||
def create():
|
||||
if request.method == 'POST':
|
||||
name = request.form['name']
|
||||
name = request.form['category.create.name']
|
||||
error = None
|
||||
|
||||
if not name:
|
||||
@@ -28,10 +29,31 @@ def create():
|
||||
category = Category(name)
|
||||
db.session.add(category)
|
||||
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')
|
||||
|
||||
@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):
|
||||
@@ -43,13 +65,20 @@ def view(category_id):
|
||||
files=files)
|
||||
|
||||
|
||||
@bp.route('/<int:id>/update')
|
||||
@admin_required
|
||||
def update():
|
||||
pass
|
||||
|
||||
|
||||
@bp.route('/<int:id>/delete')
|
||||
@bp.route('/delete', methods=['POST'])
|
||||
@admin_required
|
||||
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
|
||||
def upload_file():
|
||||
if request.method == 'POST':
|
||||
if 'file' not in request.files:
|
||||
if 'file.upload.file' not in request.files:
|
||||
flash('No file part')
|
||||
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
|
||||
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')
|
||||
return redirect(request.url)
|
||||
|
||||
category = Category.query.get(request.form['category'])
|
||||
category = Category.query.get(request.form['file.upload.category'])
|
||||
if category is None:
|
||||
flash('The category selected won\'t exists')
|
||||
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')
|
||||
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:
|
||||
flash('The file type selected won\'t exists')
|
||||
return redirect(request.url)
|
||||
|
||||
@@ -3,5 +3,18 @@
|
||||
{% block title %}admin{% endblock %}
|
||||
|
||||
{% 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 %}
|
||||
|
||||
@@ -1,12 +1,6 @@
|
||||
{% extends 'base.html' %}
|
||||
|
||||
{% block title %}categories/create{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<h3>Create category</h3>
|
||||
<form method="post">
|
||||
<label for="name">~/name</label>
|
||||
<input type="text" class="u-full-width" name="name" id="name">
|
||||
<h5>Create category</h5>
|
||||
<form action="{{ url_for('categories.create') }}" method="post">
|
||||
<label for="category.create.name">~/name</label>
|
||||
<input type="text" class="u-full-width" name="category.create.name" id="category.create.name">
|
||||
<input type="submit" class="button-primary" value="create">
|
||||
</form>
|
||||
{% endblock %}
|
||||
</form>
|
||||
|
||||
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 %}
|
||||
|
||||
{% block content %}
|
||||
<h4>Upload</h4>
|
||||
|
||||
<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">
|
||||
<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_type">~/file-type</label>
|
||||
<select class="u-full-width" name="file_type" id="file_type">
|
||||
<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="private">~/private</label>
|
||||
<label for="file.upload.private">~/private</label>
|
||||
<label>
|
||||
<input type="checkbox" name="private" id="private">
|
||||
<input type="checkbox" name="file.upload.private" id="file.upload.private">
|
||||
</label>
|
||||
|
||||
<input type="submit" class="button-primary" value="upload">
|
||||
</form>
|
||||
{% endblock %}
|
||||
</form>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user