Added employees management functions for Payroll staff

This commit is contained in:
Nguyen Ngo
2025-09-10 13:28:58 -04:00
parent 049083588f
commit f09a78e2f8
3 changed files with 11 additions and 7 deletions
+5 -5
View File
@@ -5923,7 +5923,7 @@ def export_statistics():
# EMPLOYEE MANAGEMENT ROUTES # EMPLOYEE MANAGEMENT ROUTES
@app.route('/employees') @app.route('/employees')
@admin_required @login_required
def employees(): def employees():
"""Display employee management page with search and pagination""" """Display employee management page with search and pagination"""
try: try:
@@ -5985,7 +5985,7 @@ def employees():
return redirect(url_for('dashboard')) return redirect(url_for('dashboard'))
@app.route('/employees/create', methods=['GET', 'POST']) @app.route('/employees/create', methods=['GET', 'POST'])
@admin_required @login_required
@log_database_operations('employee_creation') @log_database_operations('employee_creation')
def create_employee(): def create_employee():
"""Create new employee (Admin only)""" """Create new employee (Admin only)"""
@@ -6047,7 +6047,7 @@ def create_employee():
return render_template('create_employee.html') return render_template('create_employee.html')
@app.route('/employees/<int:employee_index>/edit', methods=['GET', 'POST']) @app.route('/employees/<int:employee_index>/edit', methods=['GET', 'POST'])
@admin_required @login_required
@log_database_operations('employee_update') @log_database_operations('employee_update')
def edit_employee(employee_index): def edit_employee(employee_index):
"""Edit existing employee (Admin only)""" """Edit existing employee (Admin only)"""
@@ -6118,7 +6118,7 @@ def edit_employee(employee_index):
return redirect(url_for('employees')) return redirect(url_for('employees'))
@app.route('/employees/<int:employee_index>/delete', methods=['POST']) @app.route('/employees/<int:employee_index>/delete', methods=['POST'])
@admin_required @login_required
@log_database_operations('employee_deletion') @log_database_operations('employee_deletion')
def delete_employee(employee_index): def delete_employee(employee_index):
"""Delete employee (Admin only) - Enhanced with better logging""" """Delete employee (Admin only) - Enhanced with better logging"""
@@ -6205,7 +6205,7 @@ def api_employees_search():
return jsonify({'error': 'Search failed'}), 500 return jsonify({'error': 'Search failed'}), 500
@app.route('/employees/<int:employee_index>') @app.route('/employees/<int:employee_index>')
@admin_required @login_required
def employee_detail(employee_index): def employee_detail(employee_index):
"""View employee details with attendance summary""" """View employee details with attendance summary"""
try: try:
+4
View File
@@ -93,6 +93,10 @@
<span class="menu-text">System Logs</span> <span class="menu-text">System Logs</span>
</a> </a>
{% elif session.role in ['payroll'] %} {% elif session.role in ['payroll'] %}
<a href="{{ url_for('employees') }}" class="menu-item">
<i class="fas fa-user"></i>
<span class="menu-text">Employees</span>
</a>
<a href="{{ url_for('attendance_report') }}" class="menu-item"> <a href="{{ url_for('attendance_report') }}" class="menu-item">
<i class="fas fa-chart-line"></i> <i class="fas fa-chart-line"></i>
<span class="menu-text">Reports</span> <span class="menu-text">Reports</span>
+2 -2
View File
@@ -24,7 +24,7 @@ extra_head %}
</div> </div>
<div class="header-actions"> <div class="header-actions">
{% if session.role == 'admin' %} {% if session.role in ['admin', 'payroll'] %}
<a href="{{ url_for('create_employee') }}" class="btn btn-primary"> <a href="{{ url_for('create_employee') }}" class="btn btn-primary">
<i class="fas fa-plus"></i> <i class="fas fa-plus"></i>
Add Employee Add Employee
@@ -177,7 +177,7 @@ extra_head %}
<i class="fas fa-eye"></i> <i class="fas fa-eye"></i>
</a> </a>
{% if session.role == 'admin' %} {% if session.role in ['admin', 'payroll'] %}
<a <a
href="{{ url_for('edit_employee', employee_index=employee.index) }}" href="{{ url_for('edit_employee', employee_index=employee.index) }}"
class="btn btn-sm btn-warning" class="btn btn-sm btn-warning"