diff --git a/app/admin/views.py b/app/admin/views.py index fe04ad19a63385adc7e77f4c48c76d2a408b5bfe..61a6b3499aa245878d910606c0a001fe9f568bda 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')