Actualizaciones API/IMMEX

This commit is contained in:
fjrodriguez
2024-01-12 10:15:04 -06:00
parent 607790896b
commit 729fa47aae
8 changed files with 346 additions and 120 deletions

View File

@@ -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):