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, )
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({})
def subject(self): return Schedule.get(Schedule.id == self.schedule_id).subject