X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/blobdiff_plain/4ad9a93a62ad9629de45e53270442e2be70049b6..80066ce43bd7bac9343044fd8a6f304a5ff841c3:/sercom/model.py?ds=sidebyside diff --git a/sercom/model.py b/sercom/model.py index 4ddab71..b7353e5 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -109,16 +109,7 @@ def srepr(obj): #{{{ 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) @@ -162,7 +153,7 @@ class Curso(SQLObject, ByObject): #{{{ % (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 @@ -267,7 +258,7 @@ class Alumno(Usuario): #{{{ self.telefono, self.activo, self.creado, self.observaciones) #}}} -class Tarea(InheritableSQLObject, ByObject): #{{{ +class Tarea(InheritableSQLObject): #{{{ class sqlmeta: createSQL = r''' CREATE TABLE dependencia ( @@ -332,7 +323,7 @@ CREATE TABLE dependencia ( return self.nombre #}}} -class Enunciado(SQLObject, ByObject): #{{{ +class Enunciado(SQLObject): #{{{ class sqlmeta: createSQL = r''' CREATE TABLE enunciado_tarea ( @@ -439,7 +430,7 @@ class CasoDePrueba(SQLObject): #{{{ 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) @@ -466,7 +457,7 @@ class Ejercicio(SQLObject, ByObject): #{{{ self.enunciado.shortrepr()) #}}} -class InstanciaDeEntrega(SQLObject, ByObject): #{{{ +class InstanciaDeEntrega(SQLObject): #{{{ class sqlmeta: createSQL = r''' CREATE TABLE instancia_tarea ( @@ -540,7 +531,7 @@ 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) @@ -568,7 +559,7 @@ class DocenteInscripto(SQLObject, ByObject): #{{{ 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) @@ -645,7 +636,7 @@ class AlumnoInscripto(Entregador): #{{{ return self.alumno.shortrepr() #}}} -class Tutor(SQLObject, ByObject): #{{{ +class Tutor(SQLObject): #{{{ # Clave grupo = ForeignKey('Grupo', notNone=True) docente = ForeignKey('DocenteInscripto', notNone=True) @@ -663,7 +654,7 @@ class Tutor(SQLObject, ByObject): #{{{ 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) @@ -682,7 +673,7 @@ class Miembro(SQLObject, ByObject): #{{{ 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 @@ -727,7 +718,7 @@ class Entrega(SQLObject, ByObject): #{{{ self.codigo) #}}} -class Correccion(SQLObject, ByObject): #{{{ +class Correccion(SQLObject): #{{{ # Clave instancia = ForeignKey('InstanciaDeEntrega', notNone=True) entregador = ForeignKey('Entregador', notNone=True) # Docente no tiene @@ -752,7 +743,7 @@ class Correccion(SQLObject, ByObject): #{{{ 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) @@ -841,7 +832,10 @@ class Rol(SQLObject): #{{{ # 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 @@ -853,6 +847,12 @@ class Permiso(object): #{{{ 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 #}}}