datatracker/ietf/bin/send-scheduled-mail
2011-06-28 18:20:20 +00:00

52 lines
2 KiB
Python
Executable file

#!/usr/bin/env python
import datetime, os, sys
import syslog
from ietf import settings
from django.core import management
management.setup_environ(settings)
syslog.openlog(os.path.basename(__file__), syslog.LOG_PID, syslog.LOG_LOCAL0)
from ietf.announcements.models import ScheduledAnnouncement
from ietf.announcements.send_scheduled import *
from django.db.models import Q
if len(sys.argv) != 2 or sys.argv[1] not in ('all', 'rsync', 'specific'):
print "USAGE: %s <all | rsync | specific>" % os.path.basename(__file__)
print "'all' means all not sent"
print "'rsync' means all not sent where to-be-sent-date is null"
print "'specific' means all not sent that are due to be sent"
sys.exit(1)
mode = sys.argv[1]
now = datetime.datetime.now()
if settings.USE_DB_REDESIGN_PROXY_CLASSES:
from ietf.announcements.models import SendQueue
announcements = SendQueue.objects.filter(sent_at=None)
if mode == "rsync":
announcements = announcements.filter(send_at=None)
elif mode == "specific":
announcements = announcements.exclude(send_at=None).filter(send_at__lte=now)
else:
announcements = ScheduledAnnouncement.objects.filter(mail_sent=False)
if mode == "rsync":
# include bogus 0000-00-00 entries
announcements = announcements.filter(Q(to_be_sent_date=None) | Q(to_be_sent_date__lte=datetime.date.min))
elif mode == "specific":
# exclude null/bogus entries
announcements = announcements.exclude(Q(to_be_sent_date=None) | Q(to_be_sent_date__lte=datetime.date.min))
announcements = announcements.filter(to_be_sent_date__lte=now.date(),
to_be_sent_time__lte=now.time())
for announcement in announcements:
send_scheduled_announcement(announcement)
subject = announcement.message.subject if settings.USE_DB_REDESIGN_PROXY_CLASSES else announcement.subject
syslog.syslog(u'Sent scheduled announcement %s "%s"' % (announcement.id, subject))