def post_notification(notification_type): request_json = get_valid_json() if notification_type == EMAIL_TYPE: form = validate(request_json, post_email_request) elif notification_type == SMS_TYPE: form = validate(request_json, post_sms_request) elif notification_type == LETTER_TYPE: form = validate(request_json, post_letter_request) else: abort(404) check_service_has_permission(notification_type, authenticated_service.permissions) scheduled_for = form.get("scheduled_for", None) check_service_can_schedule_notification(authenticated_service.permissions, scheduled_for) check_rate_limiting(authenticated_service, api_user) template, template_with_content = validate_template( form['template_id'], form.get('personalisation', {}), authenticated_service, notification_type, ) reply_to = get_reply_to_text(notification_type, form, template) if notification_type == LETTER_TYPE: notification = process_letter_notification(letter_data=form, api_key=api_user, template=template, reply_to_text=reply_to) else: notification = process_sms_or_email_notification( form=form, notification_type=notification_type, api_key=api_user, template=template, service=authenticated_service, reply_to_text=reply_to) template_with_content.values = notification.personalisation if notification_type == SMS_TYPE: create_resp_partial = functools.partial( create_post_sms_response_from_notification, from_number=reply_to, ) elif notification_type == EMAIL_TYPE: create_resp_partial = functools.partial( create_post_email_response_from_notification, subject=template_with_content.subject, email_from='{}@{}'.format( authenticated_service.email_from, current_app.config['NOTIFY_EMAIL_DOMAIN']), ) elif notification_type == LETTER_TYPE: create_resp_partial = functools.partial( create_post_letter_response_from_notification, subject=template_with_content.subject, ) resp = create_resp_partial( notification=notification, url_root=request.url_root, scheduled_for=scheduled_for, content=template_with_content.content_with_placeholders_filled_in, ) return jsonify(resp), 201
def post_notification(notification_type): try: request_json = request.get_json() except werkzeug.exceptions.BadRequest as e: raise BadRequestError(message="Error decoding arguments: {}".format(e.description), status_code=400) if notification_type == EMAIL_TYPE: form = validate(request_json, post_email_request) elif notification_type == SMS_TYPE: form = validate(request_json, post_sms_request) elif notification_type == LETTER_TYPE: form = validate(request_json, post_letter_request) else: abort(404) check_service_has_permission(notification_type, authenticated_service.permissions) scheduled_for = form.get("scheduled_for", None) check_service_can_schedule_notification(authenticated_service.permissions, scheduled_for) check_rate_limiting(authenticated_service, api_user) template, template_with_content = validate_template( form['template_id'], form.get('personalisation', {}), authenticated_service, notification_type, ) reply_to = get_reply_to_text(notification_type, form, template) if notification_type == LETTER_TYPE: notification = process_letter_notification( letter_data=form, api_key=api_user, template=template, reply_to_text=reply_to ) else: notification = process_sms_or_email_notification( form=form, notification_type=notification_type, api_key=api_user, template=template, service=authenticated_service, reply_to_text=reply_to ) template_with_content.values = notification.personalisation if notification_type == SMS_TYPE: create_resp_partial = functools.partial( create_post_sms_response_from_notification, from_number=reply_to ) elif notification_type == EMAIL_TYPE: create_resp_partial = functools.partial( create_post_email_response_from_notification, subject=template_with_content.subject, email_from='{}@{}'.format(authenticated_service.email_from, current_app.config['NOTIFY_EMAIL_DOMAIN']) ) elif notification_type == LETTER_TYPE: create_resp_partial = functools.partial( create_post_letter_response_from_notification, subject=template_with_content.subject, ) resp = create_resp_partial( notification=notification, content=str(template_with_content), url_root=request.url_root, scheduled_for=scheduled_for ) return jsonify(resp), 201
def post_notification(notification_type): try: request_json = request.get_json() except werkzeug.exceptions.BadRequest as e: raise BadRequestError(message="Error decoding arguments: {}".format( e.description), status_code=400) if notification_type == EMAIL_TYPE: form = validate(request_json, post_email_request) elif notification_type == SMS_TYPE: form = validate(request_json, post_sms_request) elif notification_type == LETTER_TYPE: form = validate(request_json, post_letter_request) else: abort(404) check_service_has_permission(notification_type, authenticated_service.permissions) scheduled_for = form.get("scheduled_for", None) check_service_can_schedule_notification(authenticated_service.permissions, scheduled_for) check_rate_limiting(authenticated_service, api_user) template, template_with_content = validate_template( form['template_id'], form.get('personalisation', {}), authenticated_service, notification_type, ) reply_to = get_reply_to_text(notification_type, form, template) if notification_type == LETTER_TYPE: notification = process_letter_notification(letter_data=form, api_key=api_user, template=template, reply_to_text=reply_to) else: if 'email_address' in form or 'phone_number' in form: notification = process_sms_or_email_notification( form=form, notification_type=notification_type, api_key=api_user, template=template, service=authenticated_service, reply_to_text=reply_to) else: if accept_recipient_identifiers_enabled(): notification = process_notification_with_recipient_identifier( form=form, notification_type=notification_type, api_key=api_user, template=template, service=authenticated_service, reply_to_text=reply_to) else: current_app.logger.debug( "Sending a notification without contact information is not implemented." ) return jsonify(result='error', message="Not Implemented"), 501 template_with_content.values = notification.personalisation if notification_type == SMS_TYPE: create_resp_partial = functools.partial( create_post_sms_response_from_notification, from_number=reply_to) elif notification_type == EMAIL_TYPE: create_resp_partial = functools.partial( create_post_email_response_from_notification, subject=template_with_content.subject) elif notification_type == LETTER_TYPE: create_resp_partial = functools.partial( create_post_letter_response_from_notification, subject=template_with_content.subject, ) resp = create_resp_partial(notification=notification, content=str(template_with_content), url_root=request.url_root, scheduled_for=scheduled_for) return jsonify(resp), 201