- Crea modelo UserProfile (OneToOne con User) con user_type: publico/user/administrator - Señal post_save que crea UserProfile automáticamente al crear User - UserSerializer.get_role() lee desde profile.user_type - Nuevos permisos: IsNotPublico, IsPublico y actualiza IsAdministrator - IsNotPublico restringe acceso a vistas de gestión (productos, clientes, ventas) - CatalogSaleView.create permite publico; otras acciones requieren IsNotPublico - UserProfile inline en admin de Usuarios - Data migration para backfill de usuarios existentes
20 lines
535 B
Python
20 lines
535 B
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
|
|
|
|
class UserProfile(models.Model):
|
|
USER_TYPE_CHOICES = [
|
|
("publico", "Público"),
|
|
("user", "Usuario"),
|
|
("administrator", "Administrador"),
|
|
]
|
|
user = models.OneToOneField(
|
|
User, on_delete=models.CASCADE, related_name="profile"
|
|
)
|
|
user_type = models.CharField(
|
|
max_length=20, choices=USER_TYPE_CHOICES, default="user"
|
|
)
|
|
|
|
def __str__(self):
|
|
return f"{self.user.username} - {self.user_type}"
|