מוריד שירים מיוטיוב
ויאגרה 100 מ"ג שימוש
google תרגום מאנגלית לעברית
самые надежные брокеры бинарных опционов
קמגרה למכירה
промокоды для ламоды

De certificados y esas rarezas humanas

Y ya en el ocaso del mes rasguño la mitad de las obligaciones autoimpuestas. El tiempo últimamente se me escurre como agua entre los dedos de los pies, sin embargo acá estoy, firme como un soldado, cumpliendo, aún con los ojos llenos de sueño.

En base a una detallada observación del reino animal, puedo decir que la raza humana se diferencia del resto de los animales en su obsesión por los certificados. Quiere una constancia de cada charla que presenció, ya sea sobre las similitudes entre un dogo argentino y el tema Cantata de Puentes Amarrillos de Luis Alberto, y no te das una idea de la cantidad de mails que son capaces de mandarte pidiéndote dicho “pelpa”, mas aún si les dijiste que se los ibas a dar. Ay, ay, ay, yo y mi bocota! (estimado lector, si ud. se siente agraviado, dese cuenta que es un chiste y sea feliz).

Así que bueno, 72 gentes (saludos a Corrientes!) querían un certificado por haber asistido al Festival de instalación de software libre mas grande del mundo, el FLISOL, y para darle lo que ellos querían, robé y usé código de por ahí, mas algo de lo que ya mostré otras veces en este hermoso lugar que tan a menudo nos encuentra. La receta fue la siguiente:

Ingredientes

  • Archivo CSV con 4 columnas: nombre, apellido, email, mas un campo que dice si quiere certificado (si/No)
  • Plantilla svg para el certificado
  • Código certg de Facundo Batista para generar certificados
  • Código desarrollado anteriormente para mandar emails

Preparación

Aprovechando nuestra inmensa capacidad en las artes pictóricas, hacemos una plantilla con inkscape poniendo una etiqueta para que sea reemplazada con el nombre y apellido de la persona:  {{name}}

El código certg va a generar un pdf poniendo en esa etiqueta los nombres que lea de un archivo yaml. Entonces, para no modificar ese código, hacemos un breve script que lea el CSV donde se encuentran todos los datos de las personas que asistieron al evento y los escriba en un nuevo archivo basándose en el yaml base, y obviamente manteniendo el formato. ¿Por qué me decidí por esta alternativa? porque quería aprender a generar y leer yaml. Entonces, ahí va:

# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import yaml
import csv

fh = open('base.yaml', 'rt')
f2 = open('flisol2014.yaml', 'w')

config = yaml.load(fh)

#Columna del apellido y nombre en el archivo csv
col_ape = 0
col_nom = 1

with open('flisol-2014-asistentes.csv', 'rb') as csvfile:
    lista_inscriptos = csv.reader(csvfile, delimiter=';', quotechar='|')
    for inscripto in lista_inscriptos:
        if inscripto[3]=='si':
            config['replace_info'].append({'stopit':'.','name':inscripto[1]+
            ' '+inscripto[0]})

f2.write(yaml.dump(config,encoding=None))

Ahora tenemos en el archivo flisol2014.yaml todo listo para generar los certificados. Dentro de este archivo tenemos que poner el nombre del template svg que creamos antes -entre otros detalles menores-, y finalmente lo ejecutamos así:

./certg.py flisol2014.yaml

Ya está casi todo. Tenemos los 72 certificados, ahora lo que vamos a hacer es crear un script que lea del CSV los emails, nombres y, que adjunte según el nombre de archivo el certificado que corresponda. A esto lo hice del siguiente modo:

# -*- coding: utf-8 -*-
# Importamos libs
import smtplib
import mimetypes
import csv

# Importamos los modulos necesarios
from email.MIMEMultipart import MIMEMultipart
from email.Encoders import encode_base64
from email.mime.text import MIMEText
from email.MIMEBase import MIMEBase
from time import sleep
from string import Template

# Autenticamos
mailServer = smtplib.SMTP('smtp.gmail.com',587)
mailServer.ehlo()
mailServer.starttls()
mailServer.ehlo()
mailServer.login("TUMAIL@mail.com","TUPASS")

sms = Template(
"""Estimad@ $nombre,

Le enviamos el certificado de asistencia por haber participado en el
Festival Latinoamericano de Instalación de Software Libre realizado en la
ciudad de Santa Fe.

Le pedimos disculpas por el retraso y principalmente le agradecemos por
apoyar el FLISOL!

Le informaremos sobre futuros eventos relacionados con el software y la cultura libre.

Atte.

Grupo de Usuarios de Linux del Litoral (LUGLi).
http://lugli.org.ar
http://flisolsantafe.org.ar
"""
)

inscriptos_file = 'flisol-2014-asistentes.csv'
col_ape = 0
col_nom = 1
col_mail = 2
col_cert = 3

with open(inscriptos_file, 'rb') as csvfile:
    lista_inscriptos = csv.reader(csvfile, delimiter=';', quotechar='|')
    for inscripto in lista_inscriptos:
        if inscripto[col_cert] == 'si':
            ape = inscripto[col_ape]
            nom = inscripto[col_nom]
            mailto = inscripto[col_mail]

            msg = MIMEMultipart()
            msg['From'] = "Emiliano López"
            msg['To'] = mailto
            msg['Subject'] = "Certificado FLISOL 2014"
            msg.attach(MIMEText(sms.substitute({ 'nombre': nom})))

            # adjunta certificado
            distinct = (nom+ape).lower().replace(" ", "")
            cert_fname = "certificate-{}.pdf".format(distinct)
            attachFile = MIMEBase('application', 'pdf')
            attachFile.set_payload(file(cert_fname).read())
            encode_base64(attachFile)
            attachFile.add_header('Content-Disposition', 'attachment', filename=cert_fname)
            msg.attach(attachFile)

            ## Enviamos
            mailServer.sendmail("TUMAIL@mail.com", mailto, msg.as_string())
            print mailto+"    "+cert_fname
            sleep(4)

# Cerramos conexion
mailServer.close()

Al cabo de unos minutos, nos empiezan a responder agradeciendo por el certificado recibido, y claro, no es para menos, fijate que lindura el certificado que les hice:
certbillAhora sí, lo que todos estábamos esperando, el tema que bautizó al primer torneo de la liga de partidos al diome:

  1. Che yo asistí (es cierto que asistí las últimas 2 horas porque tuve dramas) y a mi no me diste. Que tipo jodido Emi… : 😆 😆

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Social Widgets powered by AB-WebLog.com.

Social Widgets powered by AB-WebLog.com.

Social Widgets powered by AB-WebLog.com.