Files
Andrej Spielmann 28222d634d feat: implement user management system
- Add role field to UserProfile (superadmin/admin/trainer)
- Add role-based permission classes
- Create UserManagementViewSet with CRUD and password change
- Add API types and components for user management
- Create users management page in settings
- Only superadmins can manage users
2026-03-26 16:42:08 +01:00

56 lines
3.2 KiB
Python

from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from rest_framework.routers import DefaultRouter
from drf_spectacular.views import SpectacularAPIView, SpectacularSwaggerView
from clubs.views import ClubViewSet
from wrestlers.views import WrestlerViewSet
from trainers.views import TrainerViewSet
from locations.views import LocationViewSet
from exercises.views import ExerciseViewSet
from templates.views import TrainingTemplateViewSet, TemplateExerciseViewSet
from trainings.views import TrainingViewSet, AttendanceViewSet, TrainingExerciseViewSet
from homework.views import HomeworkViewSet, HomeworkExerciseItemViewSet, HomeworkAssignmentViewSet, HomeworkStatusViewSet, TrainingHomeworkAssignmentViewSet
from auth_app.views import UserManagementViewSet, login, register, refresh_token, me, user_preferences
from stats.views import dashboard_stats
from leistungstest.views import LeistungstestStatsViewSet
router = DefaultRouter()
router.register(r'clubs', ClubViewSet, basename='club')
router.register(r'wrestlers', WrestlerViewSet, basename='wrestler')
router.register(r'trainers', TrainerViewSet, basename='trainer')
router.register(r'locations', LocationViewSet, basename='location')
router.register(r'exercises', ExerciseViewSet, basename='exercise')
router.register(r'templates', TrainingTemplateViewSet, basename='template')
router.register(r'template-exercises', TemplateExerciseViewSet, basename='template-exercise')
router.register(r'trainings', TrainingViewSet, basename='training')
router.register(r'attendances', AttendanceViewSet, basename='attendance')
router.register(r'training-exercises', TrainingExerciseViewSet, basename='training-exercise')
router.register(r'homework', HomeworkViewSet, basename='homework')
router.register(r'homework-exercise-items', HomeworkExerciseItemViewSet, basename='homework-exercise-item')
router.register(r'homework-assignments', HomeworkAssignmentViewSet, basename='homework-assignment')
router.register(r'homework-status', HomeworkStatusViewSet, basename='homework-status')
router.register(r'training-assignments', TrainingHomeworkAssignmentViewSet, basename='training-assignment')
router.register(r'leistungstest-stats', LeistungstestStatsViewSet, basename='leistungstest-stats')
router.register(r'auth/users', UserManagementViewSet, basename='usermanagement')
urlpatterns = [
path('admin/', admin.site.urls),
path('api/v1/', include(router.urls)),
path('api/v1/auth/login/', login, name='login'),
path('api/v1/auth/register/', register, name='register'),
path('api/v1/auth/refresh/', refresh_token, name='refresh_token'),
path('api/v1/auth/me/', me, name='me'),
path('api/v1/auth/preferences/', user_preferences, name='user_preferences'),
path('api/v1/stats/dashboard/', dashboard_stats, name='dashboard-stats'),
path('api/v1/training-log/', include('training_log.urls')),
path('api/v1/leistungstest/', include('leistungstest.urls')),
path('api/schema/', SpectacularAPIView.as_view(), name='schema'),
path('api/docs/', SpectacularSwaggerView.as_view(url_name='schema'), name='swagger-ui'),
]
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)