def periodo_matricula_detalle(request, pk=False):
    programacion = get_object_or_404(Programacion, pk=pk)
    alumnos = Matricula.objects.filter(programacion=programacion).prefetch_related("alumno")
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 25)
    alumnos = paginador_general(alumnos, pagina_cantidad, pagina)
    return render(request, "matricula/periodo_matricula_listado.html", locals())
def profesor_listado(request):
    profesores = Profesor.objects.all()
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 25)
    if request.GET.get("buscar"):
        buscar = request.GET.get("buscar")
        profesores = profesores.filter(Q(email__icontains=buscar) | Q(nombres__icontains=buscar) | Q(apellidos__icontains=buscar) | Q(codigo_profesor__icontains=buscar))
    profesores = paginador_general(profesores, pagina_cantidad, pagina)
    return render(request, "profesor/profesor_listado.html", locals())
def horario_listado(request):
    turnos = Turno.objects.all().order_by('nombre')
    horarios = Horario.objects.all().prefetch_related("turno")
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 25)
    query_turno = request.GET.get("horario_seleccionar", False)
    if query_turno:
        horarios = horarios.filter(turno__pk=query_turno)
    horarios = paginador_general(horarios, pagina_cantidad, pagina)
    return render(request, 'programacion/horario_listado.html', locals())
def programacion_listado(request, pk=False):
    periodo = get_object_or_404(Periodo, pk=pk)
    idiomas = Idioma.objects.all()
    programacion = Programacion.objects.filter(periodo=periodo).prefetch_related('aula').prefetch_related('horario__turno').prefetch_related('profesor').prefetch_related('ciclo_idioma__idioma').prefetch_related('ciclo_idioma__nivel_idioma')
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 25)
    query_idioma = request.GET.get("query_idioma", False)
    if query_idioma:
        programacion = programacion.filter(ciclo_idioma__idioma=query_idioma)
    programacion = paginador_general(programacion, pagina_cantidad, pagina)
    return render(request, 'programacion/programacion_listado.html', locals())
def idioma_ciclo_listado(request):
    query_idioma = request.GET.get("idioma_seleccionar")
    query_nivel = request.GET.get("nivel_seleccionar")
    ciclo_idiomas = CicloIdioma.objects.all().prefetch_related("idioma").prefetch_related("nivel_idioma").order_by("idioma__nombre")
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 2)
    if query_idioma:
        ciclo_idiomas = ciclo_idiomas.filter(idioma=query_idioma)
    if query_nivel:
        ciclo_idiomas = ciclo_idiomas.filter(nivel_idioma=query_nivel)
    nivel_idiomas = NivelIdioma.objects.all().order_by("nombre")
    idiomas = Idioma.objects.all().order_by("nombre")
    ciclo_idiomas = paginador_general(ciclo_idiomas, pagina_cantidad, pagina)
    return render(request, 'idioma/idioma_ciclo_listado.html', locals())
def periodo_listado(request):
    periodos = Periodo.objects.all().order_by("-fecha_final")
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 50)
    query_fecha_inicio = request.GET.get("fecha_inicio", "")
    query_fecha_final = request.GET.get("fecha_final", "")
    if query_fecha_inicio:
        query_fecha_inicio = datetime.datetime.strptime(query_fecha_inicio, "%d-%m-%Y").date()
        periodos = periodos.filter(fecha_inicio__gte=query_fecha_inicio)
    if query_fecha_final:
        query_fecha_final = datetime.datetime.strptime(query_fecha_final, "%d-%m-%Y").date()
        periodos = periodos.filter(fecha_inicio__lte=query_fecha_final)
    if request.method == "POST":
        fecha_inicio = request.POST.get("form_fecha_inicio")
        fecha_final = request.POST.get("form_fecha_final")
        fecha_inicio = datetime.datetime.strptime(fecha_inicio, "%d-%m-%Y").date()
        fecha_final = datetime.datetime.strptime(fecha_final, "%d-%m-%Y").date()
        Periodo(fecha_final=fecha_final, fecha_inicio=fecha_inicio).save()
        return redirect(reverse("programacion:periodo_listado"))
    else:
        ejecuto_post = False
    periodos = paginador_general(periodos, pagina_cantidad, pagina)
    return render(request, 'programacion/periodo_listado.html', locals())
def alumno_listado(request):
    alumnos = Alumno.objects.all().order_by("nombres")
    pagina = request.GET.get("pag", 1)
    pagina_cantidad = request.GET.get('pcantidad', 25)
    alumnos = paginador_general(alumnos, pagina_cantidad, pagina)
    return render(request, "profesor/alumno_listado.html", locals())