def ReporteTareasPendientes(self, Request):
        try:
            queryset = Tarea.objects.filter(activo=True)
            page = self.paginate_queryset(queryset)
            if page is not None:
                serializer = TareaSerializer(page, many=True)
                return self.get_paginated_response(serializer.data)
            serializer = TareaSerializer(queryset, many=True)

            return Response(serializer.data, status=status.HTTP_201_CREATED)
        except Exception as e:
            return Response({'detail': str(e)},
                            status=status.HTTP_400_BAD_REQUEST)
Пример #2
0
    def list(self, request, *args, **kwargs):
        user = request.user
        data = request.query_params
        id = data.get('id')

        #queryset = Tarea.objects.filter(detalle_curso=id, fecha=fechaActual, activo=True).order_by('id')
        queryset = Tarea.objects.filter(detalle_curso=id, activo=True).exclude(
            tarea__estudiante__profile__user=user).order_by('fecha')
        #queryset = Tarea.objects.filter().order_by('id')
        serializer = TareaSerializer(queryset, many=True)

        page = request.GET.get('page')

        try:
            page = self.paginate_queryset(queryset)
            print('page', page)
        except Exception as e:
            page = []
            data = page
            return Response({
                "status": status.HTTP_404_NOT_FOUND,
                "message": 'No more record.',
                "data": data
            })

        if page is not None:
            serializer = self.get_serializer(page, many=True)
            data = serializer.data
            return self.get_paginated_response(data)

        return Response(serializer.data, status=status.HTTP_200_OK)
class TareaEstudianteMisNotasSerializer(serializers.ModelSerializer):
    """Serializer de solo lectura"""
    tarea = TareaSerializer()

    class Meta:
        model = Tarea_Estudiante
        fields = ("id", "texto", "archivo", "punteo", "creado", "tarea")
Пример #4
0
 def list(self, request):
     id = request.query_params.get("id")
     listar = Tarea.objects.filter(asignacion=id, activo=True)
     #paginando resultado
     paginador = PageNumberPagination()
     resultado_pagina = paginador.paginate_queryset(listar, request)
     serializer = TareaSerializer(resultado_pagina, many=True)
     return paginador.get_paginated_response(serializer.data)
Пример #5
0
 def tareas_asignadas(self, request, *args, **kwargs):
     try:
         asignacion = request.query_params.get("asignacion")
         print(request.data)
         tarea = Tarea.objects.filter(
             Q(activo=True) & Q(asignacion__id=asignacion))
         """print(asignacion)
         print(material)"""
         page = self.paginate_queryset(tarea)
         if page is not None:
             serializer = TareaSerializer(page, many=True)
             return self.get_paginated_response(serializer.data)
         serializer = TareaSerializer(tarea, many=True)
         return Response(serializer.data, status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'detail': str(e)},
                         status=status.HTTP_400_BAD_REQUEST)
Пример #6
0
    def tarea_curso(self, request):
        id = request.query_params.get("id_asignacion")
        tareas = Tarea.objects.filter(asignacion=id,
                                      activo=True).order_by('-creado')

        #paginando el resultado
        paginador = PageNumberPagination()
        resultado_pagina = paginador.paginate_queryset(tareas, request)
        serializer = TareaSerializer(resultado_pagina, many=True)
        return paginador.get_paginated_response(serializer.data)
    def tareas_pendientes_entregar(self, request):
        try:
            user = request.user
            tareas=Tarea.objects.filter(asignacion__estudiante__profile__user=user, tarea_tareaestudiante__isnull=True )
            page = self.paginate_queryset(tareas)
            if page is not None:
                serializer = TareaSerializer(page, many=True)

            return self.get_paginated_response(serializer.data)
        except Exception as e:
            return Response({'detail':str(e)}, status=status.HTTP_400_BAD_REQUEST)
    def create(self, request):
        try:
            data = request.data
            archivo = data.get("archivo")
            data = json.loads(data["data"])
            serializer = TareaSerializer(data=data)
            if serializer.is_valid(raise_exception=True):
                #verifica que el punteo total de nota no exceda de 100pts
                max_nota = 100
                suma_nota = Tarea.objects.filter(
                    asignacion_id=data.get("asignacion"),
                    asignacion__asignacion_ciclo__anio=self.anio).aggregate(
                        Sum('nota'))
                suma_total = suma_nota.get('nota__sum')
                if not suma_total:
                    suma_total = 0

                if (suma_total + float(data.get("nota"))) > max_nota:
                    return Response(
                        {
                            "detail":
                            "Se ha excedido el valor de la nota total de este curso"
                        },
                        status=status.HTTP_400_BAD_REQUEST)

                if not data.get("permitir_archivo"):
                    permitir_archivo = False
                else:
                    permitir_archivo = True

                Tarea.objects.create(titulo=data.get("titulo"),
                                     descripcion=data.get("descripcion"),
                                     fecha_entrega=data.get("fecha_entrega"),
                                     hora_entrega=data.get("hora_entrega"),
                                     nota=data.get("nota"),
                                     permitir_archivo=permitir_archivo,
                                     archivo=File(archivo),
                                     asignacion_id=data.get("asignacion"))
            return Response('todo anda bien', status=status.HTTP_201_CREATED)
        except TypeError as e:
            return Response(e, status=status.HTTP_400_BAD_REQUEST)
    def update(self, request, pk):
        try:
            data = request.data
            archivo = data.get("archivo")
            data = json.loads(data["data"])

            serializer = TareaSerializer(data=data)
            if serializer.is_valid(raise_exception=True):
                if not data.get("permitir_archivo"):
                    permitir_archivo = False
                else:
                    permitir_archivo = True

                verificacion = self.verificarNota(data.get("asignacion"),
                                                  data.get("nota"))
                if verificacion == False:
                    tarea = Tarea.objects.get(pk=pk)

                    if archivo is not None:
                        if tarea.archivo is not None:
                            tarea.archivo.delete()
                            tarea.archivo = File(archivo)

                    tarea.titulo = data.get("titulo")
                    tarea.descripcion = data.get("descripcion")
                    tarea.fecha_entrega = data.get("fecha_entrega")
                    tarea.hora_entrega = data.get("hora_entrega")
                    tarea.nota = data.get("nota")
                    tarea.permitir_archivo = permitir_archivo
                    tarea.save()
                    return Response('todo anda bien',
                                    status=status.HTTP_201_CREATED)
                else:
                    return Response(
                        'Se ha superado el limite total de la nota del curso',
                        status=status.HTTP_400_BAD_REQUEST)

        except TypeError as e:
            return Response(e, status=status.HTTP_400_BAD_REQUEST)
Пример #10
0
 def listado(self, request, *args, **kwargs):
     try:
         data = request.query_params
         id = data.get('id')
         now = datetime.now()
         fechaActual = now.strftime("2021-03-20")
         print('now', fechaActual)
         query = Tarea.objects.filter(detalle_curso=id, activo=True)
         serializer = TareaSerializer(query, many=True)
         #serializer = UserReadSerializer(user)
         return Response(serializer.data, status=status.HTTP_200_OK)
     except Exception as e:
         return Response({'detail': str(e)},
                         status=status.HTTP_400_BAD_REQUEST)
Пример #11
0
 def tareas(self, request, *args, **kwargs):
     user = request.user
     perfil = Profile.objects.get(user=user)
     estudiante = Estudiante.objects.get(perfil=perfil.id)
     cursos = AsignacionCurso.objects.filter(estudiante=estudiante.id,
                                             activo=True)
     tareas = Tarea.objects.filter(
         activo=True).select_related('asignacion').order_by(
             '-fechaHoraEntrega', '-creado')[:7]
     #paginando el resultado
     paginador = PageNumberPagination()
     resultado_pagina = paginador.paginate_queryset(tareas, request)
     serializer = TareaSerializer(resultado_pagina, many=True)
     return paginador.get_paginated_response(serializer.data)
Пример #12
0
    def listar_tareas_curso(self, request):
        try:
            id_asignacion = request.query_params.get("asignacion")
            tareas_estudiante = Tarea.objects.filter(
                asignacion__id=id_asignacion, activo=True)

            page = self.paginate_queryset(tareas_estudiante)
            if page is not None:
                serializer = TareaSerializer(page, many=True)

            return self.get_paginated_response(serializer.data)

        except Exception as e:
            return Response({'detail': str(e)},
                            status=status.HTTP_400_BAD_REQUEST)