From 6437ea151ef3b7ba4438b0e5837262f44c4ca93b Mon Sep 17 00:00:00 2001 From: Daniel Cortes Date: Tue, 12 Mar 2019 18:26:55 -0300 Subject: [PATCH] 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 --- files/admin.py | 11 ++++-- files/categories.py | 51 ++++++++++++++++++++------ files/files.py | 16 ++++---- files/templates/admin/index.html | 15 +++++++- files/templates/categories/create.html | 18 +++------ files/templates/categories/delete.html | 10 +++++ files/templates/categories/rename.html | 12 ++++++ files/templates/files/upload.html | 50 +++++++++++-------------- 8 files changed, 119 insertions(+), 64 deletions(-) create mode 100644 files/templates/categories/delete.html create mode 100644 files/templates/categories/rename.html diff --git a/files/admin.py b/files/admin.py index af13c3f..9b15366 100644 --- a/files/admin.py +++ b/files/admin.py @@ -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()) diff --git a/files/categories.py b/files/categories.py index 1975629..32fce3b 100644 --- a/files/categories.py +++ b/files/categories.py @@ -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('') def view(category_id): @@ -43,13 +65,20 @@ def view(category_id): files=files) -@bp.route('//update') -@admin_required -def update(): - pass - - -@bp.route('//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')) diff --git a/files/files.py b/files/files.py index 81a11a9..07e015d 100644 --- a/files/files.py +++ b/files/files.py @@ -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) diff --git a/files/templates/admin/index.html b/files/templates/admin/index.html index 4dc5e6c..99b8744 100644 --- a/files/templates/admin/index.html +++ b/files/templates/admin/index.html @@ -3,5 +3,18 @@ {% block title %}admin{% endblock %} {% block content %} -

Hi!

+

Admin Panel

+ +
+ +

Files

+ {% include 'files/upload.html' %} + +
+ +

Categories

+ {% include 'categories/create.html' %} + {% include 'categories/rename.html' %} + {% include 'categories/delete.html' %} + {% endblock %} diff --git a/files/templates/categories/create.html b/files/templates/categories/create.html index 65410f9..1db2a08 100644 --- a/files/templates/categories/create.html +++ b/files/templates/categories/create.html @@ -1,12 +1,6 @@ -{% extends 'base.html' %} - -{% block title %}categories/create{% endblock %} - -{% block content %} -

Create category

-
- - - -
-{% endblock %} +
Create category
+
+ + + +
diff --git a/files/templates/categories/delete.html b/files/templates/categories/delete.html new file mode 100644 index 0000000..454ca31 --- /dev/null +++ b/files/templates/categories/delete.html @@ -0,0 +1,10 @@ +
Delete category
+
+ + + +
diff --git a/files/templates/categories/rename.html b/files/templates/categories/rename.html new file mode 100644 index 0000000..5aa0d17 --- /dev/null +++ b/files/templates/categories/rename.html @@ -0,0 +1,12 @@ +
Rename category
+
+ + + + + +
diff --git a/files/templates/files/upload.html b/files/templates/files/upload.html index 0c42890..4fa9e45 100644 --- a/files/templates/files/upload.html +++ b/files/templates/files/upload.html @@ -1,31 +1,25 @@ -{% extends 'base.html' %} +
Upload File
-{% block title %}upload{% endblock %} +
+ + + + + + + + -{% block content %} -

Upload

- - - - - - - - - - - - -
-{% endblock %} + +