def draft_create_api(): data = request.get_json(force=True) to = get_recipients(data.get('to'), 'to') cc = get_recipients(data.get('cc'), 'cc') bcc = get_recipients(data.get('bcc'), 'bcc') subject = data.get('subject') body = data.get('body') try: tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('thread_id'), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) try: draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread) except ActionError as e: return err(e.error, str(e)) return g.encoder.jsonify(draft)
def draft_send_api(): data = request.get_json(force=True) draft_public_id = data.get('draft_id') if draft_public_id is not None: draft = get_draft(draft_public_id, data.get('version'), g.namespace.id, g.db_session) if not any((draft.to_addr, draft.cc_addr, draft.bcc_addr)): raise InputError('No recipients specified') validate_draft_recipients(draft) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=True) else: to = get_recipients(data.get('to'), 'to', validate_emails=True) cc = get_recipients(data.get('cc'), 'cc', validate_emails=True) bcc = get_recipients(data.get('bcc'), 'bcc', validate_emails=True) if not any((to, cc, bcc)): raise InputError('No recipients specified') subject = data.get('subject') body = data.get('body') tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('thread_id'), g.namespace.id, g.db_session) draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) resp = send_draft(g.namespace.account, draft, g.db_session, schedule_remote_delete=False) return resp
def draft_send_api(): data = request.get_json(force=True) if data.get("draft_id") is None: if data.get("to") is None: return err(400, "Must specify either draft id + version or " "message recipients.") else: if data.get("version") is None: return err(400, "Must specify version to send") draft_public_id = data.get("draft_id") version = data.get("version") if draft_public_id is not None: try: valid_public_id(draft_public_id) draft = g.db_session.query(Message).filter(Message.public_id == draft_public_id).one() except InputError: return err(400, "Invalid public id {}".format(draft_public_id)) except NoResultFound: return err(404, "No draft found with id {}".format(draft_public_id)) if draft.namespace != g.namespace: return err(404, "No draft found with id {}".format(draft_public_id)) if draft.is_sent or not draft.is_draft: return err(400, "Message with id {} is not a draft".format(draft_public_id)) if not draft.to_addr: return err(400, "No 'to:' recipients specified") if draft.version != version: return err( 409, "Draft {0}.{1} has already been updated to version {2}".format(draft_public_id, version, draft.version), ) schedule_action("send_draft", draft, g.namespace.id, g.db_session) else: to = data.get("to") cc = data.get("cc") bcc = data.get("bcc") subject = data.get("subject") body = data.get("body") try: tags = get_tags(data.get("tags"), g.namespace.id, g.db_session) files = get_attachments(data.get("files"), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get("reply_to_thread"), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) draft = sendmail.create_draft( g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False ) schedule_action("send_directly", draft, g.namespace.id, g.db_session) draft.state = "sending" return g.encoder.jsonify(draft)
def draft_send_api(): data = request.get_json(force=True) if data.get('draft_id') is None and data.get('to') is None: return err(400, 'Must specify either draft id or message recipients.') draft_public_id = data.get('draft_id') if draft_public_id is not None: try: valid_public_id(draft_public_id) draft = g.db_session.query(Message).filter( Message.public_id == draft_public_id).one() except InputError: return err(400, 'Invalid public id {}'.format(draft_public_id)) except NoResultFound: return err(404, 'No draft found with id {}'. format(draft_public_id)) if draft.namespace != g.namespace: return err(404, 'No draft found with id {}'. format(draft_public_id)) if draft.is_sent or not draft.is_draft: return err(400, 'Message with id {} is not a draft'. format(draft_public_id)) if not draft.to_addr: return err(400, "No 'to:' recipients specified") if not draft.is_latest: return err(409, 'Draft {} has already been updated to {}'.format( draft_public_id, g.encoder.cereal(draft.most_recent_revision))) schedule_action('send_draft', draft, g.namespace.id, g.db_session) else: to = data.get('to') cc = data.get('cc') bcc = data.get('bcc') subject = data.get('subject') body = data.get('body') try: tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('files'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('reply_to_thread'), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) schedule_action('send_directly', draft, g.namespace.id, g.db_session) draft.state = 'sending' return g.encoder.jsonify(draft)
def draft_send_api(): data = request.get_json(force=True) if data.get('draft_id') is None and data.get('to') is None: return err(400, 'Must specify either draft id or message recipients.') draft_public_id = data.get('draft_id') if draft_public_id is not None: try: draft = g.db_session.query(Message).filter( Message.public_id == draft_public_id).one() except NoResultFound: return err(404, 'No draft found with id {}'. format(draft_public_id)) if draft.namespace != g.namespace: return err(404, 'No draft found with id {}'. format(draft_public_id)) if draft.is_sent or not draft.is_draft: return err(400, 'Message with id {} is not a draft'. format(draft_public_id)) if not draft.to_addr: return err(400, "No 'to:' recipients specified") if not draft.is_latest: return err(409, 'Draft {} has already been updated to {}'.format( draft_public_id, g.encoder.cereal(draft.most_recent_revision))) schedule_action('send_draft', draft, g.namespace.id, g.db_session) else: to = data.get('to') cc = data.get('cc') bcc = data.get('bcc') subject = data.get('subject') body = data.get('body') try: tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('files'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('reply_to_thread'), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) schedule_action('send_directly', draft, g.namespace.id, g.db_session) draft.state = 'sending' return g.encoder.jsonify(draft)
def draft_send_api(): data = request.get_json(force=True) if data.get('draft_id') is None and data.get('to') is None: return err(400, 'Must specify either draft id or message recipients.') draft_public_id = data.get('draft_id') if draft_public_id is not None: try: draft = g.db_session.query(SpoolMessage).filter( SpoolMessage.public_id == draft_public_id).one() except NoResultFound: return err(404, 'No draft found with public_id {}'. format(draft_public_id)) if draft.namespace != g.namespace: return err(404, 'No draft found with public_id {}'. format(draft_public_id)) if draft.is_sent or not draft.is_draft: return err(400, 'Message with public id {} is not a draft'. format(draft_public_id)) if not draft.to_addr: return err(400, "No 'to:' recipients_specified") # Mark draft for sending draft.state = 'sending' return g.encoder.jsonify(draft) to = data.get('to') cc = data.get('cc') bcc = data.get('bcc') subject = data.get('subject') body = data.get('body') block_public_ids = data.get('files') draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, block_public_ids, cc, bcc) # Mark draft for sending draft.state = 'sending' return g.encoder.jsonify(draft)
def draft_create_api(): data = request.get_json(force=True) to = data.get("to") cc = data.get("cc") bcc = data.get("bcc") subject = data.get("subject") body = data.get("body") files = data.get("files") try: tags = get_tags(data.get("tags"), g.namespace.id, g.db_session) files = get_attachments(data.get("files"), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get("reply_to_thread"), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) draft = sendmail.create_draft( g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread ) return g.encoder.jsonify(draft)
def draft_send_api(): data = request.get_json(force=True) if data.get('draft_id') is None: if data.get('to') is None: return err(400, 'Must specify either draft id + version or ' 'message recipients.') else: if data.get('version') is None: return err(400, 'Must specify version to send') draft_public_id = data.get('draft_id') version = data.get('version') if draft_public_id is not None: try: valid_public_id(draft_public_id) draft = g.db_session.query(Message).filter( Message.public_id == draft_public_id).one() except InputError: return err(400, 'Invalid public id {}'.format(draft_public_id)) except NoResultFound: return err(404, 'No draft found with id {}'. format(draft_public_id)) if draft.namespace != g.namespace: return err(404, 'No draft found with id {}'. format(draft_public_id)) if draft.is_sent or not draft.is_draft: return err(400, 'Message with id {} is not a draft'. format(draft_public_id)) if not draft.to_addr: return err(400, "No 'to:' recipients specified") if draft.version != version: return err( 409, 'Draft {0}.{1} has already been updated to version {2}'. format(draft_public_id, version, draft.version)) validate_draft_recipients(draft) try: schedule_action('send_draft', draft, g.namespace.id, g.db_session) except ActionError as e: return err(e.error, str(e)) else: to = get_recipients(data.get('to'), 'to', validate_emails=True) cc = get_recipients(data.get('cc'), 'cc', validate_emails=True) bcc = get_recipients(data.get('bcc'), 'bcc', validate_emails=True) subject = data.get('subject') body = data.get('body') try: tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('thread_id'), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) try: draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) schedule_action('send_directly', draft, g.namespace.id, g.db_session) except ActionError as e: return err(e.error, str(e)) draft.state = 'sending' return g.encoder.jsonify(draft)
def draft_send_api(): data = request.get_json(force=True) if data.get('draft_id') is None: if data.get('to') is None: return err( 400, 'Must specify either draft id + version or ' 'message recipients.') else: if data.get('version') is None: return err(400, 'Must specify version to send') draft_public_id = data.get('draft_id') version = data.get('version') if draft_public_id is not None: try: valid_public_id(draft_public_id) draft = g.db_session.query(Message).filter( Message.public_id == draft_public_id).one() except InputError: return err(400, 'Invalid public id {}'.format(draft_public_id)) except NoResultFound: return err(404, 'No draft found with id {}'.format(draft_public_id)) if draft.namespace != g.namespace: return err(404, 'No draft found with id {}'.format(draft_public_id)) if draft.is_sent or not draft.is_draft: return err( 400, 'Message with id {} is not a draft'.format(draft_public_id)) if not draft.to_addr: return err(400, "No 'to:' recipients specified") if draft.version != version: return err( 409, 'Draft {0}.{1} has already been updated to version {2}'.format( draft_public_id, version, draft.version)) validate_draft_recipients(draft) try: schedule_action('send_draft', draft, g.namespace.id, g.db_session) except ActionError as e: return err(e.error, str(e)) else: to = get_recipients(data.get('to'), 'to', validate_emails=True) cc = get_recipients(data.get('cc'), 'cc', validate_emails=True) bcc = get_recipients(data.get('bcc'), 'bcc', validate_emails=True) subject = data.get('subject') body = data.get('body') try: tags = get_tags(data.get('tags'), g.namespace.id, g.db_session) files = get_attachments(data.get('file_ids'), g.namespace.id, g.db_session) replyto_thread = get_thread(data.get('thread_id'), g.namespace.id, g.db_session) except InputError as e: return err(404, e.message) try: draft = sendmail.create_draft(g.db_session, g.namespace.account, to, subject, body, files, cc, bcc, tags, replyto_thread, syncback=False) schedule_action('send_directly', draft, g.namespace.id, g.db_session) except ActionError as e: return err(e.error, str(e)) draft.state = 'sending' return g.encoder.jsonify(draft)