]> git.llucax.com Git - software/sercom.git/commitdiff
Agregar createSQL al sqlmeta de las clases que necesitan tablas intermedias bizarras.
authorLeandro Lucarella <llucax@gmail.com>
Mon, 26 Feb 2007 22:29:25 +0000 (22:29 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 26 Feb 2007 22:29:25 +0000 (22:29 +0000)
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.

sercom/model.py

index c01b63c57b6845df67f4b95925622743bc335033..4ddab71a39fb51f70d4d0f4c5e965d9849eb7e82 100644 (file)
@@ -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)