X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/26d6612fcbc1894b3b5de2c304e3b32410c5542a..e4881186eeeb72540c3cbc3fed820ab809bcacb9:/sercom/subcontrollers/curso/__init__.py diff --git a/sercom/subcontrollers/curso/__init__.py b/sercom/subcontrollers/curso/__init__.py index ca216fe..4fea895 100644 --- a/sercom/subcontrollers/curso/__init__.py +++ b/sercom/subcontrollers/curso/__init__.py @@ -10,10 +10,14 @@ from turbogears import identity from turbogears import paginate from docutils.core import publish_parts from sercom.subcontrollers import validate as val -from sercom.model import Curso, Ejercicio, Alumno, Docente, Grupo, DocenteInscripto +from sercom.model import Curso, Correccion, Ejercicio, Alumno, Docente, Grupo, DocenteInscripto, Rol from curso_alumno import * from sqlobject import * +from sqlobject.dberrors import * from sercom.widgets import * +from alumno import AlumnoInscriptoController +from grupo import GrupoController +from ejercicio import EjercicioController #}}} #{{{ Configuración @@ -22,21 +26,7 @@ name = 'curso' namepl = name + 's' #}}} -ajax = u""" - function makeOption(option) { - return OPTION({"value": option.value}, option.text); - } - - function moveOption( fromSelect, toSelect) { - // add 'selected' nodes toSelect - appendChildNodes(toSelect, - map( makeOption,ifilter(itemgetter('selected'), $(fromSelect).options))); - // remove the 'selected' fromSelect - replaceChildNodes(fromSelect, - list(ifilterfalse(itemgetter('selected'), $(fromSelect).options)) - ); - } - +ajax = u""" function alumnos_agregar_a_la_lista(texto, lista) { t = MochiKit.DOM.getElement(texto); @@ -81,25 +71,22 @@ ajax = u""" d.addCallbacks(procesar, err); } - function prepare() - { - connect('form_responsable', 'onblur', buscar_alumno); - } - - function onsubmit() + function doSubmit() { /* TODO : Validar datos y evitar el submit si no esta completo */ /* Selecciono todos los miembros si no, no llegan al controllere*/ - l = MochiKit.DOM.getElement('form_miembros'); - for (i=0; i 0: + col["Grupo"] = miembro[0].grupo.shortrepr() + else: + col["Grupo"] = "" + correctas = 0 + for ej in r.ejercicios: + for ins in ej.instancias: + if ej.grupal: + # Busco la correccion del grupo + g = Grupo.selectByAlumno(i.alumno).getOne() + c = Correccion.selectBy(instancia=ins, entregador=g.grupo) + else: + # Busco la correccion del alumno + c = Correccion.selectBy(instancia=ins, entregador=i) + if c.count() > 0: + col["E"+str(ej.numero)+str(ins.numero)] = c[0].nota + if c[0].nota >= 4: + correctas += 1 + else: + col["E"+str(ej.numero)+str(ins.numero)] = "" + col["EA"] = correctas + col["NP"] = i.nota_practica + col["NF"] = i.nota_final + col["NL"] = i.nota_libreta + rows.append(col) + return dict(curso=r, rows=rows, cols=cols) + + @expose() + def notascsv(self, cursoid): + r = validate_get(cursoid) + # Armo las columnas del listado + cols = ["Padron", "Nombre", "Grupo"] + # Ejercicios + for ej in r.ejercicios: + for ins in ej.instancias: + print "E"+str(ej.numero)+str(ins.numero) + cols.append("E"+str(ej.numero)+str(ins.numero)) + cols.append("EA") + cols.append("NP") + cols.append("NF") + cols.append("NL") + + rows = [] + for i in r.alumnos: + col = [] + col.append(i.alumno.padron) + col.append(i.alumno.nombre) + miembro = Grupo.selectByAlumno(i.alumno) + if miembro.count() > 0: + col.append(miembro[0].grupo.shortrepr()) + correctas = 0 + for ej in r.ejercicios: + for ins in ej.instancias: + if ej.grupal: + # Busco la correccion del grupo + g = Grupo.selectByAlumno(i.alumno).getOne() + c = Correccion.selectBy(instancia=ins, entregador=g.grupo) + else: + # Busco la correccion del alumno + c = Correccion.selectBy(instancia=ins, entregador=i) + if c.count() > 0: + col.append(str(c[0].nota)) + if c[0].nota > 4: + correctas += 1 + else: + col.append("") + col.append(str(correctas)) + col.append(str(i.nota_practica)) + col.append(str(i.nota_final)) + col.append(str(i.nota_libreta)) + rows.append(col) + s = ",".join(cols) + "\n" + for i in rows: + s = s + ",".join(i) + "\n" + return s #}}}