X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/0c099354041335dc9a9248b7b791656e24b53138..281158557f773841462958aec40688efca0d5b12:/sercom/subcontrollers/curso/__init__.py?ds=sidebyside diff --git a/sercom/subcontrollers/curso/__init__.py b/sercom/subcontrollers/curso/__init__.py index 0e488dd..7411437 100644 --- a/sercom/subcontrollers/curso/__init__.py +++ b/sercom/subcontrollers/curso/__init__.py @@ -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) #}}}