From: Leandro Lucarella Date: Sat, 5 Mar 2005 23:55:42 +0000 (+0000) Subject: Nuevo comando para hacer la entrega final de una entrega: sc_deliver. X-Git-Tag: svn_import~73 X-Git-Url: https://git.llucax.com/software/sercom-old.git/commitdiff_plain/03ce95b6b4735ac353999a4ee8969762a3a25766 Nuevo comando para hacer la entrega final de una entrega: sc_deliver. Por ahora solo genera las Correccion()es pertinentes, pero no envĂ­a mails para notificar nada a nadie. Se agrega columna 'finalizada' a entrega para indicar si ya fue 'procesada'. --- diff --git a/doc/schema.dia b/doc/schema.dia index 6e49f70..33c3297 100644 Binary files a/doc/schema.dia and b/doc/schema.dia differ diff --git a/doc/schema.sql b/doc/schema.sql index 4d4c8b5..9743ce6 100644 --- a/doc/schema.sql +++ b/doc/schema.sql @@ -65,6 +65,7 @@ CREATE TABLE entrega ejercicio_id INTEGER NOT NULL, desde DATE NOT NULL, hasta DATE NOT NULL, + finalizada BOOLEAN NOT NULL DEFAULT 1, UNIQUE (curso_id, nro_ejercicio, entrega) ); diff --git a/src/T/DBO/Entrega.php b/src/T/DBO/Entrega.php index 90aa833..d83b39f 100644 --- a/src/T/DBO/Entrega.php +++ b/src/T/DBO/Entrega.php @@ -14,6 +14,7 @@ class T_DBO_Entrega extends DB_DataObject var $ejercicio_id; var $desde; var $hasta; + var $finalizada; /* Static get */ function staticGet($k, $v = NULL) @@ -33,6 +34,7 @@ class T_DBO_Entrega extends DB_DataObject 'ejercicio_id' => DB_DATAOBJECT_INT, 'desde' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME, 'hasta' => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME, + 'finalizada' => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL, ); } diff --git a/src/sercom/sqlo.py b/src/sercom/sqlo.py index de62085..9673e00 100644 --- a/src/sercom/sqlo.py +++ b/src/sercom/sqlo.py @@ -3,6 +3,7 @@ from sqlobject.sqlbuilder import * import errno import os from os import path +from datetime import datetime __all__ = ('Curso', 'Inscripto', 'Docente', 'Ejercicio', 'Entrega', 'CasoDePrueba', 'Intento', 'Correccion', 'Prueba') @@ -13,9 +14,9 @@ dir_base = '.' class BaseSQLObject(SQLObject): @classmethod - def by(cls, connection = None, **kw): + def by(cls, **kw): try: - return cls.selectBy(connection = connection, **kw)[0] + return cls.selectBy(limit=1, **kw)[0] except IndexError: raise SQLObjectNotFound, "The object %s with columns %s does not exist" % (cls.__name__, kw) @@ -77,11 +78,18 @@ class Entrega(BaseSQLObject): ejercicio = ForeignKey('Ejercicio') desde = DateTimeCol() hasta = DateTimeCol() + finalizada = BoolCol(default=False) # Joins cursos = MultipleJoin('Curso') correcciones = MultipleJoin('Correccion') intentos = MultipleJoin('Intento') + @classmethod + def getPendientes(cls, connection=None): + return cls.select((cls.q.finalizada == False) + & (cls.q.hasta <= datetime.now()), + orderBy=cls.q.hasta, connection=connection) + class CasoDePrueba(BaseSQLObject): # Clave ejercicio = ForeignKey('Ejercicio') @@ -142,7 +150,7 @@ class Intento(BaseSQLObject): @classmethod def getProximoAProbar(cls, connection=None): try: - return cls.select(None == cls.q.compila, limit=1, + return cls.select(cls.q.compila == None, limit=1, orderBy=cls.q.llegada, connection=connection)[0] except IndexError: return None diff --git a/test/test_data.sql b/test/test_data.sql index 02fdd62..e5dfeba 100644 --- a/test/test_data.sql +++ b/test/test_data.sql @@ -21,20 +21,39 @@ INSERT INTO curso_docente VALUES (5, 2); INSERT INTO curso_docente VALUES (6, 4); -- Inscriptos (id, padron, curso_id, mail, activo) -INSERT INTO inscripto VALUES (1, 77891, 6, 'luca-alumno@llucax.hn.org', 1); -INSERT INTO inscripto VALUES (2, 77892, 6, 'luca-alumno2@llucax.hn.org', 1); +INSERT INTO inscripto VALUES (1, 10000, 5, 'luca-alumno@llucax.hn.org', 1); +INSERT INTO inscripto VALUES (2, 20000, 6, 'luca-alumno2@llucax.hn.org', 1); +INSERT INTO inscripto VALUES (3, 20000, 5, 'luca-alumno3@llucax.hn.org', 1); -- Ejercicios (id, nombre, numero, docente_id) INSERT INTO ejercicio VALUES (1, 'Punteros inteligentes', 4, 1); -INSERT INTO ejercicio VALUES (2, 'XML parser', 4, 2); +INSERT INTO ejercicio VALUES (2, 'Prueba stdin/stdout/stderr', 1, 2); --- Entregas (id, curso_id, nro_ejercicio, entrega, ejercicio_id, desde, hasta) -INSERT INTO entrega VALUES (1, 6, 4, 1, 1, '2005-01-26', '2005-02-26 20:00:00'); -INSERT INTO entrega VALUES (2, 6, 4, 2, 1, '2005-02-06', '2005-02-16 20:00:00'); +-- Entregas (id, curso_id, nro_ejercicio, entrega, ejercicio_id, desde, hasta, finalizada) +INSERT INTO entrega VALUES (1, 5, 1, 1, 1, '2005-03-02', '2005-03-05 20:00:00', 0); +INSERT INTO entrega VALUES (2, 6, 4, 2, 2, '2005-03-08', '2005-03-16 20:00:00', 0); -- Casos de prueba (id, ejercicio_id, nombre, privado, activo, parametros, codigo_retorno, tiempo_cpu) INSERT INTO caso_de_prueba VALUES (1, 1, 'basico', 0, 1, NULL, 0, NULL); INSERT INTO caso_de_prueba VALUES (2, 1, 'complicado', 0, 1, '--full', 0, 600); INSERT INTO caso_de_prueba VALUES (3, 1, 'tramposo', 1, 1, '--full --no-full "parametros \"raros\""', NULL, NULL); +INSERT INTO caso_de_prueba VALUES (4, 2, 'normal', 0, 1, NULL, 0, NULL); + +-- Intentos (id, inscripto_id, entrega_id, numero, llegada, inicio_compila, fin_compila, inicio_pruebas, fin_pruebas, compila, mail_respuesta, observaciones) +INSERT INTO intento VALUES (1, 1, 1, 1, '2005-02-06', '2005-02-06', '2005-02-06', '2005-02-06', '2005-02-06', 0, 'luca-rta@llucax.hn.org', NULL); +INSERT INTO intento VALUES (2, 1, 1, 2, '2005-02-07', '2005-02-07', '2005-02-07', '2005-02-07', '2005-02-07', 1, 'luca-rta@llucax.hn.org', NULL); +INSERT INTO intento VALUES (3, 1, 1, 3, '2005-02-08', '2005-02-08', '2005-02-08', '2005-02-08', '2005-02-08', 1, 'luca-rta@llucax.hn.org', NULL); +INSERT INTO intento VALUES (4, 3, 1, 3, '2005-02-08', '2005-02-08', '2005-02-08', '2005-02-08', '2005-02-08', 1, 'luca-rta2@llucax.hn.org', NULL); + +-- Pruebas (id, intento_id, caso_de_prueba_id, inicio, fin, pasada, observaciones) +INSERT INTO prueba VALUES (1, 2, 1, '2005-02-07', '2005-02-07', 0, NULL); +INSERT INTO prueba VALUES (2, 2, 2, '2005-02-07', '2005-02-07', 1, NULL); +INSERT INTO prueba VALUES (3, 2, 3, '2005-02-07', '2005-02-07', 0, NULL); +INSERT INTO prueba VALUES (4, 3, 1, '2005-02-07', '2005-02-07', 1, NULL); +INSERT INTO prueba VALUES (5, 3, 2, '2005-02-07', '2005-02-07', 1, NULL); +INSERT INTO prueba VALUES (6, 3, 3, '2005-02-07', '2005-02-07', 0, NULL); +INSERT INTO prueba VALUES (7, 4, 1, '2005-02-07', '2005-02-07', 1, NULL); +INSERT INTO prueba VALUES (8, 4, 2, '2005-02-07', '2005-02-07', 1, NULL); +INSERT INTO prueba VALUES (9, 5, 3, '2005-02-07', '2005-02-07', 1, NULL); -- vim: set tw=0 et :