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