]> git.llucax.com Git - software/sercom.git/blobdiff - sercom/finalizer.py
Bugfix: No finalizar instancias de entrega que todavía se están procesando.
[software/sercom.git] / sercom / finalizer.py
index 0f681204701d4e385c8d0acf3963b97d985d3bc6..c701087320fdd4ee2c92fbe3c70cdae89a8a3302 100644 (file)
@@ -1,12 +1,12 @@
 # vim: set et sw=4 sts=4 encoding=utf-8 foldmethod=marker :
 
-from sercom.model import InstanciaDeEntrega
+from sercom.model import InstanciaDeEntrega, Entrega, SQLObjectNotFound
 from datetime import datetime
 import logging
 
 log = logging.getLogger('sercom.finalizer')
 
-error_interno = _(u'\n**Hubo un error interno al finalizar la instancia.**\n')
+error_interno = u'\n**Hubo un error interno al finalizar la instancia.**\n'
 
 class Finalizer(object): #{{{
 
@@ -50,18 +50,18 @@ class Finalizer(object): #{{{
 def instancia_finalizar(self): #{{{
     log.debug(_(u'InstanciaDeEntrega.finalizar()'))
     curso = self.ejercicio.curso
-    docentes = [di.docente for di in curso.docentes if di.corrige]
+    docentes = [di for di in curso.docentes if di.corrige]
     curr_docente = 0
     for ai in curso.alumnos:
-        mejor_entrega = None
-        for entrega in Entrega.selectBy(instancia=self, entregador=ai).orderBy(-Entrega.q.fecha):
-            if not mejor_entrega or not mejor_entrega.exito and entrega.exito:
-                mejor_entrega = entrega
-        if mejor_entrega:
-            mejor_entrega.make_correccion(docentes[curr_docente])
+        try:
+            e = Entrega.selectBy(instancia=self, entregador=ai) \
+                .orderBy(-Entrega.q.fecha) \
+                .limit(1) \
+                .getOne()
+            e.make_correccion(docentes[curr_docente])
             curr_docente = (curr_docente + 1) % len(docentes)
-        else:
-            log.info(_(u'El alumno inscripto %s no entregó', ai))
+        except SQLObjectNotFound:
+            log.info(_(u'El alumno inscripto %s no entregó'), ai)
 
 InstanciaDeEntrega.finalizar = instancia_finalizar
 #}}}