class ValidacionSerializer(serializers.ModelSerializer): """Serializer para generar un API endpoint hacie el modelo de :class:`Validacion`. """ departamento = serializers.StringRelatedField( source='escuela.municipio.departamento') municipio = serializers.StringRelatedField( source='escuela.municipio.nombre') escuela = EscuelaSerializer(fields='nombre,codigo,url') requisitos = serializers.StringRelatedField(source='porcentaje_requisitos') estado = serializers.SerializerMethodField() fecha = serializers.DateField(source='fecha_inicio') comentarios = ValidacionComentarioSerializer(many=True, fields='comentario') observacion = serializers.StringRelatedField() class Meta: model = mye_m.Validacion fields = ('departamento', 'municipio', 'escuela', 'requisitos', 'estado', 'fecha', 'fecha_equipamiento', 'comentarios', 'observacion') def get_estado(self, obj): """Devuelve un texto indicando si la :class:`Validacion` está completa o no. """ return 'Completa' if obj.completada is True else 'Pendiente'
class ParticipanteSerializer(DynamicFieldsModelSerializer, serializers.ModelSerializer): url = serializers.URLField(source='get_absolute_url') escuela = EscuelaSerializer(read_only=True, fields='codigo,nombre,url') asignaciones = AsignacionResumenSerializer(read_only=True, many=True) class Meta: model = Participante fields = '__all__' extra_kwargs = {'dpi': {'required': 'True'}}
class EvaluacionMonitoreoFullSerializer(EvaluacionMonitoreoSerializer): """Serializer para generar informes completos de :class:`EvaluacionMonitoreo` """ pregunta = serializers.StringRelatedField() equipamiento = serializers.StringRelatedField( source='monitoreo.equipamiento', read_only=True) fecha = serializers.DateField(source='monitoreo.fecha', read_only=True) fecha_equipamiento = serializers.DateField( source='monitoreo.equipamiento.fecha', read_only=True) escuela = EscuelaSerializer(source='monitoreo.equipamiento.escuela', fields='id,nombre,codigo', read_only=True)
class LaboratorioSerializer(serializers.ModelSerializer): """Serializer para generar informes de laboratorios""" url = serializers.URLField(source='get_absolute_url') escuela = EscuelaSerializer(fields='url,codigo,nombre') municipio = serializers.StringRelatedField( source='escuela.municipio.nombre') departamento = serializers.StringRelatedField( source='escuela.municipio.departamento') class Meta: model = ie_models.Laboratorio fields = ('id', 'url', 'escuela', 'fecha', 'municipio', 'departamento', 'cantidad_computadoras')
class IEValidacionSerializer(serializers.ModelSerializer): """Serializer para generar informes de validaciones""" url = serializers.URLField(source='get_absolute_url') escuela = EscuelaSerializer(fields='url,codigo,nombre') municipio = serializers.StringRelatedField( source='escuela.municipio.nombre') departamento = serializers.StringRelatedField( source='escuela.municipio.departamento') class Meta: model = ie_models.Validacion fields = ('id', 'url', 'escuela', 'fecha_inicio', 'fecha_fin', 'completada', 'municipio', 'departamento', 'porcentaje_requisitos')
class SolicitudSerializer(serializers.ModelSerializer): departamento = serializers.StringRelatedField( source='escuela.municipio.departamento') municipio = serializers.StringRelatedField( source='escuela.municipio.nombre') escuela = EscuelaSerializer(fields='nombre,codigo,url') requisitos = serializers.StringRelatedField(source='porcentaje_requisitos') alumnos = serializers.IntegerField(source='poblacion.total_alumno') maestros = serializers.IntegerField(source='poblacion.total_maestro') equipada = serializers.BooleanField(source='escuela.equipada') class Meta: model = mye_m.Solicitud fields = ('departamento', 'municipio', 'escuela', 'requisitos', 'alumnos', 'maestros', 'equipada', 'fecha')
class VisitaSerializer(DynamicFieldsModelSerializer): promedio = serializers.FloatField(read_only=True) alcance = serializers.CharField(source='estado.alcance') escuela = EscuelaSerializer(fields='nombre,url,codigo') capacitador = serializers.StringRelatedField( source='capacitador.get_full_name') tipo_visita = serializers.StringRelatedField() municipio = serializers.StringRelatedField( source='escuela.municipio.nombre') departamento = serializers.StringRelatedField( source='escuela.municipio.departamento') poblacion = serializers.SerializerMethodField() class Meta: model = kalite_m.Visita fields = '__all__' read_only_fields = ('id', 'escuela') def get_poblacion(self, obj): poblacion = obj.escuela.poblaciones.last() return poblacion.total_maestro if poblacion else 0