]> git.llucax.com Git - z.facultad/75.52/sercom.git/blobdiff - sercom/subcontrollers/curso/__init__.py
InstanciaDeEntrega.observaciones no puede ser None para simplificar concatenación.
[z.facultad/75.52/sercom.git] / sercom / subcontrollers / curso / __init__.py
index 62dc1cc6814c44a52ba1c6774267d3f2694b5fb3..b9ce5856b9bb5199378a285af385060d4b1c2450 100644 (file)
@@ -10,12 +10,15 @@ 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, Correccion, 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
+from docente import DocenteInscriptoController
 #}}}
 
 #{{{ Configuración
@@ -103,17 +106,8 @@ def validate_del(id):
     return val.validate_del(cls, name, id)
 #}}}
 
-def get_ejercicios():
-    return [(fk1.id, fk1.shortrepr()) for fk1 in Ejercicio.select()]
-
 def get_docentes():
-    return [(fk1.id, fk1.shortrepr()) for fk1 in Docente.select()]
-
-def get_alumnos():
-    return [(fk1.id, fk1.shortrepr()) for fk1 in Alumno.select()]
-
-def get_grupos():
-    return [(fk1.id, fk1.shortrepr()) for fk1 in Grupo.select()]
+    return [(fk1.id, fk1.shortrepr()) for fk1 in Docente.selectBy(activo=True)]
 
 
 #{{{ Formulario
@@ -170,6 +164,9 @@ class CursoController(controllers.Controller, identity.SecureResource):
     require = identity.has_permission('admin')
     curso_alumno = CursoAlumnoController()
     alumno = AlumnoInscriptoController()
+    grupo = GrupoController()
+    ejercicio = EjercicioController()
+    docente = DocenteInscriptoController()
 
     @expose()
     def default(self, tg_errors=None):
@@ -184,7 +181,7 @@ class CursoController(controllers.Controller, identity.SecureResource):
     @paginate('records')
     def list(self):
         """List records in model"""
-        r = cls.select()
+        r = cls.select().orderBy((-cls.q.anio, -cls.q.cuatrimestre, cls.q.numero))
         return dict(records=r, name=name, namepl=namepl)
 
     @expose()
@@ -227,20 +224,10 @@ class CursoController(controllers.Controller, identity.SecureResource):
     def edit(self, id, **kw):
         """Edit record in model"""
         r = validate_get(id)
-        class EmptyClass:
-            pass
-        values = EmptyClass()
-        values.id = r.id
-        values.anio = r.anio
-        values.numero = r.numero
-        values.cuatrimestre = r.cuatrimestre
-        values.cursoID = r.id
-        values.descripcion = r.descripcion
         # cargo la lista con los docentes asignados al curso
-        values.docentes_to = [{"id":d.docente.id, "label":d.docente.shortrepr()} for d in DocenteInscripto.selectBy(curso=r.id)]
-        values.alumnos_inscriptos = [{"id":a.alumno.id, "label":a.alumno.shortrepr()} for a in AlumnoInscripto.selectBy(curso=r.id)]
-
-        return dict(name=name, namepl=namepl, record=values, form=form)
+        r.docentes_to = [{"id":d.docente.id, "label":d.docente.shortrepr().replace("'", "\\'")} for d in r.docentes]
+        r.alumnos_inscriptos = [{"id":a.alumno.id, "label":a.alumno.shortrepr().replace("'", "\\'")} for a in r.alumnos]
+        return dict(name=name, namepl=namepl, record=r, form=form)
 
     @validate(form=form)
     @error_handler(edit)
@@ -315,13 +302,13 @@ class CursoController(controllers.Controller, identity.SecureResource):
                 if row == []:
                     continue
                 try:
-                    u = Alumno(row[0], nombre=row[1])
+                    u = Alumno(row[0], nombre=row[1], roles=[Rol.by_nombre('alumno')])
                 except:
                     u = Alumno.byPadron(row[0])
                 try:
                     u.email = row[2]
                     u.telefono = row[3]
-                    u.contrasenia = row[0]
+                    u.password = row[0]
                     u.activo = True
                     curso.add_alumno(u)
                     ok.append(row)
@@ -353,6 +340,8 @@ class CursoController(controllers.Controller, identity.SecureResource):
             miembro = Grupo.selectByAlumno(i.alumno)
             if miembro.count() > 0:
                 col["Grupo"] = miembro[0].grupo.shortrepr()
+            else:
+                col["Grupo"] = ""
             correctas = 0
             for ej in r.ejercicios:
                 for ins in ej.instancias:
@@ -360,17 +349,15 @@ class CursoController(controllers.Controller, identity.SecureResource):
                         # 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:
+                        if c[0].nota >= 4:
                             correctas += 1
                     else:
-                        col["E"+str(ej.numero)+str(ins.numero)] = "" 
+                        col["E"+str(ej.numero)+str(ins.numero)] = ""
             col["EA"] = correctas
             col["NP"] = i.nota_practica
             col["NF"] = i.nota_final
@@ -401,6 +388,8 @@ class CursoController(controllers.Controller, identity.SecureResource):
             miembro = Grupo.selectByAlumno(i.alumno)
             if miembro.count() > 0:
                 col.append(miembro[0].grupo.shortrepr())
+            else:
+                col.append("")
             correctas = 0
             for ej in r.ejercicios:
                 for ins in ej.instancias:
@@ -413,7 +402,7 @@ class CursoController(controllers.Controller, identity.SecureResource):
                         c = Correccion.selectBy(instancia=ins, entregador=i)
                     if c.count() > 0:
                         col.append(str(c[0].nota))
-                        if c[0].nota > 7:
+                        if c[0].nota > 4:
                             correctas += 1
                     else:
                         col.append("")
@@ -425,7 +414,6 @@ class CursoController(controllers.Controller, identity.SecureResource):
         s = ",".join(cols) + "\n"
         for i in rows:
             s = s + ",".join(i) + "\n"
-        
         return s
 #}}}