52 lines
2 KiB
Python
Executable file
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))
|