Exemplo n.º 1
0
def service_add_email_reply_to(service_id):
    form = ServiceReplyToEmailForm()
    first_email_address = current_service.count_email_reply_to_addresses == 0
    is_default = first_email_address if first_email_address else form.is_default.data
    if form.validate_on_submit():
        try:
            notification_id = service_api_client.verify_reply_to_email_address(
                service_id, form.email_address.data)["data"]["id"]
        except HTTPError as e:
            error_msg = "Your service already uses '{}' as an email reply-to address.".format(
                form.email_address.data)
            if e.status_code == 400 and error_msg == e.message:
                flash(error_msg, 'error')
                return redirect(
                    url_for('.service_email_reply_to', service_id=service_id))
            else:
                raise e
        return redirect(
            url_for('.service_verify_reply_to_address',
                    service_id=service_id,
                    notification_id=notification_id,
                    is_default=is_default))

    return render_template('views/service-settings/email-reply-to/add.html',
                           form=form,
                           first_email_address=first_email_address)
def service_add_email_reply_to(service_id):
    form = ServiceReplyToEmailForm()
    first_email_address = current_service.count_email_reply_to_addresses == 0
    if form.validate_on_submit():
        service_api_client.add_reply_to_email_address(
            current_service.id,
            email_address=form.email_address.data,
            is_default=first_email_address
            if first_email_address else form.is_default.data)
        return redirect(
            url_for('.service_email_reply_to', service_id=service_id))
    return render_template('views/service-settings/email-reply-to/add.html',
                           form=form,
                           first_email_address=first_email_address)
Exemplo n.º 3
0
def service_edit_email_reply_to(service_id, reply_to_email_id):
    form = ServiceReplyToEmailForm()
    reply_to_email_address = current_service.get_email_reply_to_address(
        reply_to_email_id)
    if request.method == 'GET':
        form.email_address.data = reply_to_email_address['email_address']
        form.is_default.data = reply_to_email_address['is_default']
    if form.validate_on_submit():
        if form.email_address.data == reply_to_email_address["email_address"]:
            service_api_client.update_reply_to_email_address(
                current_service.id,
                reply_to_email_id=reply_to_email_id,
                email_address=form.email_address.data,
                is_default=True if reply_to_email_address['is_default'] else
                form.is_default.data)
            return redirect(
                url_for('.service_email_reply_to', service_id=service_id))
        try:
            notification_id = service_api_client.verify_reply_to_email_address(
                service_id, form.email_address.data)["data"]["id"]
        except HTTPError as e:
            error_msg = "Your service already uses ‘{}’ as a reply-to email address.".format(
                form.email_address.data)
            if e.status_code == 400 and error_msg == e.message:
                flash(error_msg, 'error')
                return redirect(
                    url_for('.service_email_reply_to', service_id=service_id))
            else:
                raise e
        return redirect(
            url_for('.service_verify_reply_to_address',
                    service_id=service_id,
                    notification_id=notification_id,
                    is_default=True if reply_to_email_address['is_default']
                    else form.is_default.data,
                    replace=reply_to_email_id))

    if (request.endpoint == "main.service_confirm_delete_email_reply_to"):
        flash(
            _('Are you sure you want to delete this reply-to email address?'),
            'delete')
    return render_template(
        'views/service-settings/email-reply-to/edit.html',
        form=form,
        reply_to_email_address_id=reply_to_email_id,
    )
def get_service_verify_reply_to_address_partials(service_id, notification_id):
    form = ServiceReplyToEmailForm()
    first_email_address = current_service.count_email_reply_to_addresses == 0
    notification = notification_api_client.get_notification(
        current_app.config["NOTIFY_SERVICE_ID"], notification_id)
    replace = request.args.get('replace', False)
    replace = False if replace == "False" else replace
    existing_is_default = False
    if replace:
        existing = current_service.get_email_reply_to_address(replace)
        existing_is_default = existing['is_default']
    verification_status = "pending"
    is_default = True if (request.args.get('is_default', False)
                          == "True") else False
    if notification["status"] in DELIVERED_STATUSES:
        verification_status = "success"
        if notification["to"] not in [
                i["email_address"]
                for i in current_service.email_reply_to_addresses
        ]:
            if replace:
                service_api_client.update_reply_to_email_address(
                    current_service.id,
                    replace,
                    email_address=notification["to"],
                    is_default=is_default)
            else:
                service_api_client.add_reply_to_email_address(
                    current_service.id,
                    email_address=notification["to"],
                    is_default=is_default)
    seconds_since_sending = (
        utc_string_to_aware_gmt_datetime(datetime.utcnow().isoformat()) -
        utc_string_to_aware_gmt_datetime(notification['created_at'])).seconds
    if notification["status"] in FAILURE_STATUSES or (
            notification["status"] in SENDING_STATUSES
            and seconds_since_sending >
            current_app.config['REPLY_TO_EMAIL_ADDRESS_VALIDATION_TIMEOUT']):
        verification_status = "failure"
        form.email_address.data = notification['to']
        form.is_default.data = is_default
    return {
        'status':
        render_template(
            'views/service-settings/email-reply-to/_verify-updates.html',
            reply_to_email_address=notification["to"],
            service_id=current_service.id,
            notification_id=notification_id,
            verification_status=verification_status,
            is_default=is_default,
            existing_is_default=existing_is_default,
            form=form,
            first_email_address=first_email_address,
            replace=replace),
        'stop':
        0 if verification_status == "pending" else 1
    }
Exemplo n.º 5
0
def service_edit_email_reply_to(service_id, reply_to_email_id):
    form = ServiceReplyToEmailForm()
    reply_to_email_address = service_api_client.get_reply_to_email_address(service_id, reply_to_email_id)
    if request.method == 'GET':
        form.email_address.data = reply_to_email_address['email_address']
        form.is_default.data = reply_to_email_address['is_default']
    if form.validate_on_submit():
        service_api_client.update_reply_to_email_address(
            current_service['id'],
            reply_to_email_id=reply_to_email_id,
            email_address=form.email_address.data,
            is_default=True if reply_to_email_address['is_default'] else form.is_default.data
        )
        return redirect(url_for('.service_email_reply_to', service_id=service_id))
    return render_template(
        'views/service-settings/email-reply-to/edit.html',
        form=form,
        reply_to_email_address_id=reply_to_email_address['id'])
def service_edit_email_reply_to(service_id, reply_to_email_id):
    form = ServiceReplyToEmailForm()
    reply_to_email_address = current_service.get_email_reply_to_address(
        reply_to_email_id)
    if request.method == 'GET':
        form.email_address.data = reply_to_email_address['email_address']
        form.is_default.data = reply_to_email_address['is_default']
    if form.validate_on_submit():
        service_api_client.update_reply_to_email_address(
            current_service.id,
            reply_to_email_id=reply_to_email_id,
            email_address=form.email_address.data,
            is_default=True
            if reply_to_email_address['is_default'] else form.is_default.data)
        return redirect(
            url_for('.service_email_reply_to', service_id=service_id))
    if (request.endpoint == "main.service_confirm_delete_email_reply_to"):
        flash("Are you sure you want to delete this email reply-to address?",
              'delete')
    return render_template(
        'views/service-settings/email-reply-to/edit.html',
        form=form,
        reply_to_email_address_id=reply_to_email_id,
    )