]> git.llucax.com Git - software/sercom.git/blobdiff - sercom/model.py
Permitir cambiar/especificar password al crear un docente.
[software/sercom.git] / sercom / model.py
index c292de850dcfca3d338c2187f98e9ce8659e5163..9a3dd636a6749767c39a778093c8a7955861e020 100644 (file)
@@ -155,7 +155,8 @@ class Curso(SQLObject): #{{{
 
 class Usuario(InheritableSQLObject): #{{{
     # Clave (para docentes puede ser un nombre de usuario arbitrario)
-    usuario         = UnicodeCol(length=10, alternateID=True)
+    usuario         = UnicodeCol(length=10, alternateID=True,
+                        alternateMethodName='by_usuario')
     # Campos
     contrasenia     = UnicodeCol(length=255, default=None)
     nombre          = UnicodeCol(length=255, notNone=True)
@@ -187,6 +188,10 @@ class Usuario(InheritableSQLObject): #{{{
     def _get_user_name(self): # para identity
         return self.usuario
 
+    @classmethod
+    def byUsuario(cls, usuario): # TODO eliminar, backward compat
+        return cls.by_usuario(usuario)
+
     @classmethod
     def by_user_name(cls, user_name): # para identity
         user = cls.byUsuario(user_name)
@@ -221,10 +226,10 @@ class Usuario(InheritableSQLObject): #{{{
 class Docente(Usuario): #{{{
     _inheritable = False
     # Campos
-    nombrado    = BoolCol(notNone=True, default=True)
+    nombrado        = BoolCol(notNone=True, default=True)
     # Joins
-    enunciados  = MultipleJoin('Enunciado', joinColumn='autor_id')
-    cursos      = MultipleJoin('DocenteInscripto')
+    enunciados      = MultipleJoin('Enunciado', joinColumn='autor_id')
+    inscripciones   = MultipleJoin('DocenteInscripto')
 
     def add_entrega(self, instancia, **kw):
         return Entrega(instancia=instancia, **kw)
@@ -266,9 +271,13 @@ class Alumno(Usuario): #{{{
         self.usuario = padron
 
     @classmethod
-    def byPadron(cls, padron):
+    def byPadron(cls, padron): # TODO eliminar, backward compat
         return cls.byUsuario(unicode(padron))
 
+    @classmethod
+    def by_padron(cls, padron):
+        return cls.by_usuario(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)' \
@@ -430,9 +439,7 @@ class Enunciado(SQLObject): #{{{
     descripcion     = UnicodeCol(length=255, default=None)
     autor           = ForeignKey('Docente', cascade='null')
     creado          = DateTimeCol(notNone=True, default=DateTimeCol.now)
-    archivo         = BLOBCol(default=None)
-    archivo_name    = UnicodeCol(length=255, default=None)
-    archivo_type    = UnicodeCol(length=255, default=None)
+    archivos        = BLOBCol(default=None)
     # Joins
     ejercicios      = MultipleJoin('Ejercicio')
     casos_de_prueba = MultipleJoin('CasoDePrueba')
@@ -526,7 +533,7 @@ class InstanciaDeEntrega(SQLObject): #{{{
     fin             = DateTimeCol(notNone=True)
     inicio_proceso  = DateTimeCol(default=None)
     fin_proceso     = DateTimeCol(default=None)
-    observaciones   = UnicodeCol(default=None)
+    observaciones   = UnicodeCol(notNone=True, default=u'')
     activo          = BoolCol(notNone=True, default=True)
     # Joins
     entregas        = MultipleJoin('Entrega', joinColumn='instancia_id')
@@ -656,7 +663,7 @@ class Grupo(Entregador): #{{{
             docente = docente.id
         # FIXME ídem add_miembro()
         try:
-            t = Tutor.selectBy(grupo=self, docenteID=alumno).getOne()
+            t = Tutor.selectBy(grupo=self, docenteID=docente).getOne()
             t.baja = None # si ya existía, le sacamos la fecha de baja
             return t
         except SQLObjectNotFound: # creo uno nuevo
@@ -877,11 +884,11 @@ class ComandoPruebaEjecutado(ComandoEjecutado): #{{{
 
     def __repr__(self):
         return super(ComandoPruebaEjecutado, self).__repr__(
-            'comando=%s, entrega=%s' % (self.comando.shortrepr(),
-                self.entrega.shortrepr()))
+            'comando=%s, prueba=%s' % (self.comando.shortrepr(),
+                self.prueba.shortrepr()))
 
     def shortrepr(self):
-        return '%s:%s:%s' % (self.tarea.shortrepr(), self.entrega.shortrepr(),
+        return '%s:%s:%s' % (self.tarea.shortrepr(), self.prueba.shortrepr(),
             self.caso_de_prueba.shortrepr())
 #}}}
 
@@ -945,7 +952,7 @@ class Rol(SQLObject): #{{{
     # Campos
     descripcion = UnicodeCol(length=255, default=None)
     creado      = DateTimeCol(notNone=True, default=datetime.now)
-    permisos    = TupleCol(notNone=True)
+    permisos    = TupleCol(notNone=True, length=2**16)
     # Joins
     usuarios    = RelatedJoin('Usuario', addRemoveName='_usuario')