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)
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")
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)
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)
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)
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)
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)
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)