X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/blobdiff_plain/46c223fbb59fa6af6c640915558bb5b633129d3b..aa8c5a4c31de79cf2d8e3ab3bb0583af2ffa89ce:/sercom/subcontrollers/curso/__init__.py diff --git a/sercom/subcontrollers/curso/__init__.py b/sercom/subcontrollers/curso/__init__.py index 0a30cda..62dc1cc 100644 --- a/sercom/subcontrollers/curso/__init__.py +++ b/sercom/subcontrollers/curso/__init__.py @@ -15,6 +15,7 @@ from curso_alumno import * from sqlobject import * from sqlobject.dberrors import * from sercom.widgets import * +from alumno import AlumnoInscriptoController #}}} #{{{ Configuración @@ -127,8 +128,8 @@ class CursoForm(W.TableForm): numero = W.TextField(label=_(u'Numero'), help_text=_(u'Requerido'), validator=V.Number(min=1, max=2, strip=True)) - descripcion = W.TextArea(name='descripcion', label=_(u'Descripcion'), - help_text=_(u'Descripcion.'), + descripcion = W.TextField(label=_(u'Descripción'), + help_text=_(u'Descripción.'), validator=V.UnicodeString(not_empty=False, strip=True)) #docentes = W.MultipleSelectField(name="docentes", @@ -168,6 +169,7 @@ class CursoController(controllers.Controller, identity.SecureResource): """Basic model admin interface""" require = identity.has_permission('admin') curso_alumno = CursoAlumnoController() + alumno = AlumnoInscriptoController() @expose() def default(self, tg_errors=None): @@ -354,7 +356,15 @@ class CursoController(controllers.Controller, identity.SecureResource): correctas = 0 for ej in r.ejercicios: for ins in ej.instancias: - c = Correccion.selectBy(instancia=ins, entregador=i) + if ej.grupal: + # Busco la correccion del grupo + g = Grupo.selectByAlumno(i.alumno).getOne() + c = Correccion.selectBy(instancia=ins, entregador=g.grupo) + print " ", list(c) + else: + print "Alumno" + # 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 > 7: @@ -367,5 +377,55 @@ class CursoController(controllers.Controller, identity.SecureResource): 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 > 7: + 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 #}}}