]> git.llucax.com Git - software/sercom.git/commitdiff
Agrego planilla de notas de Curso
authorRicardo Markiewicz <rmarkie@fi.uba.ar>
Tue, 13 Mar 2007 03:20:08 +0000 (03:20 +0000)
committerRicardo Markiewicz <rmarkie@fi.uba.ar>
Tue, 13 Mar 2007 03:20:08 +0000 (03:20 +0000)
sercom/model.py
sercom/subcontrollers/curso/__init__.py
sercom/subcontrollers/curso/templates/list.kid
sercom/subcontrollers/curso/templates/notas.kid [new file with mode: 0644]

index 6724e8709c15092220fe37ba6ca1c59a19cdc6e2..cff6afdfb040255f94b9138673dcbf490236f2c6 100644 (file)
@@ -650,7 +650,7 @@ class Grupo(Entregador): #{{{
     @classmethod
     def selectByAlumno(self, alumno):
         return Miembro.select(AND(Miembro.q.alumnoID == AlumnoInscripto.q.id,
     @classmethod
     def selectByAlumno(self, alumno):
         return Miembro.select(AND(Miembro.q.alumnoID == AlumnoInscripto.q.id,
-                AlumnoInscripto.q.alumnoID == alumno.id))
+                AlumnoInscripto.q.alumnoID == alumno.id, Miembro.q.baja == None))
 
     def shortrepr(self):
         return 'grupo:' + self.nombre
 
     def shortrepr(self):
         return 'grupo:' + self.nombre
index 35e9952fda413ce800f383e49ce974a6ff0a5ee2..0a30cda43b46118115b7cdae73656375c9a19dd0 100644 (file)
@@ -10,7 +10,7 @@ from turbogears import identity
 from turbogears import paginate
 from docutils.core import publish_parts
 from sercom.subcontrollers import validate as val
 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 curso_alumno import *
 from sqlobject import *
 from sqlobject.dberrors import *
@@ -327,5 +327,45 @@ class CursoController(controllers.Controller, identity.SecureResource):
                     row.append(str(e))
                     fail.append(row)
         return dict(ok=ok, fail=fail)
                     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)
 #}}}
 
 #}}}
 
index 2634178f9bb3e18aeeefa5e51f7f28c22a3cef54..e832d9863327d32b8544936bc11989faf6a8c7ad 100644 (file)
@@ -37,6 +37,7 @@
         <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>
         <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>
             <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>
diff --git a/sercom/subcontrollers/curso/templates/notas.kid b/sercom/subcontrollers/curso/templates/notas.kid
new file mode 100644 (file)
index 0000000..dab39e6
--- /dev/null
@@ -0,0 +1,27 @@
+<!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 : -->