Copyright FlintFam Systems Management, 2013. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
import os, sys, re, fileinput from email.parser import Parser as parsemail
We use each library for a purpose:
this is used to access environment variables
is used to access arguments, input
used for matching and extraction
used to read message from standard input
This is use to parse email messages from standard input
data = {} messagedata = {} agendafile = '~/org/emailagenda.org' level = 1 datetype = 'inactive' if os.environ['EMAILTOAGENDAFILE']: agendafile = os.environ['EMAILTOAGENDAFILE']
a dictionary used to store data for output
this is set by default to ~/org/emailagenda.org
. if the environment variable EMAILTOAGENDAFILE
is defined that is used
this is the level you want the heading to be, defaults to level 1, the top.
this is the type of timestamp to be generated, either active
or inactive
, defaults to inactive
.
<<Output>> <<DetermineType>> <<ParseSubject>>
def output(datadict, outputfile): headingstart = '*' * level date = datadict['date'] person = datadict['person'] subject = datadict['subject'] notes = datadict['notes'] if datetype == 'inactive': fdate = '[%s]' % date elif datetype == 'active': fdate = '<%s>' % date else: fdate = '[%s]' % date header = '\n{1} {2} {3}, {4}\n{5}\n' % (headingstart, date, person, subject, notes) outputfile.write(header)
def determineType(datadict): if re.match('^SCHEDRQ: .*', datadict['subject']): return 'schedrq' elif re.match('^Invitation: .*', datadict['subject']): return 'gcal' else: return 'unknown'
def munchMessage(datadict): ...
for line in fileinput.input(): message = message + line data = parsemail.parsestr(message) data['type'] = determineType(data) messagedata = munchMessage(data) ofile = open(agendafile, 'a') output(data, ofile) ofile.close()
# <<CopyrightStatement>> <<Imports>> <<MiscVars>> <<Subroutines>> <<Main>>