]> git.llucax.com Git - z.facultad/75.52/sercom.git/blobdiff - sercom/subcontrollers/curso/__init__.py
related join
[z.facultad/75.52/sercom.git] / sercom / subcontrollers / curso / __init__.py
index 0e488dd92f1dc683b80bedb86d219bc590522b3a..7411437dba602e684723fc6842b650de65a37543 100644 (file)
@@ -144,6 +144,7 @@ class CursoForm(W.TableForm):
 
         alumnos = AjaxMultiSelect(label=_(u'Alumnos'),
                 validator=V.Int(),
+                attrs = dict(size='20'),
                 on_add="alumnos_agregar_a_la_lista")
 
     fields = Fields()
@@ -229,7 +230,7 @@ class CursoController(controllers.Controller, identity.SecureResource):
         values.descripcion = r.descripcion
         # cargo la lista con los docentes asignados al curso
         values.docentes_curso = [{"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.nombre} for a in AlumnoInscripto.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)
 
@@ -243,6 +244,7 @@ class CursoController(controllers.Controller, identity.SecureResource):
         
         docentes = kw.get('docentes_curso', [])
         alumnos = kw.get('alumnos', [])
+        alumnos_inscriptos = AlumnoInscripto.selectBy(curso=id)
         """ levanto los doncentes del curso para ver cuales tengo que agregar """
         docentes_inscriptos = DocenteInscripto.selectBy(curso=id)
         
@@ -259,6 +261,12 @@ class CursoController(controllers.Controller, identity.SecureResource):
                 pass
          
         """ Verifico que los alumnos no esten ya inscriptos """
+        for a in alumnos_inscriptos:
+            if (a.id not in alumnos):
+                try:
+                    r.remove_alumno(a.alumno)
+                except: 
+                    pass
         for a in alumnos:
             try:
                 r.add_alumno(a)
@@ -280,5 +288,39 @@ class CursoController(controllers.Controller, identity.SecureResource):
         r.destroySelf()
         flash(_(u'El %s fue eliminado permanentemente.') % name)
         raise redirect('../list')
+        
+    @expose(template='kid:%s.templates.from_file' % __name__)
+    def from_file(self, id):
+        return dict(cursoID=int(id))
+
+    @expose(template='kid:%s.templates.import_results' % __name__)
+    def from_file_add(self, id, archivo):
+        """ Se espera :
+             padron,nombre,email,telefono
+        """
+        import csv
+        lines = archivo.file.read().split('\n')
+        ok = []
+        fail = []
+        curso = Curso.get(int(id))
+        for line in lines:
+            for row in csv.reader([line]):
+                if row == []:
+                    continue
+                try:
+                    u = Alumno(row[0], nombre=row[1])
+                except:
+                    u = Alumno.byPadron(row[0])
+                try:
+                    u.email = row[2]
+                    u.telefono = row[3]
+                    u.contrasenia = row[0]
+                    u.activo = True
+                    curso.add_alumno(u)
+                    ok.append(row)
+                except Exception, e:
+                    row.append(str(e))
+                    fail.append(row)
+        return dict(ok=ok, fail=fail)    
 #}}}