#!/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

from rowers.utils import myqueue


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__lt = datetime.date.today(),emailalert=True)

        for alert in todaysalerts:
            stats = alerts.alert_get_stats(alert)

            # explanatorytexts
            othertexts = [alert.description()]

            # send email
            job = myqueue(queue,handle_send_email_alert,
                          alert.manager.email,
                          alert.manager.first_name,
                          alert.manager.last_name,
                          alert.rower.user.first_name,
                          alert.name,
                          stats,debug=True,
                          othertexts=othertexts)

            # advance next_run
            if not testing:
                alert.next_run = datetime.date.today() + datetime.timedelta(days=alert.period-1)
                alert.save()

        if testing:
            print('{nr} alerts found'.format(nr = len(todaysalerts)))

        self.stdout.write(self.style.SUCCESS(
            'Successfully processed alerts'))
