diff options
Diffstat (limited to 'support/scripts/newpackage-notify')
-rwxr-xr-x | support/scripts/newpackage-notify | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/support/scripts/newpackage-notify b/support/scripts/newpackage-notify new file mode 100755 index 00000000..24a996f3 --- /dev/null +++ b/support/scripts/newpackage-notify @@ -0,0 +1,86 @@ +#!/usr/bin/python -O +# $Id$ +# This program is intended to be run as a once-a-day cronjob, it +# sends a batched email containing the names of all new pacakges in +# the AUR, added within the last 24 hours, to those who have requested +# it on their account page. + +import sys +import os +import MySQLdb, MySQLdb.connections +import ConfigParser +from time import time + +#some options +SENDMAIL="/usr/sbin/sendmail" + +#Copied and pasted from tupkg updater: +########################################################### +# Deal with configuration +########################################################### + +conffile = '/home/aur/tupkgs.conf' + +if not os.path.isfile(conffile): + print "Error: cannot access config file ("+conffile+")" + sys.exit(1) + +config = ConfigParser.ConfigParser() +config.read(conffile) +############################################################ + +############################################################ +# Step 1, figure out the unix time 24 hours ago +starttime = time() - 24*60*60 + +############################################################ +# Step 2, do all the mysql mucking +dbconnection = MySQLdb.connect(host=config.get('mysql', 'host'), user=config.get('mysql', 'username'), passwd=config.get('mysql', 'password'), db=config.get('mysql', 'db')) +q = dbconnection.cursor() + +q.execute("SELECT Packages.Name, Packages.ID FROM Packages WHERE Packages.SubmittedTS >= %d AND Packages.DummyPkg = 0"%starttime) +packages = q.fetchall() + +q.execute("SELECT Users.Email FROM Users WHERE Users.NewPkgNotify = 1") +emails = q.fetchall() + +########################################################### +# Step 3, generate the message, depending on what we found + +#generate the headers to say where it is going +message = "To: \nBcc: " +emails_list=[] +for i in emails: + emails_list.append(i[0]) +message = message + (", ".join(emails_list)) + +#where it came from + other headers +message = message + "\nReply-to: nobody@archlinux.org\nFrom: aur-notify@archlinux.org\nX-Mailer: Python\nX-MimeOLE: Produced by AUR\n" + +#the subject +message = message + "Subject: AUR New Package Notification\n\n" + +#TODO: translations of message wouldn't kill anyone, but this would then need to find out the users language pref too +#Ok now the body +message = message + "Packages added to the AUR within the last 24 hours include:\n\n" +pkgs_list=[] +for i in packages: + message = message + i[0] + " ( http://aur.archlinux.org/packages.php?do_Details=1&ID=%d )\n"%i[1] +message = message + ''' +--- +You received this email because you chose to receive new package +notifications on your user options page in the AUR. If you no +longer wish to receive this daily mailing, please go to your +user options page in the AUR (http://aur.archlinux.org) and +uncheck "New Package Notify". + +''' +#print message #that's for debug + +########################################################### +# Step 4, mail that sucker +mailer = os.popen("%s -t" % SENDMAIL, 'w') +mailer.write(message) +mailer.close() + +# vim:noet:ts=2 sw=2 ft=python |