示例#1
0
文件: models.py 项目: esauro/akademic
    def getDatosBoletinWebKit(alumno):
        """
            Devuelve los datos necesarios para rellenar un boletin de un alumno que
            se convertirá a PDF utilizando webkit.
        """

        tutor = alumno.getTutor()
        grupo = alumno.getGrupo().grupo
        out = {}
        out['alumno'] = "%s" % alumno.persona
        out['grupo'] = "%s" % grupo
        out['cial'] = alumno.cial

        if alumno.madre:
            out['madre'] = "%s" % alumno.madre
        else:
            out['madre'] = ""
        if alumno.padre:
            out['padre'] = "%s" % alumno.padre
        else:
            out['padre'] = ""
        out["cursoEscolar"] = "%s-%s" % (unicode(settings.CURSO_ESCOLAR_ACTUAL), unicode(settings.CURSO_ESCOLAR_ACTUAL + 1))
        out["tutor"] = "%s" % tutor if tutor else " --"
        evaluaciones = Evaluacion.objects.filter(cursoEscolar = settings.CURSO_ESCOLAR_ACTUAL)
        contEv = 0
        numEv = len(evaluaciones)
        evaluac = []
        evTexto = ""
        fechaEvaluacion = ""
        for ev in evaluaciones:
            evaluacion = {}
            if ev.nombre == u"1":
                suffix = "1"
                evTexto = u"1ª"
            elif ev.nombre == u"2":
                suffix = "2"
                evTexto = u"2ª"
            elif ev.nombre == u"O" or ev.nombre == u"J":
                suffix = "3"
                evTexto = u"3ª"
            elif ev.nombre == u"U":
                suffix = "4"
                evTexto = u"Extraordinaria"
            if evTexto != u"Extraordinaria":
                evTexto += u" Evaluación"
            else:
                evTexto = u"Evaluación " + evTexto
            evaluacion['id'] = suffix
            fechaEvaluacion = FECHAS_EVALUACIONES[int(suffix)-1]
            calif = alumno.getCalificaciones(ev.id)
            if calif['informe']:
                comp = CalificacionCompetencia._parseCompetencias(calif["informe"].informeCompetencias)
                evaluacion['informe'] = comp
            else:
                evaluacion['informe'] = ""

            faltas = alumno.getFaltasEvaluacion(ev)
            
            if faltas:
                evaluacion['faltas'] = faltas
            else:
                evaluacion['faltas'] = ""

            cals = []
            if calif["calificaciones"]:
                from docencia.templatetags.emoticon import notaTextual
                for i in range(len(calif["calificaciones"])):
                    calificaAsigna = {}
                    calificaAsigna['materia'] = calif['calificaciones'][i].matricula.asignatura.nombreLargo
                    calificaAsigna['nota'] = notaTextual(calif['calificaciones'][i].nota)
                    if contEv == numEv - 1:
                        if not calif["calificaciones"][i].comentario:
                            calificaAsigna['comentario'] = "--"
                        else:
                            calificaAsigna['comentario'] = calif["calificaciones"][i].comentario
                    cals.append(calificaAsigna)

            evaluacion['calificaciones'] = cals
            evaluac.append(evaluacion)
           
            contEv += 1

        out['evaluaciones'] = evaluac

        pendientes = ""
        for pend in alumno.getAsignaturasPendientes():
            if pendientes:
                pendientes += ", %s %s %s" % (pend.nombreCorto, grupo.curso, grupo.curso.ciclo.nivel.cursoEscolar)
            else:
                pendientes += "%s %s %s" % (pend.nombreCorto, grupo.curso, grupo.curso.ciclo.nivel.cursoEscolar)

        out["pendientes"] = pendientes
        out['evaluacionTexto'] = evTexto
        out['fechaEvaluacion'] = fechaEvaluacion.strftime('%d-%m-%Y')

        return out
示例#2
0
文件: models.py 项目: esauro/akademic
    def generaBoletin(writer, alumno, page = None):
        """
            Genera un boletin para el alumno con la informacion de todas las evaluaciones
            hasta la actualidad.
        """
        locale.setlocale (locale.LC_ALL, 'es_ES.UTF-8')
        tutor = alumno.getTutor()
        grupo = alumno.getGrupo().grupo
        writer.searchAndReplacePage(page, "$ALUMNO$", u"%s" % alumno.persona)
        writer.searchAndReplacePage(page, "$GRUPO$", u"%s %s %s" % (grupo.curso.nombre, grupo.seccion, grupo.curso.ciclo.nivel.nombre))
        writer.searchAndReplacePage(page, "$CIAL$", alumno.cial)
        writer.searchAndReplacePage(page, "$NUMERO$", u"%s" % alumno.posicion)
        
        if alumno.madre:
            writer.searchAndReplacePage(page, "$MADRE$", u"%s %s" % (alumno.madre.persona.nombre, alumno.madre.persona.apellidos))
        if alumno.padre:
            writer.searchAndReplacePage(page, "$PADRE$", u"%s %s" % (alumno.padre.persona.nombre, alumno.padre.persona.apellidos))
        writer.searchAndReplacePage(page, "$CURSO_ESCOLAR$", u"%s-%s" 
                                % (unicode(settings.CURSO_ESCOLAR_ACTUAL), unicode(settings.CURSO_ESCOLAR_ACTUAL + 1)))
        writer.searchAndReplacePage(page, "$TUTOR$", u"%s" % tutor.profesor.persona if tutor else " -- ")
        evaluaciones = Evaluacion.objects.filter(cursoEscolar = settings.CURSO_ESCOLAR_ACTUAL)
        contEv = 0
        numEv = len(evaluaciones)

        etiqueta_asignaturas = False
        promociona = False
        codigo_promocion = ''
        for ev in evaluaciones:
            if ev.is_apta():
                if ev.nombre == u"1":
                    suffix = "1"
                    evTexto = u"1ª"
                elif ev.nombre == u"2":
                    suffix = "2"
                    evTexto = u"2ª"
                elif ev.nombre == u"O" or ev.nombre == u"J":
                    suffix = "3"
                    evTexto = u"3ª"
                elif ev.nombre == u"U":
                    suffix = "4"
                    evTexto = u"Extraordinaria"
                if evTexto != u"Extraordinaria":
                    evTexto += u" Evaluación"
                else:
                    evTexto = u"Evaluación " + evTexto
                fechaEvaluacion = FECHAS_EVALUACIONES[int(suffix)-1]
                calif = alumno.getCalificaciones(ev.id)
                if calif["informe"]:
                    comp = CalificacionCompetencia._parseCompetencias(calif["informe"].informeCompetencias)
                    promociona = calif["informe"].promociona
                    codigo_promocion = calif["informe"].get_codigo_promocion_display()
                    for i in comp.keys():
                        cadena = u"$%s_%s$" % (i, suffix)
                        writer.searchAndReplacePage(page, cadena, comp[i])
                faltas = alumno.getFaltasEvaluacion(ev)

                if faltas:
                    for i in faltas.keys():
                        cadena = u"$%s_%s$" % (i, suffix)
                        writer.searchAndReplacePage(page, cadena, faltas[i])

                if calif["calificaciones"]:
                    if not etiqueta_asignaturas:
                        for i in range(len(calif["calificaciones"])):
                            cadena = u"$MATERIA%d$" % (i + 1)
                            writer.searchAndReplacePage(page, cadena, calif["calificaciones"][i].matricula.asignatura.nombreLargo)
                        etiqueta_asignaturas = True
                    from docencia.templatetags.emoticon import notaTextual
                    for i in range(len(calif["calificaciones"])):
                        cadena = u"$NOTA%d_%s$" % (i + 1, suffix)
                        if not calif["calificaciones"][i]:
                            nota = ''
                        else:
                            nota = notaTextual(calif["calificaciones"][i].nota)
                        writer.searchAndReplacePage(page, cadena, "%s" % nota)
                        logger.warn("Evaluacion %d y contEv %d", numEv, contEv)
                        if ev.nombre in ["O", "J"] and numEv in [3,4] or ev.nombre == "U":
                            cadena = "$OBS%d$" % (i + 1)
                            if (nota == '') or (not calif["calificaciones"][i].comentario):
                                coment = "--"
                                logger.warn("Viendo que la calificacion %s no tiene comentarios", calif["calificaciones"][i])
                            else:
                                coment = calif["calificaciones"][i].comentario
                                logger.warn("Viendo que la calificacion %s tiene un comentario %s", calif["calificaciones"][i], calif["calificaciones"][i].comentario)
                            writer.searchAndReplacePage(page, cadena, coment)
            contEv += 1
        pendientes = []
        for pend in alumno.getAsignaturasPendientes():
            for curso in alumno.getCursoAsignaturaPendiente(pend):
                pendiente = "%s %s %s (%s)" % (
                    pend.abreviatura, 
                    curso.nombre, 
                    curso.ciclo.nivel.nombre, 
                    alumno.getNotaAsignaturaPendiente(pend, curso))
                pendientes.append(pendiente)
        writer.searchAndReplacePage(page, "$ASIGNATURAS_PENDIENTES$", ", ".join(pendientes))
        #writer.searchAndReplacePage(page, "$OBSERVACIONES_GENERALES$", "¡¡ FELIZ VERANO !!")
        writer.searchAndReplacePage(page, "$OBSERVACIONES_GENERALES$", "")
        writer.searchAndReplacePage(page, "$EVALUACION_TEXTO$", evTexto)
        writer.searchAndReplacePage(page, "$FECHA_EVAL$", fechaEvaluacion.strftime('%d-%m-%Y'))

        if promociona:
            texto_promociona = "PROMOCIONA: %s" % codigo_promocion
        else:
            texto_promociona = "NO PROMOCIONA: %s" % codigo_promocion
        writer.searchAndReplacePage(page, "$PROMOCIONA$", texto_promociona)

        CalificacionCompetencia._limpiaBoletin(writer, page)