from datetime import timedelta

from django.utils import timezone
from celery.task.schedules import crontab

from orchestra.contrib.tasks import task, periodic_task

from . import engine, settings


@task
def send_message(message, connection=None):
    message.save()
    engine.send_message(message, connection=connection)


@periodic_task(run_every=crontab(hour=7, minute=30))
def cleanup_messages():
    from .models import Message
    delta = timedelta(days=settings.MAILER_MESSAGES_CLEANUP_DAYS)
    now = timezone.now()
    epoch = (now-delta)
    return Message.objects.filter(state=Message.SENT, created_at__lt=epoch).only('id').delete()