From: Leandro Lucarella Date: Wed, 28 Feb 2007 01:58:06 +0000 (+0000) Subject: Aceptar IDs en métodos add_xxx() donde tiene sentido. X-Git-Tag: pre-merge~49 X-Git-Url: https://git.llucax.com/software/sercom.git/commitdiff_plain/6117732b761e9226bcf5c99de1ead2e12f145e28?ds=sidebyside Aceptar IDs en métodos add_xxx() donde tiene sentido. Gracias a esto, los constructores y el set() ahora también pueden tomar como parámetro listas de IDs en vez de listas de objetos. Muy útil para usarse con diccionarios que vienen directo de la web. También se agrega el método byPadron() a Alumno para consistencia. --- diff --git a/sercom/model.py b/sercom/model.py index 1b88848..46fa8b9 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -151,16 +151,30 @@ class Curso(SQLObject): #{{{ self.add_alumno(a) def add_docente(self, docente, **kw): - return DocenteInscripto(curso=self, docente=docente, **kw) + if isinstance(docente, Docente): + kw['docente'] = docente + else: + kw['docenteID'] = docente + return DocenteInscripto(curso=self, **kw) def remove_docente(self, docente): - DocenteInscripto.pk.get(curso=self, docente=docente).destroySelf() + if isinstance(docente, Docente): + DocenteInscripto.pk.get(curso=self, docente=docente).destroySelf() + else: + DocenteInscripto.pk.get(curso=self, docenteID=docente).destroySelf() def add_alumno(self, alumno, **kw): - return AlumnoInscripto(curso=self, alumno=alumno, **kw) + if isinstance(alumno, Alumno): + kw['alumno'] = alumno + else: + kw['alumnoID'] = alumno + return AlumnoInscripto(curso=self, **kw) def remove_alumno(self, alumno): - AlumnoInscripto.pk.get(curso=self, alumno=alumno).destroySelf() + if isinstance(alumno, Alumno): + AlumnoInscripto.pk.get(curso=self, alumno=alumno).destroySelf() + else: + AlumnoInscripto.pk.get(curso=self, alumnoID=alumno).destroySelf() def add_grupo(self, nombre, **kw): return Grupo(curso=self, nombre=unicode(nombre), **kw) @@ -169,7 +183,11 @@ class Curso(SQLObject): #{{{ Grupo.pk.get(curso=self, nombre=nombre).destroySelf() def add_ejercicio(self, numero, enunciado, **kw): - return Ejercicio(curso=self, numero=numero, enunciado=enunciado, **kw) + if isinstance(enunciado, Enunciado): + kw['enunciado'] = enunciado + else: + kw['enunciadoID'] = enunciado + return Ejercicio(curso=self, numero=numero, **kw) def remove_ejercicio(self, numero): Ejercicio.pk.get(curso=self, numero=numero).destroySelf() @@ -299,6 +317,10 @@ class Alumno(Usuario): #{{{ def _set_padron(self, padron): self.usuario = padron + @classmethod + def byPadron(cls, padron): + return cls.byUsuario(unicode(padron)) + def __repr__(self): return 'Alumno(id=%s, padron=%s, nombre=%s, password=%s, email=%s, ' \ 'telefono=%s, activo=%s, creado=%s, observaciones=%s)' \ @@ -681,16 +703,30 @@ class Grupo(Entregador): #{{{ self.add_tutor(t) def add_miembro(self, alumno, **kw): - return Miembro(grupo=self, alumno=alumno, **kw) + if isinstance(alumno, Alumno): + kw['alumno'] = alumno + else: + kw['alumnoID'] = alumno + return Miembro(grupo=self, **kw) def remove_miembro(self, alumno): - Miembro.pk.get(grupo=self, alumno=alumno).destroySelf() + if isinstance(alumno, Alumno): + Miembro.pk.get(grupo=self, alumno=alumno).destroySelf() + else: + Miembro.pk.get(grupo=self, alumnoID=alumno).destroySelf() def add_tutor(self, docente, **kw): - return Tutor(grupo=self, docente=docente, **kw) + if isinstance(docente, Docente): + kw['docente'] = docente + else: + kw['docenteID'] = docente + return Tutor(grupo=self, **kw) def remove_tutor(self, docente): - Tutor.pk.get(grupo=self, docente=docente).destroySelf() + if isinstance(docente, Alumno): + Tutor.pk.get(grupo=self, docente=docente).destroySelf() + else: + Tutor.pk.get(grupo=self, docenteID=docente).destroySelf() def __repr__(self): return 'Grupo(id=%s, nombre=%s, responsable=%s, nota=%s, ' \