1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
import os
import logging
TWITTER_KEYS = '~/.ssh/twitter'
EMAIL_SERVER = 'localhost'
EMAIL_SENDER = 'bumps@reflectometry.org'
def notify(user, msg, body="No body", level=1):
"""
Send a notfication message to the user regarding the job status.
"""
if not user:
pass
elif user.startswith('@'):
tweet(user, msg)
elif '@' in user:
email(EMAIL_SENDER, [user], body, subject=msg, server=EMAIL_SERVER)
else:
logging.debug("%s : %s"%(user, msg))
twitter = None
def tweet(user, msg):
global twitter
if twitter is None: twitter = open_twitter(TWITTER_KEYS)
twitter.direct_messages.new(user=user, text=msg)
def open_twitter(authfile):
from twitter import Twitter, OAuth #@UnresolvedImport twitter is optional
# Load credentials from authfile
for line in open(os.path.expanduser(authfile)).readlines():
exec(line)
auth = OAuth(access_token, access_secret, consumer_key, consumer_secret) #@UndefinedVariable comes from authfile
return Twitter(auth=auth)
def email(sender, receivers, message, subject='no subject', server='localhost'):
"""
Send an email message to a group of receivers
"""
import smtplib
if ':' in server:
host,port = server.split(':')
port = int(port)
else:
host,port = server,25
header="From: %s\r\nTo: %s\r\nSubject: %s\r\n\r\n"
header %= sender,", ".join(receivers),subject
#print "Sending the following mail message:\n"+header+message
#print "Trying to connect to",host,port
smtp = smtplib.SMTP(host,port)
#print "Connection established"
smtp.sendmail(sender,receivers,header+message)
#print "Mail sent from",sender,"to",", ".join(receivers)
smtp.quit()
if __name__ == "__main__":
msg = 'test notification'
body = 'See http://reflectometry.org for details.'
#notify('@pkienzle', msg, body)
notify('paknist@gmail.com', msg, body)
|