Files
training-software/config/urls.py
Paperclip CTO 72e319767f
Some checks failed
CI / lint (push) Failing after 46s
CI / test (push) Failing after 11s
CI / build-container (push) Has been skipped
feat(TRA-368): add attendance app with check-in/check-out core
- 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>
2026-05-18 12:11:16 +02:00

31 lines
1.5 KiB
Python

from django.contrib import admin
from django.urls import path, include
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView, SpectacularRedocView
urlpatterns = [
path("admin/", admin.site.urls),
# Public waitlist endpoints (marketing routes)
path("", include("waitlist.urls", namespace="waitlist")),
# Health
path("", include("api.urls", namespace="api")),
# Domain apps
path("api/v1/accounts/", include("accounts.urls", namespace="accounts")),
path("api/v1/courses/", include("courses.urls", namespace="courses")),
path("api/v1/cms/", include("cms.urls", namespace="cms")),
path("api/v1/tracking/", include("tracking.urls", namespace="tracking")),
path("api/v1/quizzes/", include("quizzes.urls", namespace="quizzes")),
path("api/v1/training/", include("training.urls", namespace="training")),
path("api/v1/certificates/", include("certificates.urls", namespace="certificates")),
path("api/v1/reports/", include("reports.urls", namespace="reports")),
path("api/v1/notifications/", include("notifications.urls", namespace="notifications")),
path("api/v1/attendance/", include("attendance.urls", namespace="attendance")),
# OpenAPI (guarded per-env in settings)
path("api/schema/", SpectacularAPIView.as_view(), name="schema"),
path("api/schema/swagger/", SpectacularSwaggerView.as_view(url_name="schema"), name="swagger"),
path("api/schema/redoc/", SpectacularRedocView.as_view(url_name="schema"), name="redoc"),
]