mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 09:43:03 +00:00
Added newpackage-notify to finally implement
new package notifications that people can ask for on their user page. This script should run on a daily cronjob. A few spelling stupidity fixes as well.
This commit is contained in:
parent
6adf639a34
commit
45e5883a15
3 changed files with 91 additions and 5 deletions
86
support/scripts/newpackage-notify
Executable file
86
support/scripts/newpackage-notify
Executable file
|
@ -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
|
Loading…
Add table
Add a link
Reference in a new issue