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 *
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:
+ 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)
#}}}
<td><a py:if="len(record.ejercicios)" href="${tg.url('/ejercicio/list')}"><span py:replace="len(record.ejercicios)">Ejercicio</span></a></td>
<td><a href="${tg.url('/curso/show/%d' % record.id)}">Ver</a>
<a href="${tg.url('/curso/edit/%d' % record.id)}">Editar</a>
+ <a href="${tg.url('/curso/notas/%d' % record.id)}">Notas</a>
<a href="${tg.url('/curso/delete/%d' % record.id)}" onclick="if (confirm('${_(u'Estás seguro? Tal vez sólo quieras desactivarlo mejor...')}')) { var f = document.createElement('form'); this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href; f.submit(); };return false;">Eliminar</a></td>
</tr>
</table>
--- /dev/null
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"
+ py:extends="'../../../templates/master.kid'">
+<head>
+<meta content="text/html; charset=utf-8" http-equiv="Content-Type" py:replace="''"/>
+<title>list</title>
+</head>
+<body>
+
+<h1>Notas del Curso : <span py:replace="curso.shortrepr()">Objetos</span></h1>
+
+<table class="list">
+ <tr>
+ <th py:for="i in cols" py:content="i" />
+ </tr>
+ <tr py:for="j in range(len(rows))">
+ <td py:for="i in cols" py:content="rows[j][i]" />
+ </tr>
+</table>
+
+<br/>
+<a href="${tg.url('/curso/list')}">Volver</a>
+
+</body>
+</html>
+
+<!-- vim: set et sw=4 sts=4 : -->