]> 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 ae1ed7a20ef6a2b9d56a520aa405b3792634a20a..7411437dba602e684723fc6842b650de65a37543 100644 (file)
@@ -24,20 +24,6 @@ namepl = name + 's'
 #}}}
 
 ajax = u""" 
-    function makeOption(option) {
-        return OPTION({"value": option.value}, option.text);
-    }
-                   
-    function moveOption( fromSelect, toSelect) {
-        // add 'selected' nodes toSelect
-        appendChildNodes(toSelect,
-        map( makeOption,ifilter(itemgetter('selected'), $(fromSelect).options)));
-        // remove the 'selected' fromSelect
-        replaceChildNodes(fromSelect,
-            list(ifilterfalse(itemgetter('selected'), $(fromSelect).options))
-        );
-    }
-
     function alumnos_agregar_a_la_lista(texto, lista)
     {
         t = MochiKit.DOM.getElement(texto);
@@ -81,7 +67,7 @@ ajax = u"""
         var d = loadJSONDoc(url);
         d.addCallbacks(procesar, err);
     }
-
+    
     function onsubmit()
     {
         /* TODO : Validar datos y evitar el submit si no esta completo */
@@ -147,9 +133,9 @@ class CursoForm(W.TableForm):
             options=get_docentes,
             validator=V.Int(not_empty=True))
         addDocente = W.Button(default='Asignar', label='',
-            attrs=dict( onclick='moveOption("form_docentes","form_docentes_curso")'))
+            attrs=dict( onclick='mover("form_docentes","form_docentes_curso")'))
         remDocente = W.Button(default='Remover', label='',
-            attrs=dict( onclick='moveOption("form_docentes_curso","form_docentes")'))
+            attrs=dict( onclick='remover("form_docentes_curso","form_docentes")'))
         docentes_curso = W.MultipleSelectField(name="docentes_curso",
             label=_(u'Docentes del curso'),
             attrs=dict(style='width:300px'),
@@ -158,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()
@@ -242,8 +229,8 @@ class CursoController(controllers.Controller, identity.SecureResource):
         values.cursoID = r.id
         values.descripcion = r.descripcion
         # cargo la lista con los docentes asignados al curso
-        values.docentes_curso = [{"id":d.docente.id, "label":d.docente.nombre} 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.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.shortrepr()} for a in AlumnoInscripto.selectBy(curso=r.id)]
        
         return dict(name=name, namepl=namepl, record=values, form=form)
 
@@ -257,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)
         
@@ -273,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)
@@ -294,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)    
 #}}}