sending alerts in rudimentary form
This commit is contained in:
58
rowers/management/commands/processalerts.py
Normal file
58
rowers/management/commands/processalerts.py
Normal file
@@ -0,0 +1,58 @@
|
||||
#!/srv/venv/bin/python
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
PY3K = sys.version_info >= (3,0)
|
||||
|
||||
from django.core.management.base import BaseCommand
|
||||
from rowers.models import Alert, Condition, User
|
||||
from rowers.tasks import handle_send_email_alert
|
||||
|
||||
from rowers import alerts
|
||||
|
||||
import django_rq
|
||||
queue = django_rq.get_queue('default')
|
||||
queuelow = django_rq.get_queue('low')
|
||||
queuehigh = django_rq.get_queue('low')
|
||||
|
||||
|
||||
import datetime
|
||||
|
||||
class Command(BaseCommand):
|
||||
def add_arguments(self, parser):
|
||||
parser.add_argument(
|
||||
'--testing',
|
||||
action='store_true',
|
||||
dest='testing',
|
||||
default=False,
|
||||
help="Run in testing mode, don't send emails",
|
||||
)
|
||||
|
||||
def handle(self, *args, **options):
|
||||
if 'testing' in options:
|
||||
testing = options['testing']
|
||||
else:
|
||||
testing = False
|
||||
|
||||
todaysalerts = Alert.objects.filter(next_run = datetime.date.today(),emailalert=True)
|
||||
|
||||
for alert in todaysalerts:
|
||||
stats = alerts.alert_get_stats(alert)
|
||||
|
||||
# send email
|
||||
handle_send_email_alert(alert.manager.email,
|
||||
alert.manager.first_name,
|
||||
alert.manager.last_name,
|
||||
stats,debug=True)
|
||||
|
||||
# advance next_run
|
||||
if not testing:
|
||||
alert.next_run = alert.next_run + datetime.timedelta(days=alert.period)
|
||||
alert.save()
|
||||
|
||||
if testing:
|
||||
print('{nr} alerts found'.format(nr = len(todaysalerts)))
|
||||
|
||||
self.stdout.write(self.style.SUCCESS(
|
||||
'Successfully processed alerts'))
|
||||
Reference in New Issue
Block a user