From: Leandro Lucarella Date: Mon, 26 Feb 2007 00:12:19 +0000 (+0000) Subject: Actualizar esquema de la DB con cambios de archivo en Enunciado. X-Git-Tag: pre-merge~105 X-Git-Url: https://git.llucax.com/software/sercom.git/commitdiff_plain/24d821e044acdae3182666687b317c2971a45d82?ds=sidebyside Actualizar esquema de la DB con cambios de archivo en Enunciado. Como SQLObject 0.7.x no tiene hooks para hacer cosas extra al crear la DB (como crear esas tablas intermedias locas que tenemos), no se puede usar el tg-admin sql create para crear la base, por eso hay que hacerlo via el script de SQL doc/schema/schema.sql. Por ahora hay que editar ese archivo a mano cuando se cambia el modelo :S SQLObject 0.8 (ya está en Debian) agrega hooks para salvar esa situación, estuve experimentando pero me tira algunos errores, en cuando lo arregle mando el parche. Además tiene varias mejoras el SQLObject 0.8 así que la idea sería laburar con ese para evitar más hacks. --- diff --git a/doc/schema/schema.sql b/doc/schema/schema.sql index 3cc2db8..6bd01cd 100644 --- a/doc/schema/schema.sql +++ b/doc/schema/schema.sql @@ -50,7 +50,10 @@ CREATE TABLE enunciado ( nombre VARCHAR(60) NOT NULL UNIQUE, autor_id INT CONSTRAINT autor_id_exists REFERENCES docente(id), descripcion VARCHAR(255), - creado TIMESTAMP NOT NULL + creado TIMESTAMP NOT NULL, + archivo BLOB DEFAULT NULL, + archivo_name VARCHAR(255) DEFAULT NULL, + archivo_type VARCHAR(255) DEFAULT NULL ); CREATE TABLE enunciado_tarea ( @@ -64,7 +67,7 @@ CREATE TABLE caso_de_prueba ( id INTEGER PRIMARY KEY, enunciado_id INT CONSTRAINT enunciado_id_exists REFERENCES enunciado(id), nombre VARCHAR(40) NOT NULL, - parametros VARCHAR(255) NOT NULL, + parametros VARCHAR(255) DEFAULT NULL, retorno INT, tiempo_cpu FLOAT, descripcion VARCHAR(255) diff --git a/sercom/model.py b/sercom/model.py index f9ab5a9..9112694 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -339,8 +339,8 @@ class Enunciado(SQLObject, ByObject): #{{{ descripcion = UnicodeCol(length=255, default=None) creado = DateTimeCol(notNone=True, default=DateTimeCol.now) archivo = BLOBCol(default=None) - archivo_name = StringCol(default=None) - archivo_type = StringCol(default=None) + archivo_name = UnicodeCol(length=255, default=None) + archivo_type = UnicodeCol(length=255, default=None) # Joins ejercicios = MultipleJoin('Ejercicio') casos_de_prueba = MultipleJoin('CasoDePrueba') @@ -406,7 +406,7 @@ class CasoDePrueba(SQLObject): #{{{ pk = DatabaseIndex(enunciado, nombre, unique=True) # Campos # privado = IntCol(default=None) TODO iria en instancia_de_entrega_caso_de_prueba - parametros = ParamsCol(length=255) + parametros = ParamsCol(length=255, default=None) retorno = IntCol(default=None) tiempo_cpu = FloatCol(default=None) descripcion = UnicodeCol(length=255, default=None)