From: Leandro Lucarella Date: Mon, 26 Feb 2007 22:29:25 +0000 (+0000) Subject: Agregar createSQL al sqlmeta de las clases que necesitan tablas intermedias bizarras. X-Git-Tag: pre-merge~78 X-Git-Url: https://git.llucax.com/z.facultad/75.52/sercom.git/commitdiff_plain/4ad9a93a62ad9629de45e53270442e2be70049b6?ds=inline Agregar createSQL al sqlmeta de las clases que necesitan tablas intermedias bizarras. Hay clases que tienen relaciones ordenadas. Esto no lo permite SQLObject así que hay que manipular tablas a más bajo nivel, lo que hacía que no se pueda usar el comando tg-admin sql para crear tablas y otras tareas administrativas. En SQLObject 0.8 agregan un atributo de sqlmeta (createSQL) que permite agregar SQL arbitrario al crear las tablas. Se usa esto para crear las tablas intermedias personalizadas que van por "fuera" de SQLObeject. Resumen: Si tenés SQLObject 0.8, ahora podés usar tg-admin sql create, por lo tanto doc/schema/shema.sql está deprecated. --- diff --git a/sercom/model.py b/sercom/model.py index c01b63c..4ddab71 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)