def borrar(self): print "Borramos el grupo ya cargado %s"%self.id for asis in self.g.alumnos: print "Borrando asistencia %s del alumnuno %s"%(asis.id,asis.alumno.id) for nota in asis.notas: Nota.delete(nota.id) Asistencia.delete(asis.id) for clase in self.g.clases: print "Borrando la clase %s"%clase.id Clase.delete(clase.id) Grupo.delete(self.id) self.rellenar_lista()
def buscar(self): ##Buscamos la asistencia print "Buscado la nota del alumno %i al grupo %i trimestre %i"%(self.alumnoID,self.grupoID,self.trimestre) if self.trimestre == -1 or self.alumnoID == -1 or self.grupoID == -1: ##Falta algún dato return -1 res = Asistencia.select(AND(Asistencia.q.alumnoID==self.alumnoID,Asistencia.q.grupoID==self.grupoID)) if len(list(res)): print "Hemos encontrado la asistencia",res ##en base a la asistencia buscamos si hay una nota asis = res[0] res = Nota.select(AND(Nota.q.asistenciaID==asis.id,Nota.q.trimestre==self.trimestre)) print "Hemos encontrado",res try: self.n = res[0] print "Encontrada nota %i"%self.n.id except: print sys.exc_info() print "No existe, creando nota nueva",asis,self.trimestre try: self.n = Nota(asistencia=asis,trimestre=self.trimestre) print "Creada",self.n except: print sys.exc_info() print "No hemos podido crear la nota!" self.id = self.n.id return 1 else: print "No hemos encontrado la asistecia, algo va mal!" self.clear() return -1
def imprimir(self,id): print "Imprimiendo las notas del trimestre %s"%id num_notas=0 for n in Nota.select(Nota.q.trimestre==id): num_notas+=1 mostrar_aviso("Funcion deshabilitada","Funcion deshabilitada") #self.imprimir_nota(n) return num_notas
def imprimir_lista_notas_asistencia(self,todos=False): """Pensado para una vez terminado el curso sacar un listado alfabetico con las notas finales y el totald e faltas""" fichero = get_print_path('Alumnos')+"/Listado_Alumnos_Notas_Asistencia.pdf" estiloHoja = getSampleStyleSheet() story = [] ##Vamos con la cabecera ##banner = os.path.join(_config.get_data_path(), 'media', 'banner_eide.png') ##img=Image(banner) ##story.append(img) estilo = estiloHoja['BodyText'] cadena = "<para alignment=center><b>LISTADO DE ALUMNOS</b></para>" story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,10)) tabla =[['Apellidos ','Nombre','Curso','Notal Final','Faltas','Justificadas']] if todos: consulta = Alumno.select(orderBy=Alumno.q.apellido1) else: consulta = Alumno.select(Alumno.q.activo==True,orderBy=Alumno.q.apellido1) for persona in consulta: #print "Estamos con la persona %s (%s) "%(persona.nombre,persona.id) nota_final = "----" #print "La asistencia es:",asis.id try: asis = persona.grupos[0] grupo = asis.grupo.nombre except: grupo = "-----" #print "El grupo es %s"%grupo notas = Nota.select(Nota.q.asistenciaID==asis.id) for nota in notas: #print "El trimestre %s"%nota.trimestre if nota.trimestre==3: print "Estamos con la nota", nota.id print nota #~ ## primero comprobamos si es un pequeño coggemos la nota del 3º control, sino la de gramatica #~ nombre_curso = grupo.lower() #~ #FIXME esto debería ser una función externa #~ if re.search('junior',nombre_curso) or re.search('beginner',nombre_curso) or re.search('movers',nombre_curso) or re.search('starters',nombre_curso) or re.search('flyers',nombre_curso): #~ print "Es pequeño" #~ nota_3trimestre = nota.control3 #~ baremo_3trimestre = nota.control3_baremo #~ else: #~ print "Es mayor" #~ nota_3trimestre = nota.grama #~ baremo_3trimestre = nota.grama_baremo nota_3trimestre = nota.grammar ### Buscamos la nota de grama, si es 0 cojemos el control3 si es 999 (no presentado ponemos un NP) if nota_3trimestre == 0: nota_final = "NP" elif nota_3trimestre == 999: nota_final = "NP" else: nota_final = "%s /100"%(nota_3trimestre) total_faltas = 0 total_faltas_j = 0 try: for falta in Falta.select(Falta.q.asistenciaID==persona.grupos[0].id): total_faltas = total_faltas + falta.faltas total_faltas_j = total_faltas_j + falta.justificadas except: pass #except: # print "Uo :( algún error" # nota_final = "--" # faltas = "--" ##Para los que solo tienen un apellido: try: apellidos = persona.apellido1+" "+persona.apellido2 except: apellidos = persona.apellido1 tabla.append([apellidos,persona.nombre,grupo,nota_final,total_faltas,total_faltas_j]) t = Table(tabla) t.setStyle([('FONTSIZE',(0,0),(-1,-1),8),('FONTSIZE',(-1,0),(-1,-1),6),('TEXTCOLOR',(0,1),(0,-1),colors.blue), ('TEXTCOLOR',(1,1), (2,-1),colors.green)]) t.setStyle([('LINEABOVE', (0,0), (-1,0), 2, colors.black),('LINEBEFORE', (0,0), (0,-1), 2, colors.black),('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black),('LINEAFTER', (0,0), (-1,-1), 0.25, colors.black),('LINEBELOW', (0,-1), (-1,-1), 2, colors.black),('LINEAFTER', (-1,0), (-1,-1), 2, colors.black),('ALIGN', (1,1), (-1,-1), 'RIGHT')]) story.append(t) doc=SimpleDocTemplate(fichero,pagesize=A4,showBoundary=0) doc.build(story) send_to_printer(fichero) return
def imprimir_lista_notas_asistencia_1_trim(self,todos=False): """Pensado para una vez terminado el trimestre sacar un listado alfabetico con las notas y las faltas""" fichero = get_print_path('Alumnos')+"/Listado_Alumnos_Notas_Asistencia_1_trim.pdf" estiloHoja = getSampleStyleSheet() story = [] ##Vamos con la cabecera ##banner = os.path.join(_config.get_data_path(), 'media', 'banner_eide.png') ##img=Image(banner) ##story.append(img) estilo = estiloHoja['BodyText'] cadena = "<para alignment=center><b>LISTADO DE ALUMNOS, NOTAS Y FALTAS</b></para>" story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,10)) tabla =[['Apellidos ','Nombre','Curso','Notal 1º Trim','Faltas','Justificadas']] if todos: consulta = Alumno.select(orderBy=Alumno.q.apellido1) else: consulta = Alumno.select(Alumno.q.activo==True,orderBy=Alumno.q.apellido1) for persona in consulta: #print "Estamos con la persona %s (%s) "%(persona.nombre,persona.id) nota_final = "----" #print "La asistencia es:",asis.id try: asis = persona.grupos[0] grupo = asis.grupo.nombre except: grupo = "-----" #print "El grupo es %s"%grupo try: nota = Nota.select(AND(Nota.q.asistenciaID==asis.id,Nota.q.trimestre==1))[0] print "Estamos con la nota", nota.id print nota ##cromprobar cual es la nota buena, si grama u otra nota_trimestre = nota.grama baremo_trimestre = nota.grama_baremo ### Buscamos la nota de grama, si es 0 cojemos el control3 si es 999 (no presentado ponemos un NP) if nota_trimestre == 0: nota_final = "NP" elif nota_trimestre == 999: nota_final = "NP" else: nota_final = "%s / %s"%(nota_trimestre,baremo_trimestre) except: nota_final="pendiente" total_faltas = 0 total_faltas_j = 0 try: for falta in Falta.select(Falta.q.asistenciaID==persona.grupos[0].id): total_faltas = total_faltas + falta.faltas total_faltas_j = total_faltas_j + falta.justificadas except: pass try: apellidos = persona.apellido1+" "+persona.apellido2 except: apellidos = persona.apellido1 tabla.append([apellidos,persona.nombre,grupo,nota_final,total_faltas,total_faltas_j]) t = Table(tabla) t.setStyle([('FONTSIZE',(0,0),(-1,-1),8),('FONTSIZE',(-1,0),(-1,-1),6),('TEXTCOLOR',(0,1),(0,-1),colors.blue), ('TEXTCOLOR',(1,1), (2,-1),colors.green)]) t.setStyle([('LINEABOVE', (0,0), (-1,0), 2, colors.black),('LINEBEFORE', (0,0), (0,-1), 2, colors.black),('LINEABOVE', (0,1), (-1,-1), 0.25, colors.black),('LINEAFTER', (0,0), (-1,-1), 0.25, colors.black),('LINEBELOW', (0,-1), (-1,-1), 2, colors.black),('LINEAFTER', (-1,0), (-1,-1), 2, colors.black),('ALIGN', (1,1), (-1,-1), 'RIGHT')]) story.append(t) doc=SimpleDocTemplate(fichero,pagesize=A4,showBoundary=0) doc.build(story) send_to_printer(fichero) return
def imprimir_nota(self,asistencia,trimestre_imprimir): hoy=date.today() ##FIXME esto debería ir a preferencias fichero = os.path.join(_imprimir.get_print_path('Notas'),"nota_%s_%s.pdf"%(hoy.year,asistencia.alumno.id)) debug("Imprimiendo las notas de la asistencia %i en el fichero %s"%(asistencia.id,fichero)) ##Vamos a intentar cargar todas las notas del alumno en los tres trimestres notas_trimestres = {} for trimestre in 1, 2, 3: notas = {} res = Nota.select(AND(Nota.q.asistenciaID==asistencia.id,Nota.q.trimestre==trimestre)) if len(list(res)): n = res[0] #print "Encontrada nota %i"%n.id np = False na = False for variable in self.__observables__: #print "Cargando %s con el valor %s"%(variable,getattr(n,variable)) #Si es una variable _np o _na no hacemos nada if re.search("_np",variable) or re.search("_na",variable): np = False na = False else: np = getattr(n,"%s_np"%variable) na = getattr(n,"%s_na"%variable) if na: notas.update({variable: "NA"}) elif np: notas.update({variable: "NP"}) else: notas.update({variable: limpiar_nota(getattr(n,variable))}) lista_materias=[] if asistencia.grupo.curso.modelo_notas == "elementary_intermediate": lista_materias = ['reading', 'grammar', 'writing', 'speaking', 'listening'] elif asistencia.grupo.curso.modelo_notas == "upper_proficiency": lista_materias = ['reading', 'useofenglish', 'writing', 'speaking', 'listening'] else: lista_materias=[] if len(lista_materias) > 0: #Calculamos la nota final: lista_notas = [] for materia in lista_materias: #~ print "miramos si %s tiene na"%materia,getattr(n,"%s_na"%materia) if getattr(n,"%s_na"%materia): #~ print "miramos si %s tiene na"%materia,getattr(n,"%s_na"%materia) pass else: lista_notas.append(limpiar_nota(getattr(n,materia))) #~ print "Lista", lista_notas nota_final = nota_media(lista_notas) #~ print "Nota final", nota_final notas.update({"nota_final": nota_final}) else: #~ print "No hay nota aun" for variable in self.__observables__: notas.update({variable: 0}) notas.update({"nota_final": 0}) #~ print "Añadimos las notas de trimestre", notas notas_trimestres.update({trimestre: notas}) #~ print "En total: ",notas_trimestres estiloHoja = getSampleStyleSheet() story = [] ##Vamos con la cabecera ## banner = os.path.join(_config.get_data_path(), 'media', 'banner_eide.png') ## img=Image(banner) ## story.append(img) story.append(Spacer(0,40)) ##Aquí un estilo adecuado, alineado derecha, para ventanilla, etc estilo = estiloHoja['BodyText'] cadena = "<para alignment=right>%s %s %s</para>"%(asistencia.alumno.nombre,asistencia.alumno.apellido1,asistencia.alumno.apellido2) story.append(Paragraph(cadena, estilo)) cadena = "<para alignment=right>%s</para>"%(asistencia.alumno.direccion) story.append(Paragraph(cadena, estilo)) cadena = "<para alignment=right>%s %s</para>"%(asistencia.alumno.cp,asistencia.alumno.ciudad) story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,40)) ##Intro cadena = "<para alignment=center><b>BOLETIN DE EVALUACION TRIMESTRAL</b></para>" story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,10)) ##Datos del docu: alumno, grupo, profes cadena = "Nombre del alumno: <b>%s %s %s</b>"%(asistencia.alumno.nombre,asistencia.alumno.apellido1,asistencia.alumno.apellido2) story.append(Paragraph(cadena, estilo)) cadena = "Grupo: <b>%s</b>"%asistencia.grupo.nombre story.append(Paragraph(cadena, estilo)) profes = "" for c in asistencia.grupo.clases: profes = profes + "%s %s - "%(c.profesor.nombre,c.profesor.apellido1) cadena = "Profesores %s"%profes story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,20)) ##Faltas de asistencia ##calculamos todas las del trimestre haciendo un select en función del trimestre que sea if trimestre_imprimir == 1: debug("Mirando faltas del primer trimestre de %s"%asistencia.id) faltas_query = Falta.select(AND(Falta.q.asistenciaID==asistencia.id,OR(Falta.q.mes==9,Falta.q.mes==10,Falta.q.mes==11,Falta.q.mes==12))) elif trimestre_imprimir == 2: print "Mirando faltas del segundo trimestre" faltas_query = Falta.select(AND(Falta.q.asistenciaID==asistencia.id,OR(Falta.q.mes==1,Falta.q.mes==2,Falta.q.mes==3))) elif trimestre_imprimir == 3: print "Mirando faltas del tercer trimestre" faltas_query = Falta.select(AND(Falta.q.asistenciaID==asistencia.id,OR(Falta.q.mes==4,Falta.q.mes==5,Falta.q.mes==6))) else: print "a por todas las faltas" faltas_query = Falta.select(Falta.q.asistenciaID==asistencia.id) #...y pidiendo que nos sume las faltas faltas = faltas_query.sum('faltas') justificadas = faltas_query.sum('justificadas') cadena="Faltas de asistencia totales: %s -- Faltas Justificadas:%s"%(faltas,justificadas) story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,20)) ##Tabla con las notas if asistencia.grupo.curso.modelo_notas == "upper_proficiency": tabla =[['Concepto','Primer Trimestre','Segundo Trimestre','Tercer Trimestre']] tabla.append(["Reading",\ "%s"%(notas_trimestres[1]['reading']),\ "%s"%(notas_trimestres[2]['reading']),\ "%s"%(notas_trimestres[3]['reading'])]) tabla.append(["Use of english",\ "%s"%(notas_trimestres[1]['useofenglish']),\ "%s"%(notas_trimestres[2]['useofenglish']),\ "%s"%(notas_trimestres[3]['useofenglish'])]) tabla.append(["Writing",\ "%s"%(notas_trimestres[1]['writing']),\ "%s"%(notas_trimestres[2]['writing']),\ "%s"%(notas_trimestres[3]['writing'])]) tabla.append(["Speaking",\ "%s"%(notas_trimestres[1]['speaking']),\ "%s"%(notas_trimestres[2]['speaking']),\ "%s"%(notas_trimestres[3]['speaking'])]) tabla.append(["Listening",\ "%s"%(notas_trimestres[1]['listening']),\ "%s"%(notas_trimestres[2]['listening']),\ "%s"%(notas_trimestres[3]['listening'])]) tabla.append(["Final",\ "%.2f"%(notas_trimestres[1]['nota_final']),\ "%.2f"%(notas_trimestres[2]['nota_final']),\ "%.2f"%(notas_trimestres[3]['nota_final'])]) t_notas = Table(tabla) t_notas.setStyle([('TEXTCOLOR',(0,1),(0,-1),colors.blue), ('TEXTCOLOR',(1,1), (2,-1),colors.green)]) story.append(t_notas) elif asistencia.grupo.curso.modelo_notas == "elementary_intermediate": tabla =[['Concepto','Primer Trimestre','Segundo Trimestre','Tercer Trimestre']] tabla.append(["Grammar",\ "%s"%(notas_trimestres[1]['grammar']),\ "%s"%(notas_trimestres[2]['grammar']),\ "%s"%(notas_trimestres[3]['grammar'])]) tabla.append(["Reading",\ "%s"%(notas_trimestres[1]['reading']),\ "%s"%(notas_trimestres[2]['reading']),\ "%s"%(notas_trimestres[3]['reading'])]) tabla.append(["Writing",\ "%s"%(notas_trimestres[1]['writing']),\ "%s"%(notas_trimestres[2]['writing']),\ "%s"%(notas_trimestres[3]['writing'])]) tabla.append(["Speaking",\ "%s"%(notas_trimestres[1]['speaking']),\ "%s"%(notas_trimestres[2]['speaking']),\ "%s"%(notas_trimestres[3]['speaking'])]) tabla.append(["Listening",\ "%s"%(notas_trimestres[1]['listening']),\ "%s"%(notas_trimestres[2]['listening']),\ "%s"%(notas_trimestres[3]['listening'])]) tabla.append(["Final",\ "%.2f"%(notas_trimestres[1]['nota_final']),\ "%.2f"%(notas_trimestres[2]['nota_final']),\ "%.2f"%(notas_trimestres[3]['nota_final'])]) t_notas = Table(tabla) t_notas.setStyle([('TEXTCOLOR',(0,1),(0,-1),colors.blue), ('TEXTCOLOR',(1,1), (2,-1),colors.green)]) story.append(t_notas) else: tabla_controles =[['Concepto','Primer Trimestre','Segundo Trimestre','Tercer Trimestre']] tabla_controles.append(["Control",\ "%s"%(notas_trimestres[1]['control']),\ "%s"%(notas_trimestres[2]['control']),\ "%s"%(notas_trimestres[3]['control'])]) if asistencia.grupo.menores: tabla_controles.append(["Comportamiento",\ "%s"%(convertir_comportamiento(notas_trimestres[1]['comportamiento'])),\ "%s"%(convertir_comportamiento(notas_trimestres[2]['comportamiento'])),\ "%s"%(convertir_comportamiento(notas_trimestres[3]['comportamiento']))]) t_controles = Table(tabla_controles) t_controles.setStyle([('TEXTCOLOR',(0,1),(0,-1),colors.blue), ('TEXTCOLOR',(1,1), (2,-1),colors.green)]) story.append(t_controles) story.append(Spacer(0,20)) ###Explicaciones y baremos #cadena="Comportamiento: M = Malo, R = Regular, B = Bueno, E = Muy Bueno" #story.append(Paragraph(cadena, estilo)) if asistencia.grupo.curso.modelo_notas == "upper_proficiency": nota_aprobado = "60" elif asistencia.grupo.curso.modelo_notas == "elementary_intermediate": nota_aprobado = "70" else: nota_aprobado = asistencia.grupo.curso.nota_aprobado cadena="Para que un examen se considere aprobado se deberá superar el %s"%nota_aprobado story.append(Paragraph(cadena, estilo)) cadena="NP: No Presentado" story.append(Paragraph(cadena, estilo)) cadena="NA: Ese trimestre no se evalúa" story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,10)) ##Observaciones cadena="<b>Observaciones del profesorado: </b>" story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,80)) ##Fecha y firmas cadena="Visto bueno del centro" story.append(Paragraph(cadena, estilo)) cadena="<para alignment=right>Firma de los padres</para>" story.append(Paragraph(cadena, estilo)) story.append(Spacer(0,30)) ##Pie de página #cadena="<para alignment=center><b>Genaro Oraá,6 - 48980 SANTURTZI (Spain)- Tlf. + 34 944 937 005 - FAX +34 944 615 723</b></para>" #story.append(Paragraph(cadena, estilo)) #cadena="<para alignment=center><b><a href=\"http:\\www.eide.es\">www.eide.es</a> - e-mail: [email protected]</b></para>" #story.append(Paragraph(cadena, estilo)) #story.append(Spacer(0,20)) doc=SimpleDocTemplate(fichero,pagesize=A4,showBoundary=0) doc.build(story) send_to_printer(fichero) return