Beispiel #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,
        )
Beispiel #2
0
 def delete(self):
     try:
         _id = self.request.body
         _id = int(_id)
     except:
         self.abort(400, "request is invalid")
     if not _id:
         self.abort(400, "schedule id invalid")
     schedule = Schedule.get(Schedule.id == _id)
     if not schedule:
         self.abort(400, "schedule not found")
     schedule.invalid()
     self.json({})
Beispiel #3
0
 def subject(self):
     return Schedule.get(Schedule.id == self.schedule_id).subject