192414e957
The mail merger for summit invites includes Date and Message-ID headers, because Crocker said so in 1977 that's why. Change-Id: I2105fe4cd04b7b2042c9e32888cb1f094697d7bf
89 lines
2.7 KiB
Python
89 lines
2.7 KiB
Python
# Summit passcode-sending application
|
|
#
|
|
# Copyright 2013 Thierry Carrez <thierry@openstack.org>
|
|
# All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
import csv
|
|
import email.utils
|
|
import settings
|
|
import smtplib
|
|
import sys
|
|
import time
|
|
from string import Template
|
|
|
|
|
|
class ATC(object):
|
|
def __init__(self, row):
|
|
self.lpid = row[0]
|
|
self.name = row[1]
|
|
self.emails = row[2:]
|
|
|
|
|
|
if __name__ == '__main__':
|
|
|
|
if len(sys.argv) != 3:
|
|
print "Usage: %s atc.csv codes.csv" % sys.argv[0]
|
|
sys.exit(1)
|
|
|
|
atcfile = sys.argv[1]
|
|
codesfile = sys.argv[2]
|
|
|
|
committers = []
|
|
with open(atcfile, 'r') as f:
|
|
reader = csv.reader(f)
|
|
for row in reader:
|
|
committers.append(ATC(row))
|
|
|
|
codes = []
|
|
with open(codesfile, 'r') as f:
|
|
reader = csv.reader(f)
|
|
for row in reader:
|
|
codes.append(row[0])
|
|
|
|
for committer, code in zip(committers, codes):
|
|
if settings.EMAIL_USE_SSL:
|
|
session = smtplib.SMTP_SSL(
|
|
settings.EMAIL_HOST, settings.EMAIL_PORT)
|
|
else:
|
|
session = smtplib.SMTP(settings.EMAIL_HOST, settings.EMAIL_PORT)
|
|
if settings.EMAIL_USE_TLS:
|
|
session.starttls()
|
|
session.login(settings.EMAIL_USER, settings.EMAIL_PASSWORD)
|
|
session.set_debuglevel(settings.EMAIL_DEBUGLEVEL)
|
|
|
|
template = Template(settings.EMAIL_TEMPLATE)
|
|
content = template.substitute(name=committer.name,
|
|
code=code,
|
|
signature=settings.EMAIL_SIGNATURE)
|
|
msg = (
|
|
"From: %s\r\n"
|
|
"To: %s\r\n"
|
|
"Date: %s\r\n"
|
|
"Message-ID: %s\r\n"
|
|
"Subject: %s\r\n"
|
|
"%s"
|
|
% (
|
|
settings.EMAIL_FROM,
|
|
','.join(committer.emails),
|
|
email.utils.formatdate(),
|
|
email.utils.make_msgid(),
|
|
settings.EMAIL_SUBJECT,
|
|
content))
|
|
|
|
session.sendmail(settings.EMAIL_FROM, committer.emails, msg)
|
|
print "%s,ATC,%s" % (code, committer.name)
|
|
session.quit()
|
|
time.sleep(settings.EMAIL_PAUSE)
|