From 53e0d8d7546953717a68b65e79d48a0a0c763caf Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Fri, 18 Feb 2005 17:58:36 +0000 Subject: [PATCH] Nueva estructura de directorios de intentos. Uso de decorators. --- src/T/Intento.php | 9 ++++++--- src/sercom/dbo.py | 18 +++++++----------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/src/T/Intento.php b/src/T/Intento.php index 3bb6f24..2adb952 100644 --- a/src/T/Intento.php +++ b/src/T/Intento.php @@ -75,6 +75,7 @@ EOT; if (!$inscripto->getFrom($this->padron)) return 'El alumno no está inscripto'; $inscripto->getLinks(); $cuat = $inscripto->_curso_id->toLine(); + $this->inscripto = $inscripto; $this->cuatrimestre = $cuat; if (!T_chequear_codigo($code, $this->padron, $claves)) return 'La clave de la entrega no es válida'; @@ -186,11 +187,13 @@ EOT; * Obtiene el directorio base de la entrega. * El directorio base no contempla los datos propios del intento, como * padrón e intento. - * @param base_dir Directorio base, si no se especifica se usa el directorio - * base del intento. + * @param base_dir Directorio base. */ function path($base_dir) { - return "$base_dir/{$this->cuatrimestre}/{$this->ejercicio}-{$this->entrega}/{$this->padron}/{$this->intento}"; + $curso = $this->inscripto->_curso_id; + return "$base_dir/{$curso->anio}.{$curso->cuatrimestre}/" + . "{$curso->curso}.{$this->ejercicio}.{$this->entrega}/" + . "{$this->padron}.{$this->intento}"; } } diff --git a/src/sercom/dbo.py b/src/sercom/dbo.py index 32aa492..518dc5e 100644 --- a/src/sercom/dbo.py +++ b/src/sercom/dbo.py @@ -6,13 +6,12 @@ __all__ = ('Curso', 'Inscripto', 'Docente', 'Ejercicio', 'Entrega', class BaseSQLObject(SQLObject): - #@classmethod + @classmethod def by(cls, connection = None, **kw): try: return cls.selectBy(connection = connection, **kw)[0] except IndexError: raise SQLObjectNotFound, "The object %s with columns %s does not exist" % (cls.__name__, kw) - by = classmethod(by) class Curso(BaseSQLObject): # Clave @@ -105,24 +104,21 @@ class Intento(BaseSQLObject): # Joins pruebas = MultipleJoin('Prueba') - _dir_base = 'intentos' - - #@classmethod + @classmethod def getProximoAProbar(cls, connection = None): try: - return cls.select(cls.q.inicioPruebas == None, limit=1, + return cls.select(cls.q.compila == None, limit=1, orderBy=cls.q.llegada, connection=connection)[0] except IndexError: return None - getProximoAProbar = classmethod(getProximoAProbar) def path(self, dir_base): - import os.path + from os.path import join curso = self.inscripto.curso entrega = self.entrega - return os.path.join(dir_base, curso.anio, curso.cuatrimestre, - curso.curso, '%s.%s' % (entrega.nroEjercicio, entrega.entrega), - self.inscripto.padron, self.numero) + return join(dir_base, '%s.%s' % (curso.anio, curso.cuatrimestre), + '%s.%s.%s' % (curso.curso, entrega.nroEjercicio, entrega.entrega), + '%s.%s' % (self.inscripto.padron, self.numero)) class Correccion(BaseSQLObject): # Clave -- 2.43.0