From 2105d1bec3dccbb8588be2453d15ea82aab90619 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Mon, 26 Feb 2007 04:01:25 +0000 Subject: [PATCH] =?utf8?q?Completar=20cambios=20a=20Enunciado.=20-=20Se=20?= =?utf8?q?completa=20el=20esquema=20SQL=20de=20la=20DB.=20-=20Se=20pone=20?= =?utf8?q?como=20clave=20(nombre,=20anio,=20cuatrimestre)=20as=C3=AD=202?= =?utf8?q?=20ejercicios=20de=20distintos=20=20=20cuatrimestres=20pueden=20?= =?utf8?q?tener=20el=20mismo=20nombre.=20-=20Se=20corrigen=20los=20m=C3=A9?= =?utf8?q?todos=20y=20constructores=20que=20involucran=20a=20Enunciado.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/schema/schema.sql | 5 ++++- doc/testdata.py | 6 +++--- sercom/model.py | 16 +++++++++------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/doc/schema/schema.sql b/doc/schema/schema.sql index 6bd01cd..babaa5d 100644 --- a/doc/schema/schema.sql +++ b/doc/schema/schema.sql @@ -47,7 +47,9 @@ CREATE TABLE dependencia ( CREATE TABLE enunciado ( id INTEGER PRIMARY KEY, - nombre VARCHAR(60) NOT NULL UNIQUE, + nombre VARCHAR(60) NOT NULL, + anio INTEGER NOT NULL, + cuatrimestre INTEGER NOT NULL, autor_id INT CONSTRAINT autor_id_exists REFERENCES docente(id), descripcion VARCHAR(255), creado TIMESTAMP NOT NULL, @@ -55,6 +57,7 @@ CREATE TABLE enunciado ( archivo_name VARCHAR(255) DEFAULT NULL, archivo_type VARCHAR(255) DEFAULT NULL ); +CREATE UNIQUE INDEX enunciado_pk ON enunciado (nombre, anio, cuatrimestre); CREATE TABLE enunciado_tarea ( enunciado_id INTEGER NOT NULL CONSTRAINT enunciado_id_exists REFERENCES enunciado(id), diff --git a/doc/testdata.py b/doc/testdata.py index b98618b..4b37151 100644 --- a/doc/testdata.py +++ b/doc/testdata.py @@ -14,9 +14,9 @@ t2 = Tarea('probar', dependencias=(t1,)) t3 = Tarea(u'configurar detector de copias') t4 = Tarea(u'detectar copias', dependencias=(t3, t2)) -e1 = Enunciado(u'Un enunciado', d, u'Ejercicio reeee jodido', (t4,)) -e2 = Enunciado(u'Otro enunciado', d, u'Ejercicio facilongo', (t2, t4)) -e3 = d.add_enunciado(u'Más enunciados', u'Ejercicio anónimo') +e1 = Enunciado(u'Un enunciado', 2007, 1, d, u'Ejercicio reeee jodido', (t4,)) +e2 = Enunciado(u'Otro enunciado', 2007, 1, d, u'Ejercicio facilongo', (t2, t4)) +e3 = d.add_enunciado(u'Más enunciados', 2007, 1, u'Ejercicio anónimo') c = Curso(2007, 1, 1, u'Martes', [d], [e1, e2]) diff --git a/sercom/model.py b/sercom/model.py index a03266c..b842583 100644 --- a/sercom/model.py +++ b/sercom/model.py @@ -235,8 +235,8 @@ class Docente(Usuario): #{{{ def add_entrega(self, instancia, *args, **kargs): return Entrega(instancia, *args, **kargs) - def add_enunciado(self, nombre, *args, **kargs): - return Enunciado(nombre, self, *args, **kargs) + def add_enunciado(self, nombre, anio, cuatrimestre, *args, **kargs): + return Enunciado(nombre, anio, cuatrimestre, self, *args, **kargs) def __repr__(self): return 'Docente(id=%s, usuario=%s, nombre=%s, password=%s, email=%s, ' \ @@ -333,9 +333,10 @@ class Tarea(InheritableSQLObject, ByObject): #{{{ class Enunciado(SQLObject, ByObject): #{{{ # Clave - nombre = UnicodeCol(length=60, alternateID=True) + nombre = UnicodeCol(length=60) anio = IntCol(notNone=True) cuatrimestre = IntCol(notNone=True) + pk = DatabaseIndex(nombre, anio, cuatrimestre, unique=True) # Campos autor = ForeignKey('Docente') descripcion = UnicodeCol(length=255, default=None) @@ -347,10 +348,11 @@ class Enunciado(SQLObject, ByObject): #{{{ ejercicios = MultipleJoin('Ejercicio') casos_de_prueba = MultipleJoin('CasoDePrueba') - def __init__(self, nombre=None, autor=None, descripcion=None, tareas=(), - **kargs): - SQLObject.__init__(self, nombre=nombre, autorID=autor and autor.id, - descripcion=descripcion, **kargs) + def __init__(self, nombre=None, anio=None, cuatrimestre=None, autor=None, + descripcion=None, tareas=(), **kargs): + SQLObject.__init__(self, nombre=nombre, descripcion=descripcion, + anio=anio, autorID=autor and autor.id, cuatrimestre=cuatrimestre, + **kargs) if tareas: self.tareas = tareas -- 2.43.0