From 44941ea0c8336d1b0241fc3e09051ef5fe25b1c8 Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Sun, 6 Mar 2005 00:32:06 +0000 Subject: [PATCH] =?utf8?q?Falt=C3=B3=20hacer=20el=20add=20del=20nuevo=20co?= =?utf8?q?mando=20=3D(.=20Ahora=20ya=20manda=20mails=20=3D).?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/sc_deliver | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 src/sc_deliver diff --git a/src/sc_deliver b/src/sc_deliver new file mode 100755 index 0000000..67ec78d --- /dev/null +++ b/src/sc_deliver @@ -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 + -- 2.43.0