From 72b68cce5681b41c0a26e047f244bc1b08a4e2d7 Mon Sep 17 00:00:00 2001 From: Bo-Chun Louis Chen <louistw@uab.edu> Date: Thu, 24 May 2018 14:57:34 -0500 Subject: [PATCH] Added views for admin employees pages --- app/admin/views.py | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/app/admin/views.py b/app/admin/views.py index fe04ad1..61a6b34 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, RoleForm +from forms import DepartmentForm, EmployeeAssignForm, RoleForm from .. import db -from ..models import Department, Role +from ..models import Department, Employee, Role def check_admin(): """ @@ -191,3 +191,45 @@ def delete_role(id): return redirect(url_for('admin.list_roles')) return render_template(title="Delete Role") + +# Employee Views +@admin.route('/employees') +@login_required +def list_employees(): + """ + List all employees + """ + check_admin() + + employees = Employee.query.all() + return render_template('admin/employees/employees.html', + employees=employees, title='Employees') + +@admin.route('/employees/assign/<int:id>', methods=['GET', 'POST']) +@login_required +def assign_employee(id): + """ + Assign a department and a role to an employee + """ + check_admin() + + employee = Employee.query.get_or_404(id) + + # prevent admin from being assigned a department or role + if employee.is_admin: + abort(403) + + form = EmployeeAssignForm(obj=employee) + if form.validate_on_submit(): + employee.department = form.department.data + employee.role = form.role.data + db.session.add(employee) + db.session.commit() + flash('You have successfully assigned a department and role.') + + # redirect to the roles page + return redirect(url_for('admin.list_employees')) + + return render_template('admin/employees/employee.html', + employee=employee, form=form, + title='Assign Employee') -- GitLab