Пример #1
0
def _handle_schedule(schedule_id):
    schedule = Schedule.get(Schedule.id == schedule_id)
    if not schedule:
        logger.warn("Schedule is invalid. ID = %s" % schedule_id)
        return
    to_mails = schedule.recipients.split(",")
    attachments = Attachment.gets_by_schedule(schedule_id)
    atta_dicts = [a.to_mandrill_dict() for a in attachments]
    rs = send_mail(
        subject=schedule.subject,
        from_mail=SEND_ADDRESS,
        to_mails=to_mails,
        html=schedule.content,
        attachments=atta_dicts,
    )
    if not rs:
        logger.warn("Schedule send fail. ID = %s" % schedule_id)
        schedule.fail()
        return
    if schedule.repeat_strategy:
        schedule.wait(schedule.repeat_strategy.get_next_time())
    else:
        schedule.send()
    for r in rs:
        logger.info(r)
        now = datetime.utcnow()
        History.create(
            recipient=r.get("email"),
            send_id=r.get("_id", ""),
            schedule_id=schedule.id,
            status=r.get("status"),
            reason=r.get("reject_reason") or "",
            send_time=now,
            update_time=now,
        )