class Tarea(InheritableSQLObject): #{{{
class sqlmeta:
- createSQL = r'''
+ createSQL = dict(sqlite=r'''
CREATE TABLE dependencia (
padre_id INTEGER NOT NULL CONSTRAINT tarea_id_exists
- REFERENCES tarea(id),
+ REFERENCES tarea(id) ON DELETE CASCADE,
hijo_id INTEGER NOT NULL CONSTRAINT tarea_id_exists
- REFERENCES tarea(id),
+ REFERENCES tarea(id) ON DELETE CASCADE,
orden INT,
PRIMARY KEY (padre_id, hijo_id)
-)'''
+)''')
# Clave
nombre = UnicodeCol(length=30, alternateID=True)
# Campos
class Enunciado(SQLObject): #{{{
class sqlmeta:
- createSQL = r'''
+ createSQL = dict(sqlite=r'''
CREATE TABLE enunciado_tarea (
enunciado_id INTEGER NOT NULL CONSTRAINT enunciado_id_exists
- REFERENCES enunciado(id),
+ REFERENCES enunciado(id) ON DELETE CASCADE,
tarea_id INTEGER NOT NULL CONSTRAINT tarea_id_exists
- REFERENCES tarea(id),
+ REFERENCES tarea(id) ON DELETE CASCADE,
orden INT,
PRIMARY KEY (enunciado_id, tarea_id)
-)'''
+)''')
# Clave
nombre = UnicodeCol(length=60)
anio = IntCol(notNone=True)
cuatrimestre = IntCol(notNone=True)
pk = DatabaseIndex(nombre, anio, cuatrimestre, unique=True)
# Campos
- autor = ForeignKey('Docente')
+ autor = ForeignKey('Docente', cascade='null')
descripcion = UnicodeCol(length=255, default=None)
creado = DateTimeCol(notNone=True, default=DateTimeCol.now)
archivo = BLOBCol(default=None)
class CasoDePrueba(SQLObject): #{{{
# Clave
- enunciado = ForeignKey('Enunciado')
+ enunciado = ForeignKey('Enunciado', cascade=True)
nombre = UnicodeCol(length=40, notNone=True)
pk = DatabaseIndex(enunciado, nombre, unique=True)
# Campos
class Ejercicio(SQLObject): #{{{
# Clave
- curso = ForeignKey('Curso', notNone=True)
+ curso = ForeignKey('Curso', notNone=True, cascade=True)
numero = IntCol(notNone=True)
pk = DatabaseIndex(curso, numero, unique=True)
# Campos
- enunciado = ForeignKey('Enunciado', notNone=True)
+ enunciado = ForeignKey('Enunciado', notNone=True, cascade=False)
grupal = BoolCol(notNone=True, default=False)
# Joins
instancias = MultipleJoin('InstanciaDeEntrega')
class InstanciaDeEntrega(SQLObject): #{{{
class sqlmeta:
- createSQL = r'''
+ createSQL = dict(sqlite=r'''
CREATE TABLE instancia_tarea (
instancia_id INTEGER NOT NULL CONSTRAINT instancia_id_exists
- REFERENCES instancia_de_entrega(id),
+ REFERENCES instancia_de_entrega(id) ON DELETE CASCADE,
tarea_id INTEGER NOT NULL CONSTRAINT tarea_id_exists
- REFERENCES tarea(id),
+ REFERENCES tarea(id) ON DELETE CASCADE,
orden INT,
PRIMARY KEY (instancia_id, tarea_id)
-)'''
+)''')
# Clave
- ejercicio = ForeignKey('Ejercicio', notNone=True)
+ ejercicio = ForeignKey('Ejercicio', notNone=True, cascade=True)
numero = IntCol(notNone=True)
pk = DatabaseIndex(ejercicio, numero, unique=True)
# Campos
class DocenteInscripto(SQLObject): #{{{
# Clave
- curso = ForeignKey('Curso', notNone=True)
- docente = ForeignKey('Docente', notNone=True)
+ curso = ForeignKey('Curso', notNone=True, cascade=True)
+ docente = ForeignKey('Docente', notNone=True, cascade=True)
pk = DatabaseIndex(curso, docente, unique=True)
# Campos
corrige = BoolCol(notNone=True, default=True)
class Grupo(Entregador): #{{{
_inheritable = False
# Clave
- curso = ForeignKey('Curso', notNone=True)
+ curso = ForeignKey('Curso', notNone=True, cascade=True)
nombre = UnicodeCol(length=20, notNone=True)
pk = DatabaseIndex(curso, nombre, unique=True)
# Campos
- responsable = ForeignKey('AlumnoInscripto', default=None)
+ responsable = ForeignKey('AlumnoInscripto', default=None, cascade='null')
# Joins
miembros = MultipleJoin('Miembro')
tutores = MultipleJoin('Tutor')
class AlumnoInscripto(Entregador): #{{{
_inheritable = False
# Clave
- curso = ForeignKey('Curso', notNone=True)
- alumno = ForeignKey('Alumno', notNone=True)
+ curso = ForeignKey('Curso', notNone=True, cascade=True)
+ alumno = ForeignKey('Alumno', notNone=True, cascade=True)
pk = DatabaseIndex(curso, alumno, unique=True)
# Campos
condicional = BoolCol(notNone=True, default=False)
- tutor = ForeignKey('DocenteInscripto', default=None)
+ tutor = ForeignKey('DocenteInscripto', default=None, cascade='null')
# Joins
responsabilidades = MultipleJoin('Grupo', joinColumn='responsable_id')
membresias = MultipleJoin('Miembro', joinColumn='alumno_id')
class Tutor(SQLObject): #{{{
# Clave
- grupo = ForeignKey('Grupo', notNone=True)
- docente = ForeignKey('DocenteInscripto', notNone=True)
+ grupo = ForeignKey('Grupo', notNone=True, cascade=True)
+ docente = ForeignKey('DocenteInscripto', notNone=True, cascade=True)
pk = DatabaseIndex(grupo, docente, unique=True)
# Campos
alta = DateTimeCol(notNone=True, default=DateTimeCol.now)
class Miembro(SQLObject): #{{{
# Clave
- grupo = ForeignKey('Grupo', notNone=True)
- alumno = ForeignKey('AlumnoInscripto', notNone=True)
+ grupo = ForeignKey('Grupo', notNone=True, cascade=True)
+ alumno = ForeignKey('AlumnoInscripto', notNone=True, cascade=True)
pk = DatabaseIndex(grupo, alumno, unique=True)
# Campos
nota = DecimalCol(size=3, precision=1, default=None)
class Entrega(SQLObject): #{{{
# Clave
- instancia = ForeignKey('InstanciaDeEntrega', notNone=True)
- entregador = ForeignKey('Entregador', default=None) # Si es None era un Docente
+ instancia = ForeignKey('InstanciaDeEntrega', notNone=True, cascade=False)
+ entregador = ForeignKey('Entregador', default=None, cascade=False) # Si es None era un Docente
fecha = DateTimeCol(notNone=True, default=DateTimeCol.now)
pk = DatabaseIndex(instancia, entregador, fecha, unique=True)
# Campos
class Correccion(SQLObject): #{{{
# Clave
- instancia = ForeignKey('InstanciaDeEntrega', notNone=True)
- entregador = ForeignKey('Entregador', notNone=True) # Docente no tiene
+ instancia = ForeignKey('InstanciaDeEntrega', notNone=True, cascade=False)
+ entregador = ForeignKey('Entregador', notNone=True, cascade=False) # Docente no tiene
pk = DatabaseIndex(instancia, entregador, unique=True)
# Campos
- entrega = ForeignKey('Entrega', notNone=True)
- corrector = ForeignKey('DocenteInscripto', notNone=True)
+ entrega = ForeignKey('Entrega', notNone=True, cascade=False)
+ corrector = ForeignKey('DocenteInscripto', default=None, cascade='null')
asignado = DateTimeCol(notNone=True, default=DateTimeCol.now)
corregido = DateTimeCol(default=None)
nota = DecimalCol(size=3, precision=1, default=None)
class TareaEjecutada(InheritableSQLObject): #{{{
# Clave
- tarea = ForeignKey('Tarea', notNone=True)
- entrega = ForeignKey('Entrega', notNone=True)
+ tarea = ForeignKey('Tarea', notNone=True, cascade=False)
+ entrega = ForeignKey('Entrega', notNone=True, cascade=False)
pk = DatabaseIndex(tarea, entrega, unique=True)
# Campos
inicio = DateTimeCol(notNone=True, default=DateTimeCol.now)
class Prueba(SQLObject): #{{{
# Clave
- tarea_ejecutada = ForeignKey('TareaEjecutada', notNone=True)
- caso_de_prueba = ForeignKey('CasoDePrueba', notNone=True)
+ tarea_ejecutada = ForeignKey('TareaEjecutada', notNone=True, cascade=False)
+ caso_de_prueba = ForeignKey('CasoDePrueba', notNone=True, cascade=False)
pk = DatabaseIndex(tarea_ejecutada, caso_de_prueba, unique=True)
# Campos
inicio = DateTimeCol(notNone=True, default=DateTimeCol.now)