106 lines
2.4 KiB
Python
106 lines
2.4 KiB
Python
from django.contrib import admin
|
|
|
|
from attendance.models import (
|
|
AttendanceAnalysisRun,
|
|
AttendanceAutoSyncSettings,
|
|
AttendanceRecord,
|
|
EmployeeWorkSchedule,
|
|
StandardWorkSchedule,
|
|
)
|
|
|
|
|
|
@admin.register(AttendanceAnalysisRun)
|
|
class AttendanceAnalysisRunAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"id",
|
|
"employee",
|
|
"period_start",
|
|
"period_end",
|
|
"status",
|
|
"triggered_by",
|
|
"created_at",
|
|
)
|
|
list_filter = ("status", "created_at")
|
|
search_fields = ("employee__email", "employee__first_name", "employee__last_name")
|
|
readonly_fields = ("created_at",)
|
|
|
|
|
|
@admin.register(AttendanceRecord)
|
|
class AttendanceRecordAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"employee",
|
|
"date",
|
|
"is_workday",
|
|
"arrival_time",
|
|
"departure_time",
|
|
"work_hours",
|
|
"is_late",
|
|
"is_absent",
|
|
"is_overtime",
|
|
"updated_at",
|
|
)
|
|
list_filter = (
|
|
"is_workday",
|
|
"is_late",
|
|
"is_absent",
|
|
"is_overtime",
|
|
"date",
|
|
)
|
|
search_fields = ("employee__email", "employee__first_name", "employee__last_name")
|
|
readonly_fields = ("updated_at",)
|
|
|
|
|
|
@admin.register(EmployeeWorkSchedule)
|
|
class EmployeeWorkScheduleAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"employee",
|
|
"start_time",
|
|
"end_time",
|
|
"expected_hours",
|
|
"is_active",
|
|
"updated_at",
|
|
)
|
|
list_filter = ("is_active",)
|
|
search_fields = (
|
|
"employee__last_name",
|
|
"employee__first_name",
|
|
"employee__email",
|
|
)
|
|
readonly_fields = ("created_at", "updated_at")
|
|
|
|
|
|
@admin.register(StandardWorkSchedule)
|
|
class StandardWorkScheduleAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"start_time",
|
|
"end_time",
|
|
"expected_hours",
|
|
"updated_by",
|
|
"updated_at",
|
|
)
|
|
readonly_fields = ("created_at", "updated_at")
|
|
|
|
|
|
@admin.register(AttendanceAutoSyncSettings)
|
|
class AttendanceAutoSyncSettingsAdmin(admin.ModelAdmin):
|
|
list_display = (
|
|
"enabled",
|
|
"frequency_minutes",
|
|
"lookback_days",
|
|
"next_run_at",
|
|
"last_status",
|
|
"last_success_count",
|
|
"last_error_count",
|
|
"updated_at",
|
|
)
|
|
readonly_fields = (
|
|
"next_run_at",
|
|
"last_started_at",
|
|
"last_finished_at",
|
|
"last_status",
|
|
"last_error",
|
|
"last_success_count",
|
|
"last_error_count",
|
|
"updated_at",
|
|
)
|