37 lines
2.0 KiB
Python
37 lines
2.0 KiB
Python
def create_roles() -> None:
|
|
from django.contrib.auth.models import Group, Permission
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from apps.users.models import CustomUser
|
|
from apps.orders.models import Product, ShoppingCar
|
|
|
|
# Crear grupos
|
|
superadmin_group, created = Group.objects.get_or_create(name='Super Administrador')
|
|
admin_group, created = Group.objects.get_or_create(name='Administrador')
|
|
client_group, created = Group.objects.get_or_create(name='Cliente')
|
|
|
|
# Obtener permisos
|
|
# Permisos para CustomUser
|
|
user_content_type = ContentType.objects.get_for_model(CustomUser)
|
|
user_permissions = Permission.objects.filter(content_type=user_content_type)
|
|
|
|
product_content_type = ContentType.objects.get_for_model(Product)
|
|
product_permissions = Permission.objects.filter(content_type=product_content_type)
|
|
|
|
shoppingcar_product_content_type = ContentType.objects.get_for_model(ShoppingCar)
|
|
shoppingcar_permissions = Permission.objects.filter(content_type=shoppingcar_content_type)
|
|
|
|
# Asignar permisos a Super Administrador
|
|
superadmin_content_type = ContentType.objects.get_for_models()
|
|
superadmin_group.permissions.set(Permission.objects.filter(content_type__in=superadmin_content_type))
|
|
|
|
# Asignar permisos a Administrador
|
|
admin_permissions = user_permissions.filter(codename__in=['add_customuser', 'change_customuser', 'view_customuser']) | \
|
|
useraddress_permissions.filter(codename__in=['add_useraddress', 'change_useraddress', 'view_useraddress']) | \
|
|
product_permissions.filter(codename__in=['add_product', 'change_product', 'view_product']) | \
|
|
shoppingcar_permissions.filter(codename__in=['view_shoppingcar'])
|
|
admin_group.permissions.set(admin_permissions)
|
|
|
|
# Asignar permisos a Cliente
|
|
client_permissions = user_permissions | useraddress_permissions | shoppingcar_permissions | \
|
|
product_permissions.filter(codename__in=['view_order'])
|
|
client_group.permissions.set(client_permissions) |