Actualizaciones API/IMMEX
This commit is contained in:
@@ -1,16 +1,22 @@
|
||||
from rest_framework import serializers
|
||||
from rest_framework.validators import ValidationError
|
||||
from django.contrib.auth import get_user_model
|
||||
from allauth.account.models import EmailAddress
|
||||
from django.contrib.auth.models import Permission
|
||||
from django.contrib.auth.models import Permission, User
|
||||
from Sistemas.models import Sistema
|
||||
from .models import ClientesA24, Sistemas_por_cliente_A24, DeviceA24,Modulo
|
||||
from .models import ClientesA24, Sistemas_por_cliente_A24, DeviceA24,Modulo, Permisos_A24
|
||||
|
||||
|
||||
class CustomPermissionSerializer(serializers.ModelSerializer):
|
||||
activo = serializers.BooleanField(read_only=True)
|
||||
# user_id = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = Permission
|
||||
fields = '__all__'
|
||||
def get_user_id(self, obj):
|
||||
# Obtenemos el ID del usuario asociado al permiso si existe
|
||||
user = User.objects.filter(user_permissions=obj).first()
|
||||
return user.id if user else None
|
||||
|
||||
class ModulosSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
@@ -18,6 +24,57 @@ class ModulosSerializer(serializers.ModelSerializer):
|
||||
fields = '__all__'
|
||||
depth =1
|
||||
|
||||
def create(self, validated_data):
|
||||
"""Se recive el json completo para poder tomar los permisos """
|
||||
try:
|
||||
permisos_data= self.context.get('request').data.get('permisos', [])
|
||||
modulo = super(ModulosSerializer,self).create(validated_data)
|
||||
|
||||
for permiso_id in permisos_data:
|
||||
permiso, created= Permisos_A24.objects.get_or_create(pk=permiso_id,\
|
||||
defaults={'nombre': f'{modulo.nombre}_{permiso_id}'})
|
||||
modulo.permisos.add(permiso)
|
||||
return modulo
|
||||
except Exception as e:
|
||||
raise ValidationError({'error':str(e)})
|
||||
|
||||
class Permisos_A24_Serializer(serializers.ModelSerializer):
|
||||
modulo = serializers.CharField(write_only=True, required=False)
|
||||
modulos = serializers.SerializerMethodField()
|
||||
class Meta:
|
||||
model = Permisos_A24
|
||||
fields = ['id','nombre',
|
||||
'modulo',
|
||||
'modulos']
|
||||
|
||||
def create(self,validated_data):
|
||||
""""""
|
||||
try:
|
||||
|
||||
modulo_nombre = validated_data.pop('modulo',None)
|
||||
permiso = super(Permisos_A24_Serializer, self).create(validated_data)
|
||||
if modulo_nombre:
|
||||
modulo, created = Modulo.objects.get_or_create(nombre=modulo_nombre, \
|
||||
defaults={'nombre':modulo_nombre})
|
||||
modulo.permisos.add(permiso)
|
||||
permiso.modulo = modulo.nombre
|
||||
return permiso
|
||||
except Exception as e:
|
||||
raise ValidationError({'error':str(e)})
|
||||
|
||||
def to_representation(self, instance):
|
||||
representation = super(Permisos_A24_Serializer, self).to_representation(instance)
|
||||
|
||||
# Agregar el atributo 'modulo' al JSON de respuesta si está presente
|
||||
if hasattr(instance, 'modulo') and instance.modulo:
|
||||
representation['modulo'] = instance.modulo
|
||||
|
||||
return representation
|
||||
|
||||
def get_modulos(self, obj):
|
||||
# Obtener la lista de nombres de los módulos a los que está asignado el permiso
|
||||
return list(obj.modulo_set.values_list('nombre', flat=True))
|
||||
|
||||
class Sistema_A24_PKRF(serializers.PrimaryKeyRelatedField):
|
||||
def to_internal_value(self,data):
|
||||
try:
|
||||
@@ -54,6 +111,11 @@ class ClientesA24Serailizer(serializers.ModelSerializer):
|
||||
class DeviceA24_admin_Serialiazer(serializers.ModelSerializer):
|
||||
clienteA24 = serializers.SerializerMethodField()
|
||||
sistema = serializers.SerializerMethodField()
|
||||
deviceName = serializers.CharField(required=True)
|
||||
deviceOS= serializers.CharField(required=False)
|
||||
deviceIP = serializers.CharField(required=False)
|
||||
username = serializers.CharField(required=False)
|
||||
dataBase = serializers.CharField(required=True)
|
||||
|
||||
class Meta:
|
||||
model = DeviceA24
|
||||
@@ -63,6 +125,7 @@ class DeviceA24_admin_Serialiazer(serializers.ModelSerializer):
|
||||
return obj.clienteA24.RFC if obj.clienteA24.RFC else ""
|
||||
def get_sistema(self,obj):
|
||||
return obj.sistema.nombre_sistema if obj.sistema.nombre_sistema else ""
|
||||
|
||||
|
||||
|
||||
class SerialiazerA24(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user