Exemplo n.º 1
0
def informe_partes (request):
    """
        Informe de los partes que han enviado los profesores.
    """

    url = 'informe_parte_director.html'
    try:
        profesor = checkIsProfesor(request.user)
        if not isJefeEstudios(profesor):
            raise UnauthorizedAccess()
        url = 'informe_parte_jefeestudios.html'
    except UnauthorizedAccess:
        if not isDirector(request.user):
            raise UnauthorizedAccess("Necesita tener privilegios de Director o Jefe de\
                Estudios para acceder a este recurso")
    form = RangoFechasForm()
    fechaInicio = fechaFin = None
    if request.POST:
        form = RangoFechasForm(request.POST)
        if form.is_valid():
            fechaInicio = form.cleaned_data['fechaInicio']
            fechaFin = form.cleaned_data['fechaFin']

    # En la primera impresión de la vista, sin seleccionar
    # una fecha mostramos el rango desde hace un mes hasta la actualidad.
    if not fechaInicio and not fechaFin:
        fechaInicio, fechaFin = getFechaRange()

    context = {}
    context['fechaInicio'] = fechaInicio
    context['fechaFin'] = fechaFin

    informe = []
    for p in Profesor.objects.all().order_by('persona__apellidos', 'persona__nombre'):
        # FIXME: Esto no tiene en cuenta los días festivos, nosotros tampoco, pero los tenemos que
        # tener en el futuro.
        profe = {}
        total, partes, porcentaje = p.getInformePartes(fechaInicio, fechaFin)
        if total:
            profe['profesor'] = p
            profe['horas'] = total
            profe['partes'] = partes
            profe['porcentaje'] = porcentaje
            informe.append (profe)

    context['informe'] = informe

    context['form'] = form

    return render_to_response(
            'akademic/richWebBrowser/' + url,
            context,
            context_instance=RequestContext(request)
        )
Exemplo n.º 2
0
def informe_personalizado(request, grupo = None):
    """
        Devuelve el listado de todos los alumnos de la tutoría y un
        formulario con un intervalo de fechas para generar los informes
        personalizados.
    """
    if isOrientador(request.user) and grupo:
        tutor = Tutor.objects.get(grupo = grupo)
    else:
        tutor = checkIsTutor(request.user)
    context = {}

    form = RangoFechasForm()


    if request.POST:
        new_data = request.POST.copy()
        form = RangoFechasForm(request.POST)
        if form.is_valid():
            fechaInicio = form.cleaned_data['fechaInicio']
            fechaFin = form.cleaned_data['fechaFin']
            context['fechaInicio'] = fechaInicio
            context['fechaFin'] = fechaFin
            context['curso'] = tutor.grupo
            informe = []
            for alu in Alumno.filter(pk__in = new_data.getlist('seleccion')):
                aux = {}
                aux['alumno'] = alu
                aux['informePersonal'] = alu.getResumenTutor(fechaInicio, fechaFin, False)
                informe.append(aux)                
            context['informe'] = informe
            if informe and 'pdfSubmit' in new_data:
                context['profesor'] = tutor.profesor
                informe = _informePersonalizadoGrupo(context)
                return informe.HttpResponsePDF(filename="informes")
                

    # Esto se pasa en el contexto para indicar que hay más de un formulario en la vista.
    context['noform'] = True
    context['profesor'] = tutor.profesor
    context['grupo'] = tutor.grupo
    context['alumnos'] = tutor.grupo.getAlumnos()
    context['form'] = form
    
    url = "listaAlumnosTutoria.html"
    if grupo:
        url = "listaAlumnosOrientador.html" 
    return render_to_response(
            'akademic/richWebBrowser/' + url,
            context,
            context_instance=RequestContext(request)
        )
Exemplo n.º 3
0
def resumenEvaluacionProfesor(request, tipo = 'Profesor', grupo = None):
    """
        Devuelve los totales de asistencia, retrasos, comportamiento, tarea y
        material en las asignaturas y grupos que ha seleccionado el profesor
        de entre las que él mismo imparte, para facilitar la evaluación
    """
    context = {}
    if tipo == 'Profesor':
        profesor = checkIsProfesor(request.user)
        context['listaAsignaturas'] = profesor.getAsignaturas()
    else:
        if isOrientador(request.user) and grupo:
            tutor = Tutor.objects.get(grupo = grupo)
        else:
            tutor = checkIsTutor(request.user)
        context['listaAsignaturas'] = tutor.getAsignaturasTutoria()
    form = RangoFechasForm()
    d = request.POST or request.GET
    if d:
        form = RangoFechasForm(d)
        asignas = d.getlist('asignaturas')
        if form.is_valid():
            fechaInicio = form.cleaned_data['fechaInicio']
            fechaFin = form.cleaned_data['fechaFin']
            context['fechaInicio'] = fechaInicio
            context['fechaFin'] = fechaFin
            context['urlimprimir'] = "fechaInicio_year=%s&fechaInicio_month=%s&fechaInicio_day=%s&" % (
            fechaInicio.year, fechaInicio.month, fechaInicio.day)
            context['urlimprimir'] += "fechaFin_year=%s&fechaFin_month=%s&fechaFin_day=%s" % (
            fechaFin.year, fechaFin.month, fechaFin.day)
            for i in asignas:
                context['urlimprimir'] += '&asignaturas=%s' % i
            if tipo == 'Profesor':
                context['listados'] = profesor.getResumenEvaluacion(asignas, fechaInicio, fechaFin)
            else:
                context['listados'] = tutor.profesor.getResumenEvaluacion(asignas, fechaInicio, fechaFin)
        context['fechaImpresion'] = datetime.datetime.now()

    context['form'] = form
    context['noform'] = True

    if request.GET:
        if request.GET.has_key('csv'):
            return CSVResumenEvaluacion (context['listados'])
        return render_to_response('akademic/richWebBrowser/printResumenEvaluacionProfesor.html',
                context, context_instance=RequestContext(request))
    url = "resumenEvaluacion%s.html"
    if grupo:
        url = "resumenEvaluacionOrientador%s.html"
    return render_to_response('akademic/richWebBrowser/' + url % tipo,
            context, context_instance=RequestContext(request))
Exemplo n.º 4
0
def resumen_tutor(request):
    """
        Devuelve un selector de fecha y una vez seleccionada la fecha
        un resumen de todos los eventos en las distintas
        asignaturas de la tutoría del usuario.
    """
    tutor = checkIsTutor(request.user)
    context = {}

    form = RangoFechasForm()
    if request.POST:
        form = RangoFechasForm(request.POST)
        if form.is_valid():
            fechaini = form.cleaned_data['fechaInicio']
            fechafin = form.cleaned_data['fechaFin']
            context['resumen'] = tutor.getResumenTutor(fechaini, fechafin)

    context['form'] = form
    return render_to_response(
            'akademic/richWebBrowser/resumenTutor.html',
            context,
            context_instance=RequestContext(request)
        )
Exemplo n.º 5
0
def informe_tutor(request, grupo = None):
    """
        Devuelve un selector de fecha y una vez seleccionada la fecha
        un informe detallado de todos los eventos producidos en las distintas
        asignaturas de la tutoría del usuario.
    """
    profesor = None
    if isOrientador(request.user) and grupo:
        tutor = Tutor.objects.get(grupo = grupo)
    else:
        profesor = checkIsProfesor(request.user)
        if isJefeEstudios(profesor):
            tutor = Tutor.objects.get(grupo = grupo)
        else:
            tutor = checkIsTutor(request.user)
    context = {}

    form = RangoFechasForm()
    if request.POST:
        form = RangoFechasForm(request.POST)
        if form.is_valid():
            fechaInicio = form.cleaned_data['fechaInicio']
            fechaFin = form.cleaned_data['fechaFin']
            context['resumen'] = tutor.getInformeTutor(fechaInicio, fechaFin)

    context['form'] = form
    url = "informeTutor.html"
    if profesor and isJefeEstudios(profesor):
        url = "informeJefeEstudios.html"
    elif grupo:
        url = "informeOrientador.html"
    return render_to_response(
            'akademic/richWebBrowser/' + url,
            context,
            context_instance=RequestContext(request)
        )