]> git.llucax.com Git - software/sercom-old.git/commitdiff
Nuevo comando para hacer la entrega final de una entrega: sc_deliver.
authorLeandro Lucarella <llucax@gmail.com>
Sat, 5 Mar 2005 23:55:42 +0000 (23:55 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sat, 5 Mar 2005 23:55:42 +0000 (23:55 +0000)
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'.

doc/schema.dia
doc/schema.sql
src/T/DBO/Entrega.php
src/sercom/sqlo.py
test/test_data.sql

index 6e49f70d9b025816626856008e0e8e5b16293f54..33c32973e083caa6bb45c6ca9603f881f2b77f85 100644 (file)
Binary files a/doc/schema.dia and b/doc/schema.dia differ
index 4d4c8b57a659bb99c9ba44ce3a89f81c48dee966..9743ce609af6143ab2b5f7f9ba704f34e47e7431 100644 (file)
@@ -65,6 +65,7 @@ CREATE TABLE entrega
     ejercicio_id    INTEGER NOT NULL,
     desde           DATE NOT NULL,
     hasta           DATE NOT NULL,
     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)
 );
 
     UNIQUE          (curso_id, nro_ejercicio, entrega)
 );
 
index 90aa833a9011c9546b9ff97fca2b1fabde5f7437..d83b39f14d167ccb79c3bd9c849a5645caa6bc15 100644 (file)
@@ -14,6 +14,7 @@ class T_DBO_Entrega extends DB_DataObject
     var $ejercicio_id;
     var $desde;
     var $hasta;
     var $ejercicio_id;
     var $desde;
     var $hasta;
+    var $finalizada;
 
     /* Static get */
     function staticGet($k, $v = NULL)
 
     /* 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,
             '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,
         );
     }
 
         );
     }
 
index de62085749fefc662562f19095683ec17bed9a19..9673e00ddd64ba6b93bf2634235a4d6b80d5bdc3 100644 (file)
@@ -3,6 +3,7 @@ from sqlobject.sqlbuilder import *
 import errno
 import os
 from os import path
 import errno
 import os
 from os import path
+from datetime import datetime
 
 __all__ = ('Curso', 'Inscripto', 'Docente', 'Ejercicio', 'Entrega',
            'CasoDePrueba', 'Intento', 'Correccion', 'Prueba')
 
 __all__ = ('Curso', 'Inscripto', 'Docente', 'Ejercicio', 'Entrega',
            'CasoDePrueba', 'Intento', 'Correccion', 'Prueba')
@@ -13,9 +14,9 @@ dir_base = '.'
 class BaseSQLObject(SQLObject):
 
     @classmethod
 class BaseSQLObject(SQLObject):
 
     @classmethod
-    def by(cls, connection = None, **kw):
+    def by(cls, **kw):
         try:
         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)
 
         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()
     ejercicio       = ForeignKey('Ejercicio')
     desde           = DateTimeCol()
     hasta           = DateTimeCol()
+    finalizada      = BoolCol(default=False)
     # Joins
     cursos          = MultipleJoin('Curso')
     correcciones    = MultipleJoin('Correccion')
     intentos        = MultipleJoin('Intento')
 
     # 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')
 class CasoDePrueba(BaseSQLObject):
     # Clave
     ejercicio       = ForeignKey('Ejercicio')
@@ -142,7 +150,7 @@ class Intento(BaseSQLObject):
     @classmethod
     def getProximoAProbar(cls, connection=None):
         try:
     @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
                 orderBy=cls.q.llegada, connection=connection)[0]
         except IndexError:
             return None
index 02fdd624ec51edc6a0f58a0719d64c81cbb13cde..e5dfeba142da7625ef58930a0e47cb415632f7b7 100644 (file)
@@ -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 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);
 
 -- 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);
 
 -- 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 :
 
 -- vim: set tw=0 et :