- AttendanceSession model with open/closed status, org_id, timestamps - POST /api/v1/attendance/check-in/ – creates session, rejects duplicate open check-ins (409) - POST /api/v1/attendance/check-out/ – closes open session, validates checkout > checkin - GET /api/v1/attendance/status/ – current open session for requesting user - GET /api/v1/attendance/history/ – paginated session history per user - GET /api/v1/attendance/admin/sessions/ – admin view for managers/admins with filters - Initial migration with composite indexes on (user, status) and (user, checked_in_at) - 18 test cases covering core flows and edge cases Co-Authored-By: Paperclip <noreply@paperclip.ing>
13 lines
458 B
Python
13 lines
458 B
Python
from django.contrib import admin
|
|
|
|
from .models import AttendanceSession
|
|
|
|
|
|
@admin.register(AttendanceSession)
|
|
class AttendanceSessionAdmin(admin.ModelAdmin):
|
|
list_display = ["id", "user", "org_id", "status", "checked_in_at", "checked_out_at", "duration_seconds"]
|
|
list_filter = ["status", "org_id"]
|
|
search_fields = ["user__email", "id"]
|
|
readonly_fields = ["id", "created_at", "updated_at", "duration_seconds"]
|
|
ordering = ["-checked_in_at"]
|