system-config/tools/invite2summit/send.py
Jeremy Stanley 9341118edd Use foundation member IDs in invitations list
Since the foundation sometimes needs to deduplicate subsequent
invitations for the same foundation member against invitations sent
by another system, use the member ID as the first field of the
invite instead of using the Gerrit username now that we have that
information available. Use a default member ID of 0 to indicate
non-member invitees who may require additional manual deduplication
or vetting. Also log the member ID in the output of the invite mass
mailer script.

Change-Id: I86d879a5f06144a0889eb852f2cf3d555a12a7aa
2017-08-03 20:20:30 +00:00

85 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 email.mime.text
import settings
import smtplib
import sys
import time
from string import Template
class ATC(object):
def __init__(self, row):
self.osfid = row[0]
self.name = unicode(row[1], 'utf8')
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 = email.mime.text.MIMEText(content, 'plain',
'utf8')
msg["From"] = settings.EMAIL_FROM
msg["To"] = ','.join(committer.emails)
msg["Date"] = email.utils.formatdate()
msg["Message-ID"] = email.utils.make_msgid()
msg["Subject"] = settings.EMAIL_SUBJECT
session.sendmail(settings.EMAIL_FROM, committer.emails,
msg.as_string())
print "%s,%s,%s" % (code, committer.osfid, committer.name)
session.quit()
time.sleep(settings.EMAIL_PAUSE)