return obj
#}}}
-class ByObject(object): #{{{
- @classmethod
- def by(cls, **kw):
- try:
- return cls.selectBy(**kw)[0]
- except IndexError:
- raise SQLObjectNotFound, "The object %s with columns %s does not exist" % (cls.__name__, kw)
-#}}}
-
-class Curso(SQLObject, ByObject): #{{{
+class Curso(SQLObject): #{{{
# Clave
anio = IntCol(notNone=True)
cuatrimestre = IntCol(notNone=True)
% (self.anio, self.cuatrimestre, self.numero)
#}}}
-class Usuario(InheritableSQLObject, ByObject): #{{{
+class Usuario(InheritableSQLObject): #{{{
# Clave (para docentes puede ser un nombre de usuario arbitrario)
usuario = UnicodeCol(length=10, alternateID=True)
# Campos
self.telefono, self.activo, self.creado, self.observaciones)
#}}}
-class Tarea(InheritableSQLObject, ByObject): #{{{
+class Tarea(InheritableSQLObject): #{{{
class sqlmeta:
createSQL = r'''
CREATE TABLE dependencia (
return self.nombre
#}}}
-class Enunciado(SQLObject, ByObject): #{{{
+class Enunciado(SQLObject): #{{{
class sqlmeta:
createSQL = r'''
CREATE TABLE enunciado_tarea (
return '%s:%s' % (self.enunciado.shortrepr(), self.nombre)
#}}}
-class Ejercicio(SQLObject, ByObject): #{{{
+class Ejercicio(SQLObject): #{{{
# Clave
curso = ForeignKey('Curso', notNone=True)
numero = IntCol(notNone=True)
self.enunciado.shortrepr())
#}}}
-class InstanciaDeEntrega(SQLObject, ByObject): #{{{
+class InstanciaDeEntrega(SQLObject): #{{{
class sqlmeta:
createSQL = r'''
CREATE TABLE instancia_tarea (
return self.numero
#}}}
-class DocenteInscripto(SQLObject, ByObject): #{{{
+class DocenteInscripto(SQLObject): #{{{
# Clave
curso = ForeignKey('Curso', notNone=True)
docente = ForeignKey('Docente', notNone=True)
return self.docente.shortrepr()
#}}}
-class Entregador(InheritableSQLObject, ByObject): #{{{
+class Entregador(InheritableSQLObject): #{{{
# Campos
nota = DecimalCol(size=3, precision=1, default=None)
nota_cursada = DecimalCol(size=3, precision=1, default=None)
return self.alumno.shortrepr()
#}}}
-class Tutor(SQLObject, ByObject): #{{{
+class Tutor(SQLObject): #{{{
# Clave
grupo = ForeignKey('Grupo', notNone=True)
docente = ForeignKey('DocenteInscripto', notNone=True)
return '%s-%s' % (self.docente.shortrepr(), self.grupo.shortrepr())
#}}}
-class Miembro(SQLObject, ByObject): #{{{
+class Miembro(SQLObject): #{{{
# Clave
grupo = ForeignKey('Grupo', notNone=True)
alumno = ForeignKey('AlumnoInscripto', notNone=True)
return '%s-%s' % (self.alumno.shortrepr(), self.grupo.shortrepr())
#}}}
-class Entrega(SQLObject, ByObject): #{{{
+class Entrega(SQLObject): #{{{
# Clave
instancia = ForeignKey('InstanciaDeEntrega', notNone=True)
entregador = ForeignKey('Entregador', default=None) # Si es None era un Docente
self.codigo)
#}}}
-class Correccion(SQLObject, ByObject): #{{{
+class Correccion(SQLObject): #{{{
# Clave
instancia = ForeignKey('InstanciaDeEntrega', notNone=True)
entregador = ForeignKey('Entregador', notNone=True) # Docente no tiene
return '%s,%s' % (self.entrega.shortrepr(), self.corrector.shortrepr())
#}}}
-class TareaEjecutada(InheritableSQLObject, ByObject): #{{{
+class TareaEjecutada(InheritableSQLObject): #{{{
# Clave
tarea = ForeignKey('Tarea', notNone=True)
entrega = ForeignKey('Entrega', notNone=True)
# No es un SQLObject porque no tiene sentido agregar/sacar permisos, están
# hardcodeados en el código
class Permiso(object): #{{{
+ max_valor = 1
def __init__(self, nombre, descripcion):
+ self.valor = Permiso.max_valor
+ Permiso.max_valor <<= 1
self.nombre = nombre
self.descripcion = descripcion
def permission_name(self): # para identity
return self.nombre
+ def __and__(self, other):
+ return self.valor & other.valor
+
+ def __or__(self, other):
+ return self.valor | other.valor
+
def __repr__(self):
return self.nombre
#}}}