61 lines
2.4 KiB
Python
61 lines
2.4 KiB
Python
from django.contrib import admin
|
|
from .models import (
|
|
Department, Shift, Employee, BiometricDevice,
|
|
AttendanceLog, DailyAttendance, LeaveType,
|
|
LeaveRequest, LeaveBalance
|
|
)
|
|
|
|
@admin.register(Department)
|
|
class DepartmentAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'code')
|
|
|
|
@admin.register(Shift)
|
|
class ShiftAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'start_time', 'end_time')
|
|
|
|
@admin.register(Employee)
|
|
class EmployeeAdmin(admin.ModelAdmin):
|
|
list_display = ('employee_id', 'biometric_id', 'first_name', 'last_name', 'department', 'position', 'is_active')
|
|
list_filter = ('department', 'shift', 'is_active')
|
|
search_fields = ('employee_id', 'biometric_id', 'first_name', 'last_name', 'position')
|
|
|
|
@admin.register(BiometricDevice)
|
|
class BiometricDeviceAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'ip_address', 'port', 'is_active', 'last_sync')
|
|
list_filter = ('is_active',)
|
|
|
|
@admin.register(AttendanceLog)
|
|
class AttendanceLogAdmin(admin.ModelAdmin):
|
|
list_display = ('employee', 'timestamp', 'device')
|
|
list_filter = ('device', 'timestamp')
|
|
search_fields = ('employee__first_name', 'employee__last_name', 'employee__employee_id', 'employee__biometric_id')
|
|
|
|
@admin.register(DailyAttendance)
|
|
class DailyAttendanceAdmin(admin.ModelAdmin):
|
|
list_display = ('employee', 'date', 'check_in', 'check_out', 'status', 'is_late', 'worked_hours')
|
|
list_filter = ('date', 'status', 'is_late')
|
|
search_fields = ('employee__first_name', 'employee__last_name', 'employee__employee_id')
|
|
|
|
@admin.register(LeaveType)
|
|
class LeaveTypeAdmin(admin.ModelAdmin):
|
|
list_display = ('name', 'total_days', 'color_code')
|
|
|
|
@admin.register(LeaveRequest)
|
|
class LeaveRequestAdmin(admin.ModelAdmin):
|
|
list_display = ('employee', 'leave_type', 'start_date', 'end_date', 'status', 'applied_on')
|
|
list_filter = ('status', 'leave_type', 'start_date')
|
|
actions = ['approve_requests', 'reject_requests']
|
|
|
|
def approve_requests(self, request, queryset):
|
|
queryset.update(status='approved', approved_by=request.user)
|
|
approve_requests.short_description = "Approve selected leave requests"
|
|
|
|
def reject_requests(self, request, queryset):
|
|
queryset.update(status='rejected')
|
|
reject_requests.short_description = "Reject selected leave requests"
|
|
|
|
@admin.register(LeaveBalance)
|
|
class LeaveBalanceAdmin(admin.ModelAdmin):
|
|
list_display = ('employee', 'leave_type', 'allocated', 'used', 'remaining')
|
|
list_filter = ('leave_type',)
|