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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
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
|