blob: d9694a64b226bf18706ac7d988721a06082e477e [file] [log] [blame]
#!/usr/bin/env python2.7
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You 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 json
import email.utils
from pprint import pprint
import getpass
from smtplib import SMTP_SSL as SMTP
import datetime
from dateutil.parser import parse
from email.mime.text import MIMEText
def findWednesday(d, weeks):
days_ahead = 2 - d.weekday()
if days_ahead <= 0:
days_ahead += weeks * 7
else:
days_ahead += (weeks - 1) * 7 #we're after wednesday, give less time
return d + datetime.timedelta(days_ahead)
fp = open('email_reminder_template.txt', 'rb')
messageBody = fp.read()
fp.close()
with open('content/shepherd_assignments.json') as data_file:
data = json.load(data_file)
month = raw_input('Enter month, in the format of YYYY-MM: ')
username = raw_input('Enter your ASF Username: ')
password = getpass.getpass('Enter your ASF pw: ')
podlingsToReport = data[month].keys()
meFormat = '{}@apache.org'
emailFormat = "dev@{}.incubator.apache.org"
me = meFormat.format(username)
overrides = {
'odftoolkit':'odf-dev@incubator.apache.org',
'climatemodeldiagnosticanalyzer':'dev@cmda.incubator.apache.org',
'blur':'blur-dev@incubator.apache.org',
'wave':'wave-dev@incubator.apache.org',
'log4cxx2':'log4cxx-dev@logging.apache.org'
}
thisMonth = parse(month + "-01")
podlingReportsDue = findWednesday(thisMonth, 1)
boardMeeting = findWednesday(thisMonth, 3)
subjectDate = thisMonth.strftime("%B %Y")
wikiPage = thisMonth.strftime("%B%Y")
dueDateFormat = podlingReportsDue.strftime("%a, %B %d")
boardMeetingFormat = boardMeeting.strftime("%a, %d %B %Y")
emailBodyString = messageBody.format(boardMeetingFormat, dueDateFormat, wikiPage)
s = SMTP('mail-relay.apache.org')
s.login(username, password)
print "connected"
for podling in podlingsToReport:
if podling in overrides:
emailTo = overrides[podling]
else:
emailTo = emailFormat.format(podling)
msgId = email.utils.make_msgid()
msg = MIMEText(emailBodyString)
msg['Subject'] = 'Podling Report Reminder - '+subjectDate
msg['From'] = me
msg['Date'] = email.utils.formatdate()
msg['To'] = emailTo
msg['Message-ID'] = msgId
s.sendmail(me, [emailTo], msg.as_string())
print(' sent ',msgId,' to podling ',emailTo)
s.quit()