]> git.llucax.com Git - software/sercom.git/commitdiff
Completar cambios a Enunciado.
authorLeandro Lucarella <llucax@gmail.com>
Mon, 26 Feb 2007 04:01:25 +0000 (04:01 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Mon, 26 Feb 2007 04:01:25 +0000 (04:01 +0000)
- Se completa el esquema SQL de la DB.
- Se pone como clave (nombre, anio, cuatrimestre) así 2 ejercicios de distintos
  cuatrimestres pueden tener el mismo nombre.
- Se corrigen los métodos y constructores que involucran a Enunciado.

doc/schema/schema.sql
doc/testdata.py
sercom/model.py

index 6bd01cda06840ec6d1160cebfc0dc0d2ca2108d7..babaa5d392c73254bba4d094c7243ddee0112f54 100644 (file)
@@ -47,7 +47,9 @@ CREATE TABLE dependencia (
 
 CREATE TABLE enunciado (
     id INTEGER PRIMARY KEY,
 
 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,
     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
 );
     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),
 
 CREATE TABLE enunciado_tarea (
     enunciado_id INTEGER NOT NULL CONSTRAINT enunciado_id_exists REFERENCES enunciado(id),
index b98618b5496bc91b70fca875081f3c2259978633..4b37151c70dfc55110fe7b20c5993aff7755efc5 100644 (file)
@@ -14,9 +14,9 @@ t2 = Tarea('probar', dependencias=(t1,))
 t3 = Tarea(u'configurar detector de copias')
 t4 = Tarea(u'detectar copias', dependencias=(t3, t2))
 
 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])
 
 
 c = Curso(2007, 1, 1, u'Martes', [d], [e1, e2])
 
index a03266ca4d16371a02ecb19117120d0786ba89bb..b8425838480f51dc2582abb5b461aa1d45e2cdb0 100644 (file)
@@ -235,8 +235,8 @@ class Docente(Usuario): #{{{
     def add_entrega(self, instancia, *args, **kargs):
         return Entrega(instancia, *args, **kargs)
 
     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, ' \
 
     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
 
 class Enunciado(SQLObject, ByObject): #{{{
     # Clave
-    nombre          = UnicodeCol(length=60, alternateID=True)
+    nombre          = UnicodeCol(length=60)
     anio            = IntCol(notNone=True)
     cuatrimestre    = IntCol(notNone=True)
     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)
     # 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')
 
     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
 
         if tareas:
             self.tareas = tareas