]> git.llucax.com Git - software/sercom-old.git/commitdiff
Faltó hacer el add del nuevo comando =(. Ahora ya manda mails =).
authorLeandro Lucarella <llucax@gmail.com>
Sun, 6 Mar 2005 00:32:06 +0000 (00:32 +0000)
committerLeandro Lucarella <llucax@gmail.com>
Sun, 6 Mar 2005 00:32:06 +0000 (00:32 +0000)
src/sc_deliver [new file with mode: 0755]

diff --git a/src/sc_deliver b/src/sc_deliver
new file mode 100755 (executable)
index 0000000..67ec78d
--- /dev/null
@@ -0,0 +1,63 @@
+#!/usr/bin/env python2.4
+# -*- encoding: iso-8859-1 -*-
+# vim: set et sw=4 sts=4 :
+
+# Módulos locales
+import sercom
+import sercom.sqlo
+from sercom.sqlo import *
+
+def notificar(correccion):
+    global conf
+    from email.MIMEText import MIMEText
+    import smtplib
+    intento = correccion.intento
+    entrega = correccion.entrega
+    inscripto = correccion.inscripto
+    body = '''
+Se aceptó como entrega final de su ejercicio %d, entrega %d,
+a su intento %d, recibido el %s.
+''' % (entrega.nroEjercicio, entrega.entrega, intento.numero, intento.llegada)
+    mail = MIMEText(body, 'plain', 'iso-8859-1')
+    mail['Subject'] = '[%s] Intento %d del ejericio %d.%d aceptado como ' \
+        'entrega final.' % (conf.get('mail', 'prefijo'), intento.numero,
+        entrega.nroEjercicio, entrega.entrega)
+    mail['From'] = conf.get('mail', 'from')
+    mail['To'] = inscripto.mail
+    mail['Reply-To'] = conf.get('mail', 'admin')
+    mail['Return-Path'] = conf.get('mail', 'admin')
+    mail['X-Mailer'] = 'sercom 0.3'
+    mail['X-Priority'] = '5'
+    smtp = smtplib.SMTP(conf.get('mail', 'smtp'))
+    smtp.sendmail(mail['From'], mail['To'], mail.as_string())
+    smtp.close()
+
+# Inicializo
+conf, conn, log = sercom.init('deliver')
+log.info('Iniciado')
+
+# Utilizo el directorio de datos como base para todos los SQLObjects
+sercom.sqlo.dir_base = conf.get('general', 'data_dir')
+
+# Busco entregas pendientes
+for entrega in Entrega.getPendientes(conn):
+    log.info('Procesando entrega %d.%d.%d', entrega.curso.curso,
+        entrega.nroEjercicio, entrega.entrega)
+    for inscripto in Inscripto.selectBy(cursoID=entrega.cursoID, activo=True,
+            connection=conn):
+        log.debug('Procesando inscripto: %s', inscripto)
+        for intento in Intento.select(sercom.sqlo.AND(
+                Intento.q.inscriptoID == inscripto.id, Intento.q.entregaID == entrega.id),
+                orderBy=-Intento.q.numero, connection=conn):
+            log.debug('Procesando intento: %s', intento)
+            # Si aprobó las pruebas públicas, está apto para corregir
+            if intento.pruebasPublicasPasadas:
+                correccion = Correccion(entrega=entrega, inscripto=inscripto,
+                    intento=intento, docente=1, connection=conn) #XXX Docente dummy
+                notificar(correccion)
+                log.info('Intento %d del alumno %d aceptado como entrega final.',
+                    intento.numero, inscripto.padron)
+                break
+    log.debug('Entrega finalizada')
+    entrega.finalizada = True
+