Modify ↓
#130 closed defect (fixed)
Not realy a ticket: Just a update for the Script
Reported by: | viktorerrath | Owned by: | Alec Thomas |
---|---|---|---|
Priority: | normal | Component: | WikiNotifyScript |
Severity: | normal | Keywords: | |
Cc: | Trac Release: |
Description
Hello
At first: thank you for this script. It´s a really good and important one. But there have been a few things I don`t liked so I changed this parts of the Script.
List of changes: 1.)We are using Python 2.4 and Trac 0.93 and pysqlite 2. I change the DB-Connection-Part to work with pysqlite2
2.) I added a optional parameter for a log-file.
3.) I changed the order of the line in the part for the email-creation. Now the email has an correct email adress for every reciever of the notification-email instead of an empty "TO:" field.
If you have an questions please let me know: v.errath(at)bcom.at
#!/usr/bin/python # Usage: # trac-wiki-notify <trac-url> <trac-path> <wiki-notification-page> \ # <time-delta> <from-address> [<smtp-server>] [</path/to/logfile/logfiel.log>] # # This script extracts a list of subscribers from a trac page and mails them a # list of changes over the last time-delta seconds. # # eg. This will mail any changes over the last hour: # trac-wiki-notify /srv/trac/devtodo WikiNotify 3600 # # Users are included in the notification page as a Trac Wiki formatted list of # E-Mail addresses. ie. "<space><space>*<space><email>" # changes by Viktor Errath # Date: 2006-01-13 13:51 # email: v.errath(at)bcom.at # # Changes: # - Now this script (this version of the trac-wiki-notification) work with # plone 2.4 and pysqlite2 # # - Added one optional parameter 'LOGFILE' # # - Re-Ordered the creation of the email-Body: Now the email has filled in # a correct Reciever-Adress (instead of an empty field) from pysqlite2 import dbapi2 as sqlite import sys import smtplib import re from time import strftime, localtime, time if len(sys.argv) < 5: raise StandardError("Not enough arguments") trac_url, trac_location, notify_page, time_delta, smtp_from = sys.argv[1:6] smtp_server = "localhost" if len(sys.argv) > 6: smtp_server = sys.argv[6] if len(sys.argv) > 7: logfile = sys.argv[7] db = sqlite.connect(trac_location + "/db/trac.db") q = db.cursor() # Get list of users q.execute("select text from wiki where name='%s' order by time desc limit 1" % notify_page) row = q.fetchone() smtp_body='' if row: smtp_to = [x[4:].strip() for x in row[0].split("\n") if x[0:4] == ' * '] # Get list of pages act_time = int(strftime('%s', localtime())) - int(time_delta) q.execute("select name, time, author, comment, version from wiki where time > %s order by time desc" % str(act_time)) changes = q.fetchall() if changes: # Create the email-body email_body = "Changes since %s\n\n" % strftime("%Y/%d/%m %H:%M:%S", localtime(time() - float(time_delta))) for change in changes: change_time = strftime("%Y/%d/%m %H:%M:%S", localtime(int(change[1]))) email_body += " %s (version %s) modified %s by %s" % (change[0], change[4], change_time, change[2]) email_body += "\n %swiki/%s?version=%s\n" % (trac_url, change[0], change[4]) if change[3]: email_body += " \"%s\"\n" % change[3] email_body += "\n" email_body += "\nYou can remove yourself from notifications at this URL:\n %swiki/%s\n" % (trac_url, notify_page) smtp = smtplib.SMTP(smtp_server) smtp = smtplib.SMTP(smtp_server) # Finish the email for email in smtp_to: smtp_body = "From: %s\n" % smtp_from smtp_body += "To: %s\n" % email smtp_body += "Reply-To: %s\n" % smtp_from smtp_body += "Subject: Notification of %i changes to Trac Wiki %s\n\n" % (len(changes), trac_url) smtp_body += email_body # Send the mail smtp.sendmail(smtp_from, email, smtp_body) smtp.quit() # Write logfile (or not) if len(sys.argv) > 7: fileobj = open(sys.argv[7], 'au') fileobj.write('\n#######################################################\n') fileobj.write('%s\n' % str(strftime('%Y-%m-%d %H:%M:%S', localtime()))) fileobj.write('Trac-Wiki-Notification-Email sent to: %s' % smtp_to) fileobj.write('\n\n %s \n\n' % smtp_body) fileobj.close()
Attachments (0)
Note: See
TracTickets for help on using
tickets.
(In [374]) * Committed changes from viktorerrath, thanks for the update. Closes #130.