def update(self, id, **kw): """Save or create record to model""" params = dict([(k,v) for (k,v) in kw.iteritems() if k in Curso.sqlmeta.columns.keys()]) r = validate_set(id, params) docentesIds = kw.get('docentes_to', []) alumnosIds = kw.get('alumnos', []) docentesIds = isinstance(docentesIds, basestring) and [int(docentesIds)] or [int(d) for d in docentesIds] alumnosIds = isinstance(alumnosIds, basestring) and [int(alumnosIds)] or [int(d) for d in alumnosIds] alumnos_inscriptos = AlumnoInscripto.selectBy(curso=id) docentes_inscriptos = DocenteInscripto.selectBy(curso=id) """ elimino a los docentes que no fueron seleccionados y agrego los nuevos """ for di in docentes_inscriptos: if di.docenteID in docentesIds: docentesIds.remove(di.docenteID) else: r.remove_docente(di.docenteID) for d in docentesIds: r.add_docente(d) """ idem con los alumnos """ for ai in alumnos_inscriptos: if ai.alumnoID in alumnosIds: alumnosIds.remove(ai.alumnoID) else: r.remove_alumno(ai.alumno) for a in alumnosIds: r.add_alumno(a) flash(_(u'El %s fue actualizado.') % name) raise redirect('../list')
def create(self, **kw): """Save or create record to model""" r = validate_new(kw) docentes = kw.get('docentes', []) alumnos = kw.get('alumnos', []) """ Elimino todos los docentes asignados al curso y los agrego nuevamente""" for d in DocenteInscripto.selectBy(curso=r): d.destroySelf() """ Agrego la nueva seleccion """ for d in docentes: r.add_docente(Docente(d)) """ Elimino a los alumnos y los vuelvo a agregar """ for a in AlumnoInscripto.selectBy(curso=r): d.destroySelf() for a in alumnos: r.add_alumno(Alumno(a)) flash(_(u'Se creó un nuevo %s.') % name) raise redirect('list')