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
from curso_alumno import *
from sqlobject import *
from sqlobject.dberrors import *
from sercom.widgets import *
+from alumno import AlumnoInscriptoController
+from grupo import GrupoController
#}}}
#{{{ Configuración
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",
"""Basic model admin interface"""
require = identity.has_permission('admin')
curso_alumno = CursoAlumnoController()
+ alumno = AlumnoInscriptoController()
+ grupo = GrupoController()
@expose()
def default(self, tg_errors=None):
row.append(str(e))
fail.append(row)
return dict(ok=ok, fail=fail)
+
+ @expose(template='kid:%s.templates.notas' % __name__)
+ def notas(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["Padron"] = i.alumno.padron
+ col["Nombre"] = i.alumno.nombre
+ miembro = Grupo.selectByAlumno(i.alumno)
+ if miembro.count() > 0:
+ col["Grupo"] = 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)
+ 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:
+ 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 > 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
#}}}