X-Git-Url: https://git.llucax.com/software/sercom.git/blobdiff_plain/9dd936c95bb13b4cf8da055a28d57c32fc2861e2..7e9b43b2435668edbd58b304ef02c1171afec5a8:/sercom/model.py diff --git a/sercom/model.py b/sercom/model.py index c01b63c..9124dde 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -268,6 +268,16 @@ class Alumno(Usuario): #{{{ #}}} class Tarea(InheritableSQLObject, ByObject): #{{{ + class sqlmeta: + createSQL = r''' +CREATE TABLE dependencia ( + padre_id INTEGER NOT NULL CONSTRAINT tarea_id_exists + REFERENCES tarea(id), + hijo_id INTEGER NOT NULL CONSTRAINT tarea_id_exists + REFERENCES tarea(id), + orden INT, + PRIMARY KEY (padre_id, hijo_id) +)''' # Clave nombre = UnicodeCol(length=30, alternateID=True) # Campos @@ -323,6 +333,16 @@ class Tarea(InheritableSQLObject, ByObject): #{{{ #}}} class Enunciado(SQLObject, ByObject): #{{{ + class sqlmeta: + createSQL = r''' +CREATE TABLE enunciado_tarea ( + enunciado_id INTEGER NOT NULL CONSTRAINT enunciado_id_exists + REFERENCES enunciado(id), + tarea_id INTEGER NOT NULL CONSTRAINT tarea_id_exists + REFERENCES tarea(id), + orden INT, + PRIMARY KEY (enunciado_id, tarea_id) +)''' # Clave nombre = UnicodeCol(length=60) anio = IntCol(notNone=True) @@ -447,6 +467,16 @@ class Ejercicio(SQLObject, ByObject): #{{{ #}}} class InstanciaDeEntrega(SQLObject, ByObject): #{{{ + class sqlmeta: + createSQL = r''' +CREATE TABLE instancia_tarea ( + instancia_id INTEGER NOT NULL CONSTRAINT instancia_id_exists + REFERENCES instancia_de_entrega(id), + tarea_id INTEGER NOT NULL CONSTRAINT tarea_id_exists + REFERENCES tarea(id), + orden INT, + PRIMARY KEY (instancia_id, tarea_id) +)''' # Clave ejercicio = ForeignKey('Ejercicio', notNone=True) numero = IntCol(notNone=True) @@ -811,7 +841,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 @@ -823,6 +856,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 #}}}