From a71f6899508355e945b8f59720ff2b4b8d4b237f Mon Sep 17 00:00:00 2001 From: Bo-Chun Louis Chen <louistw@uab.edu> Date: Thu, 24 May 2018 13:09:42 -0500 Subject: [PATCH] Added views for admin roles pages --- app/admin/views.py | 92 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 90 insertions(+), 2 deletions(-) diff --git a/app/admin/views.py b/app/admin/views.py index af261a9..fe04ad1 100644 --- a/app/admin/views.py +++ b/app/admin/views.py @@ -2,9 +2,9 @@ from flask import abort, flash, redirect, render_template, url_for from flask_login import current_user, login_required from . import admin -from forms import DepartmentForm +from forms import DepartmentForm, RoleForm from .. import db -from ..models import Department +from ..models import Department, Role def check_admin(): """ @@ -103,3 +103,91 @@ def delete_department(id): print("render template delete_department") return render_template(title="Delete Department") + +# Role views +@admin.route('/roles') +@login_required +def list_roles(): + check_admin() + """ + List all roles + """ + roles = Role.query.all() + return render_template('admin/roles/roles.html', + roles=roles, title='Roles') + +@admin.route('/roles/add', methods=['GET', 'POST']) +@login_required +def add_role(): + """ + Add a role to the database + """ + check_admin() + + add_role = True + + form = RoleForm() + if form.validate_on_submit(): + role = Role(name=form.name.data, + description=form.description.data) + + try: + # add role to the database + db.session.add(role) + db.session.commit() + flash('You have successfully added a new role.') + except: + # in case role name already exists + flash('Error: role name already exists.') + + # redirect to the roles page + return redirect(url_for('admin.list_roles')) + + # load role template + return render_template('admin/roles/role.html', add_role=add_role, + form=form, title='Add Role') + +@admin.route('/roles/edit/<int:id>', methods=['GET', 'POST']) +@login_required +def edit_role(id): + """ + Edit a role + """ + check_admin() + + add_role = False + + role = Role.query.get_or_404(id) + form = RoleForm(obj=role) + if form.validate_on_submit(): + role.name = form.name.data + role.description = form.description.data + db.session.add(role) + db.session.commit() + flash('You have successfully edited the role.') + + # redirect to the roles page + return redirect(url_for('admin.list_roles')) + + form.description.data = role.description + form.name.data = role.name + return render_template('admin/roles/role.html', add_role=add_role, + form=form, title="Edit Role") + +@admin.route('/roles/delete/<int:id>', methods=['GET', 'POST']) +@login_required +def delete_role(id): + """ + Delete a role from the database + """ + check_admin() + + role = Role.query.get_or_404(id) + db.session.delete(role) + db.session.commit() + flash('You have successfully deleted the role.') + + # redirect to the roles page + return redirect(url_for('admin.list_roles')) + + return render_template(title="Delete Role") -- GitLab