Example #1
0
    def create(self, request):
        """
        POST
        Asignar un TFG a uno o varios alumnos
        :param request:
        :return:
        {status: True/False, data:{serializer del tfg asignado y de los alumnos}
        """

        try:
            params = utils.get_params(request)
            if params.get('delete'):
                return Tfg_asigViewSet().delete(request)
            self.logger.info('INICIO WS - TFGASIGVIEW POST del usuario: %s con parametros: %s' %
                             (request.user.email if hasattr(request.user, 'email') else request.user.username, params))
            if request.user.has_perm('tfgs.tfg_asig.change') or request.user.is_admin:
                alumno_2 = None
                alumno_3 = None
                tfg = Tfg.objects.get(titulo=params.get('tfg'))
                # Si es profesor
                if Profesor.objects.filter(email=request.user.email).exists() and request.user.email != tfg.tutor.\
                        email:
                    raise NameError("El profesor no es tutor del Tfg")
                alumno_1 = utils.get_or_create_alumno(params.get('alumno_1'))
                if 'alumno_2' in params:
                    alumno_2 = utils.get_or_create_alumno(params.get('alumno_2'))
                if 'alumno_3' in params:
                    alumno_3 = utils.get_or_create_alumno(params.get('alumno_3'))

                serializer = self.serializer_class(data=dict(tfg=tfg.id, alumno_1=alumno_1.id, alumno_2=alumno_2,
                                                             alumno_3=alumno_3))
                if serializer.is_valid():
                    resul = serializer.create(serializer.validated_data)
                    if resul['status']:
                        resul = utils.to_dict(resul)
                        resul_status = status.HTTP_200_OK
                    else:
                        resul = dict(message=resul['message'])
                        resul_status = status.HTTP_400_BAD_REQUEST
                else:
                    resul = dict(message=serializer.errors)
                    resul_status = status.HTTP_400_BAD_REQUEST
            else:
                resul = dict(message="Sin privilegios")
                resul_status = status.HTTP_400_BAD_REQUEST
            self.logger.info('FIN WS - TFGASIGVIEW POST del usuario: %s con resultado: %s' %
                             (request.user.email if hasattr(request.user, 'email') else request.user.username, resul))
            return Response(resul, status=resul_status)
        except NameError as e:
            self.logger.error('FIN WS - TFGASIGVIEW POST: %s' % e.message)
            return Response(dict(message=e.message), status=status.HTTP_400_BAD_REQUEST)
        except Exception as e:
            resul = dict(status=False, message="Error en la llamada")
            self.logger.critical('FIN WS - TFGASIGVIEW POST: %s %s' % (resul, e))
            return Response(resul, status=status.HTTP_400_BAD_REQUEST)
Example #2
0
    def update(self, tfg_asig, validated_data):
        try:
            # comprobando alumno_1
            if 'alumno_1' in validated_data.keys():
                alumno_1 = utils.get_or_create_alumno(
                    validated_data.get('alumno_1'))
                tfg_asig.alumno_1 = alumno_1

            # comprobando alumno_2
            if 'alumno_2' in validated_data.keys():
                alumno_2 = utils.get_or_create_alumno(
                    validated_data.get('alumno_2'))
                tfg_asig.alumno_2 = alumno_2

            # comprobando alumno_3
            if 'alumno_3' in validated_data.keys():
                alumno_3 = utils.get_or_create_alumno(
                    validated_data.get('alumno_3'))
                tfg_asig.alumno_3 = alumno_3

            # comprobando convocatoria
            if 'convocatoria' in validated_data.keys():
                try:
                    res_subtipo = SubTipo_Evento.objects.get(codigo='SOL_EVAL')
                except:
                    raise NameError("El Tipo no existe")
                try:
                    res_tipo = Tipo_Evento.objects.get(
                        codigo=validated_data.get('convocatoria'))
                    res_convocatoria = Convocatoria.objects.get(
                        titulacion=tfg_asig.tfg.titulacion,
                        subtipo=res_subtipo,
                        tipo=res_tipo,
                        anio=validated_data.get('anio'))
                except:
                    raise NameError("La convocatoria no existe")

                if not utils.check_convocatoria(res_convocatoria, res_subtipo):
                    raise NameError("Fuera de plazo")
                else:
                    tfg_asig.convocatoria = res_convocatoria

            tfg_asig.save()

            return dict(status=True,
                        data=Tfg_Asig.objects.get(tfg=tfg_asig.tfg))
        except NameError as e:
            return dict(status=False, message=e.message)
Example #3
0
    def update(self, tfg_asig, validated_data):
        try:
            # comprobando alumno_1
            if 'alumno_1' in validated_data.keys():
                alumno_1 = utils.get_or_create_alumno(validated_data.get('alumno_1'))
                tfg_asig.alumno_1 = alumno_1

            # comprobando alumno_2
            if 'alumno_2' in validated_data.keys():
                alumno_2 = utils.get_or_create_alumno(validated_data.get('alumno_2'))
                tfg_asig.alumno_2 = alumno_2

            # comprobando alumno_3
            if 'alumno_3' in validated_data.keys():
                alumno_3 = utils.get_or_create_alumno(validated_data.get('alumno_3'))
                tfg_asig.alumno_3 = alumno_3

            # comprobando convocatoria
            if 'convocatoria' in validated_data.keys():
                try:
                    res_subtipo = SubTipo_Evento.objects.get(codigo='SOL_EVAL')
                except:
                    raise NameError("El Tipo no existe")
                try:
                    res_tipo = Tipo_Evento.objects.get(codigo=validated_data.get('convocatoria'))
                    res_convocatoria = Convocatoria.objects.get(titulacion=tfg_asig.tfg.titulacion,
                                                                subtipo=res_subtipo, tipo=res_tipo,
                                                                anio=validated_data.get('anio'))
                except:
                    raise NameError("La convocatoria no existe")

                if not utils.check_convocatoria(res_convocatoria, res_subtipo):
                    raise NameError("Fuera de plazo")
                else:
                    tfg_asig.convocatoria = res_convocatoria

            tfg_asig.save()

            return dict(status=True, data=Tfg_Asig.objects.get(tfg=tfg_asig.tfg))
        except NameError as e:
            return dict(status=False, message=e.message)