Files
WrestleDesk/backend/auth_app/models.py
T
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

42 lines
1.9 KiB
Python

from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
ROLE_CHOICES = [
('superadmin', 'Super Admin'),
('admin', 'Admin'),
('trainer', 'Trainer'),
]
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
club = models.ForeignKey('clubs.Club', on_delete=models.SET_NULL, null=True, blank=True, related_name='user_profiles')
role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='trainer')
def __str__(self):
return f"{self.user.username} Profile ({self.get_role_display()})"
class UserPreferences(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='preferences')
preferred_locale = models.CharField(max_length=10, default='de')
default_view = models.CharField(max_length=10, default='list')
wrestlers_view = models.CharField(max_length=10, default='list')
wrestlers_items_per_page = models.IntegerField(default=10)
wrestlers_filters = models.JSONField(default=dict, blank=True)
trainers_view = models.CharField(max_length=10, default='list')
trainers_items_per_page = models.IntegerField(default=10)
trainers_filters = models.JSONField(default=dict, blank=True)
exercises_view = models.CharField(max_length=10, default='list')
exercises_items_per_page = models.IntegerField(default=10)
exercises_filters = models.JSONField(default=dict, blank=True)
trainings_view = models.CharField(max_length=10, default='list')
trainings_items_per_page = models.IntegerField(default=10)
trainings_filters = models.JSONField(default=dict, blank=True)
homework_view = models.CharField(max_length=10, default='list')
homework_items_per_page = models.IntegerField(default=10)
homework_filters = models.JSONField(default=dict, blank=True)
def __str__(self):
return f"{self.user.username} Preferences"