From 196cbb9fc2731b208965d8f775769d4d07ec4988 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Thu, 10 Mar 2005 03:05:33 +0000 Subject: [PATCH] =?utf8?q?Se=20agrega=20un=20chequeo=20a=20sc=5Fdeliver=20?= =?utf8?q?para=20que=20no=20finalice=20la=20entrega=20hasta=20que=20no=20s?= =?utf8?q?e=20termine=20de=20compilar=20todos=20sus=20intentos.=20Ya=20no?= =?utf8?q?=20es=20m=C3=A1s=20necesario=20especular=20con=20darle=20un=20ti?= =?utf8?q?empo=20extra.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- debian/README.Debian | 5 +---- debian/sercom.cron.d | 2 +- src/sc_deliver | 7 +++++++ src/sercom/sqlo.py | 8 ++++++++ 4 files changed, 17 insertions(+), 5 deletions(-) diff --git a/debian/README.Debian b/debian/README.Debian index 3770ed0..93f6358 100644 --- a/debian/README.Debian +++ b/debian/README.Debian @@ -14,10 +14,7 @@ respectivamente. El programa sc_deliver, encargado de cerrar una entrega y tomar el último intento exitoso como entrega final a corregir, corre todos los días a las -23:30hs, puede modificarlo en el archivo /etc/cron.d/sercom. -Puede ser necesario modificarlo si el corrector es muy lento compilando y no -llega terminar de compilar las cosas que, normalmente, se terminan de entregar a -las 20:00hs. +20:30hs, puede modificarlo en el archivo /etc/cron.d/sercom. Tambien puede cambiar la frecuencia de rotación de logs en /etc/logrotate.d/sercom. diff --git a/debian/sercom.cron.d b/debian/sercom.cron.d index 9b5e7c7..0a53392 100644 --- a/debian/sercom.cron.d +++ b/debian/sercom.cron.d @@ -2,4 +2,4 @@ # Ejecuta sc_deliver todos los días después a las 23:30hs # m h dom mon dow user command -30 23 * * * sercom /usr/sbin/sc_deliver +30 20 * * * sercom /usr/sbin/sc_deliver diff --git a/src/sc_deliver b/src/sc_deliver index 6377f00..3979a86 100755 --- a/src/sc_deliver +++ b/src/sc_deliver @@ -2,6 +2,8 @@ # -*- encoding: iso-8859-1 -*- # vim: set et sw=4 sts=4 : +# Módulos estándar +import time # Módulos locales import sercom import sercom.sqlo @@ -39,8 +41,13 @@ log.info('Iniciado') # Utilizo el directorio de datos como base para todos los SQLObjects sercom.sqlo.dir_base = conf.get('general', 'data_dir') +# Atajo +intervalo = float(conf.get('general', 'intervalo')) + # Busco entregas pendientes for entrega in Entrega.getPendientes(conn): + while Intento.faltaCompilar(entrega, conn): + time.sleep(intervalo) log.info('Procesando entrega %d.%d.%d', entrega.curso.curso, entrega.nroEjercicio, entrega.entrega) for inscripto in Inscripto.selectBy(cursoID=entrega.cursoID, activo=True, diff --git a/src/sercom/sqlo.py b/src/sercom/sqlo.py index de2347c..0c0b59d 100644 --- a/src/sercom/sqlo.py +++ b/src/sercom/sqlo.py @@ -155,6 +155,14 @@ class Intento(BaseSQLObject): except IndexError: return None + @classmethod + def faltaCompilar(cls, entrega, connection=None): + no_compilados = cls.selectBy(entregaID=entrega.id, compila=None, + connection=connection).count() + no_probados = cls.selectBy(entregaID=entrega.id, compila=True, + finPruebas=None, connection=connection).count() + return no_compilados + no_probados + def _get_path(self): curso = self.inscripto.curso entrega = self.entrega -- 2.43.0