]> git.llucax.com Git - software/sercom-old.git/commitdiff
Cambios en el esquema de la DB.
authorLeandro Lucarella <llucax@gmail.com>
Thu, 10 Feb 2005 23:14:11 +0000 (23:14 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Thu, 10 Feb 2005 23:14:11 +0000 (23:14 +0000)
doc/schema.dia
doc/schema.sql
src/T/DBO/Caso_de_prueba.php
src/T/DBO/Intento.php
src/T/DBO/Prueba.php
src/T/Intento.php

index 7989f57108e41d3ac81b3455511cb286402fc23c..57155d3d928488b51a903db73e95b677aceb8d40 100644 (file)
Binary files a/doc/schema.dia and b/doc/schema.dia differ
index 556ef70cf99f2b92597e95de9dce7805e2763906..44b0504577c1267d74c1c300a79acdc6d5904539 100644 (file)
@@ -20,7 +20,7 @@ CREATE TABLE inscripto
     curso_id        INTEGER NOT NULL,
     -- campos
     mail            VARCHAR(150) NOT NULL,
-    activo          INTEGER(1) NOT NULL DEFAULT 1,
+    activo          BOOLEAN NOT NULL DEFAULT 1,
     UNIQUE          (padron, curso_id)
 );
 
@@ -31,7 +31,7 @@ CREATE TABLE docente
     nombre          VARCHAR(150) NOT NULL,
     -- campos
     mail            VARCHAR(150) NOT NULL,
-    corrige         INTEGER(1) NOT NULL DEFAULT 1,
+    corrige         BOOLEAN NOT NULL DEFAULT 1,
     UNIQUE          (nombre)
 );
 
@@ -75,10 +75,11 @@ CREATE TABLE caso_de_prueba
     ejercicio_id    INTEGER NOT NULL,
     nombre          VARCHAR(255) NOT NULL,
     -- campos
-    privado         INTEGER(1) NOT NULL,
-    activo          INTEGER(1) NOT NULL DEFAULT 1,
+    privado         BOOLEAN NOT NULL,
+    activo          BOOLEAN NOT NULL DEFAULT 1,
     parametros      VARCHAR(255),
-    salidas         VARCHAR(255),
+    codigo_retorno  INTEGER DEFAULT 0,
+    tiempo_cpu      INTEGER DEFAULT NULL,
     UNIQUE          (ejercicio_id, nombre)
 );
 
@@ -91,10 +92,12 @@ CREATE TABLE intento
     numero          INTEGER NOT NULL,
     -- campos
     llegada         DATE NOT NULL,
+    inicio_compila  DATE,
+    fin_compila     DATE,
     inicio_pruebas  DATE,
     fin_pruebas     DATE,
-    compila_ok      INTEGER(1),
-    notificado      INTEGER(1) NOT NULL DEFAULT 0,
+    compila         BOOLEAN,
+    notificado      BOOLEAN NOT NULL DEFAULT 0,
     mail_respuesta  VARCHAR(150) NOT NULL,
     observaciones   VARCHAR(255),
     UNIQUE          (entrega_id, inscripto_id, llegada)
@@ -123,8 +126,7 @@ CREATE TABLE prueba
     -- campos
     inicio              DATE NOT NULL,
     fin                 DATE,
-    memoria_ok          INTEGER(1),
-    salida_ok           INTEGER(1),
+    pasada              BOOLEAN,
     observaciones       VARCHAR(255),
     UNIQUE              (intento_id, caso_de_prueba_id)
 );
index ccbe0f17df2dcadde479bbb1b3284a299c8ab189..2cf67652f3930e192040903839dcc56aad0faf48 100644 (file)
@@ -13,7 +13,8 @@ class T_DBO_Caso_de_prueba extends DB_DataObject
     var $privado;
     var $activo;
     var $parametros;
-    var $salidas;
+    var $codigo_retorno;
+    var $tiempo_cpu;
 
     /* Static get */
     function staticGet($k, $v = NULL)
@@ -26,13 +27,14 @@ class T_DBO_Caso_de_prueba extends DB_DataObject
     function table()
     {
         return array(
-            'id'            => DB_DATAOBJECT_INT,
-            'ejercicio_id'  => DB_DATAOBJECT_INT,
-            'nombre'        => DB_DATAOBJECT_STR,
-            'privado'       => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
-            'activo'        => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
-            'parametros'    => DB_DATAOBJECT_STR,
-            'salidas'       => DB_DATAOBJECT_STR,
+            'id'                => DB_DATAOBJECT_INT,
+            'ejercicio_id'      => DB_DATAOBJECT_INT,
+            'nombre'            => DB_DATAOBJECT_STR,
+            'privado'           => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
+            'activo'            => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
+            'parametros'        => DB_DATAOBJECT_STR,
+            'codigo_retorno'    => DB_DATAOBJECT_INT,
+            'tiempo_cpu'        => DB_DATAOBJECT_INT,
         );
     }
 
index 22959557985d6d29a91f0494e4bdb07d5daf7534..ba05463bbed77328113215919b322be00acb728c 100644 (file)
@@ -12,9 +12,11 @@ class T_DBO_Intento extends DB_DataObject
     var $entrega_id;
     var $numero;
     var $llegada;
-    var $inicio_prueba;
-    var $fin_prueba;
-    var $compila_ok;
+    var $inicio_compila;
+    var $fin_compila;
+    var $inicio_pruebas;
+    var $fin_pruebas;
+    var $compila;
     var $notificado;
     var $mail_respuesta;
     var $observaciones;
@@ -35,9 +37,11 @@ class T_DBO_Intento extends DB_DataObject
             'entrega_id'        => DB_DATAOBJECT_INT,
             'numero'            => DB_DATAOBJECT_INT,
             'llegada'           => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
-            'inicio_prueba'     => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
-            'fin_prueba'        => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
-            'compila_ok'        => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
+            'inicio_compila'    => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+            'fin_compila'       => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+            'inicio_pruebas'    => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+            'fin_pruebas'       => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
+            'compila'           => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
             'notificado'        => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
             'mail_respuesta'    => DB_DATAOBJECT_STR,
             'observaciones'     => DB_DATAOBJECT_STR + DB_DATAOBJECT_TXT,
index 53fb1ff782b6fb7792dee671ee54a840113bc833..87d7407446ec67256adfdd3d586f4f83c51f9aec 100644 (file)
@@ -12,8 +12,7 @@ class T_DBO_Prueba extends DB_DataObject
     var $caso_de_prueba_id;
     var $inicio;
     var $fin;
-    var $memoria_ok;
-    var $salida_ok;
+    var $pasada;
     var $observaciones;
 
     /* Static get */
@@ -32,8 +31,7 @@ class T_DBO_Prueba extends DB_DataObject
             'caso_de_prueba_id' => DB_DATAOBJECT_INT,
             'inicio'            => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
             'fin'               => DB_DATAOBJECT_STR + DB_DATAOBJECT_DATE + DB_DATAOBJECT_TIME,
-            'memoria_ok'        => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
-            'salida_ok'         => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
+            'pasada'            => DB_DATAOBJECT_INT + DB_DATAOBJECT_BOOL,
             'observaciones'     => DB_DATAOBJECT_STR + DB_DATAOBJECT_TXT,
         );
     }
index 6a09a07c3017a3d980c892d20bd369836c47e80e..e758a0d4172558399017bdca45eff6834dc6fde4 100644 (file)
@@ -5,6 +5,8 @@ require_once 'DB/DataObject.php';
 require_once 'T/code.php';
 require_once 'T/Prueba.php';
 
+define('DATE_FORMAT', '%Y-%m-%d %H:%M:%S.000000');
+
 /// @todo Poner todos los querys con quoting ('?').
 /// @todo Mejorar manejo de errores con PEAR.
 class T_Intento
@@ -70,9 +72,6 @@ EOT;
      */
     function validar_entrega($code, $claves)
     {
-        $query = "SELECT C.id, C.anio, C.cuatrimestre, C.curso
-                FROM alumno A JOIN cuatrimestre C ON (A.id_cuatrimestre = C.id)
-                WHERE A.padron = {$this->padron} AND C.activo = 1";
         $inscripto = DB_DataObject::factory('inscripto');
         if (!$inscripto->getFrom($this->padron)) return 'El alumno no está inscripto';
         $inscripto->getLinks();
@@ -81,7 +80,7 @@ EOT;
         if (!T_chequear_codigo($code, $this->padron, $claves))
             return 'La clave de la entrega no es válida';
         $this->llegada =  time();
-        $date = date('Y-m-d H:i:s', $this->llegada);
+        $date = strftime(DATE_FORMAT, $this->llegada);
         $entrega = DB_DataObject::factory('entrega');
         $entrega->getFrom($inscripto->curso_id, $this->ejercicio, $this->entrega);
         if (!($entrega->desde <= $date and $entrega->hasta >= $date)) return 'El ejercicio está siendo entregado fuera de fecha';
@@ -108,85 +107,11 @@ EOT;
         $intento->inscripto_id = $this->id_inscripto;
         $intento->entrega_id = $this->id_entrega;
         $intento->numero = $this->intento;
-        $intento->llegada = date('Y-m-d H:i:s', $this->llegada);
+        $intento->llegada = strftime(DATE_FORMAT, $this->llegada);
         $intento->mail_respuesta = $mail;
         return $intento->insert();
     }
 
-    /**
-     *  Pone en los atributos publicos cuatrimestre, padron, entrega, ejercicio e intento
-     *  retorna true si encuentra alguno y false sino.
-     */
-    function proximo_a_probar()
-    {
-        $result = $this->db->getRow("SELECT cuatrimestre, padron, ejercicio, entrega, intento, mail
-            FROM intento
-            WHERE inicio_pruebas is null
-            ORDER BY llegada
-            LIMIT 1");
-        if (DB::isError($result) or is_null($result)) return false;
-        $date = date('YmdHis');
-        $this->cuatrimestre = $result[0];
-        $this->padron = $result[1];
-        $this->ejercicio = $result[2];
-        $this->entrega = $result[3];
-        $this->intento = $result[4];
-        $this->db->query("UPDATE intento SET inicio_pruebas = '$date'
-            WHERE cuatrimestre = {$this->cuatrimestre} AND
-                padron = {$this->padron}               AND
-                ejercicio = {$this->ejercicio}         AND
-                entrega = {$this->entrega}             AND
-                intento = {$this->intento}");
-        return $result[5];
-    }
-
-    /**
-     *  Toma de los atributos publicos cuatrimestre, padron, entrega, ejercicio e intento
-     *  el parametro indica si compilo ok es true, sino es false
-     */
-    function informar_compilacion($compilo_ok)
-    {
-        if ($compilo_ok) $compilo_ok = 1;
-        else             $compilo_ok = 0;
-        $date = date('YmdHis');
-
-        return $this->db->query("
-            UPDATE intento SET fin_pruebas = '$date' AND compila_ok = $compilo_ok
-            WHERE cuatrimestre = {$this->cuatrimestre} AND
-                padron = {$this->padron}               AND
-                ejercicio = {$this->ejercicio}         AND
-                entrega = {$this->entrega}             AND
-                intento = {$this->intento}");
-    }
-
-    /**
-     *  Toma de los atributos publicos cuatrimestre, padron, entrega, ejercicio e intento
-     *  carga el atributo publico caso_de_prueba con el proximo caso de prueba a usar
-     *  devuelve true si encuentra alguno, sino devuelve false
-     */
-    function pedir_caso_de_prueba()
-    {
-        $prueba = $this->db->getRow("
-            SELECT C.caso_de_prueba, C.privado, C.descripcion, C.parametros, C.salidas
-            FROM caso_de_prueba as C
-            WHERE C.cuatrimestre = $this->cuatrimestre AND
-            C.ejercicio = $this->ejercicio AND
-            C.entrega = $this->entrega AND
-            C.caso_de_prueba NOT IN (
-                SELECT P.caso_de_prueba from prueba as P
-                WHERE P.cuatrimestre = $this->cuatrimestre 
-                    AND P.entrega = $this->entrega
-                    AND P.ejercicio = $this->ejercicio
-                    AND P.padron = $this->padron
-                    AND P.intento = $this->intento
-        )");
-        if (!is_null($prueba) && !DB::isError($prueba)) {
-            list($id, $priv, $desc, $params, $salidas) = $prueba;
-            return new T_Prueba($id, $priv, $desc, $params, $salidas);
-        }
-        return $prueba;
-    }
-
     /**
      *  Toma de los atributos publicos cuatrimestre, padron, entrega, ejerciico e intento
      *  Carga los resultados de una prueba en un nuevo registro en prueba