From 050c68142bd83bf66d6e33082a1866d8277b816c Mon Sep 17 00:00:00 2001 From: venusbb Date: Thu, 10 Aug 2017 10:29:31 +0100 Subject: [PATCH] merged codes --- app/main/forms.py | 4 ++ app/main/views/inbound_number.py | 16 ++----- app/main/views/service_settings.py | 46 +++++++++++++++++-- app/notify_client/inbound_number_client.py | 20 +++++++- app/templates/views/service-settings.html | 17 +++++-- .../confirm-inbound-number.html | 33 +++++++++++++ 6 files changed, 114 insertions(+), 22 deletions(-) create mode 100644 app/templates/views/service-settings/confirm-inbound-number.html diff --git a/app/main/forms.py b/app/main/forms.py index 0b92466dd..93a327c0b 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -504,6 +504,10 @@ class ServiceReplyToEmailFrom(Form): email_address = email_address(label='Email reply to address') +class InboudnSmsConfirm(Form): + inbound_number = '' + + class ServiceSmsSender(Form): sms_sender = StringField( 'Text message sender', diff --git a/app/main/views/inbound_number.py b/app/main/views/inbound_number.py index c21649f06..417f6d883 100644 --- a/app/main/views/inbound_number.py +++ b/app/main/views/inbound_number.py @@ -10,23 +10,13 @@ from flask_login import login_required from app.main import main from app import inbound_number_client from app.utils import user_has_permissions +from flask import jsonify @main.route('/inbound-sms-admin', methods=['GET', 'POST']) @login_required @user_has_permissions(admin_override=True) def inbound_sms_admin(): - #data = user_api_client.get_inboundsms_number_service() - data = inbound_number_client.get_inbound_sms_number_service() - - # return jsonify(data) - - return render_template('views/inbound_sms_admin.html', - inbound_num_list = data) - - - - - - + data = inbound_number_client.get_all_inbound_sms_number_service() + return render_template('views/inbound_sms_admin.html', inbound_num_list=data) diff --git a/app/main/views/service_settings.py b/app/main/views/service_settings.py index 7e694cb06..becb6f7ce 100644 --- a/app/main/views/service_settings.py +++ b/app/main/views/service_settings.py @@ -32,8 +32,9 @@ from app.main.forms import ( ServiceLetterContactBlock, ServiceBrandingOrg, LetterBranding, - ServiceInboundApiForm) -from app import user_api_client, current_service, organisations_client + ServiceInboundApiForm, + InboudnSmsConfirm) +from app import user_api_client, current_service, organisations_client, inbound_number_client dummy_bearer_token = 'bearer_token_set' @@ -65,6 +66,12 @@ def service_settings(service_id): else: inbound_api_url = '' + inbound_number = inbound_number_client.get_inbound_sms_number_for_service(service_id) + if inbound_number['data'] is None or inbound_number['data'] == '': + disp_inbound_number = '' + else: + disp_inbound_number = inbound_number['data']['number'] + return render_template( 'views/service-settings.html', organisation=organisation, @@ -73,7 +80,9 @@ def service_settings(service_id): ), can_receive_inbound=('inbound_sms' in current_service['permissions']), inbound_api_url=inbound_api_url, - letter_contact_block=Field(current_service['letter_contact_block'], html='escape') + letter_contact_block=Field(current_service['letter_contact_block'], html='escape'), + inbound_number=disp_inbound_number + ) @@ -219,7 +228,6 @@ def switch_service_permissions(service_id, permission, sms_sender=None): data = {'permissions': permissions} if sms_sender: data['sms_sender'] = sms_sender - service_api_client.update_service_with_properties(service_id, data) @@ -336,13 +344,43 @@ def service_set_sms_sender(service_id): sms_sender=form.sms_sender.data or None ) return redirect(url_for('.service_settings', service_id=service_id)) + if request.method == 'GET': form.sms_sender.data = current_service.get('sms_sender') + return render_template( 'views/service-settings/set-sms-sender.html', form=form) +@main.route("/services//service-settings/set-inbound-number", methods=['GET', 'POST']) +@login_required +@user_has_permissions('manage_settings', admin_override=True) +def service_set_inbound_number(service_id): + inbound_number = inbound_number_client.get_inbound_sms_number_for_service(service_id) + new_number = False + + if inbound_number['data'] == '' or inbound_number['data'] is None: + inbound_number = inbound_number_client.get_available_inbound_number(service_id) + new_number = True + + form = InboudnSmsConfirm() + if form.validate_on_submit(): + switch_service_permissions(current_service['id'], 'inbound_sms') + if new_number: + inbound_number_client.activate_inbound_sms_service(service_id, inbound_number['data']['id']) + return redirect(url_for('.service_settings', service_id=service_id)) + else: + inbound_number_client.reactivate_inbound_sms_service(inbound_number['data']['id']) + return redirect(url_for('.service_settings', service_id=service_id)) + + return render_template( + 'views/service-settings/confirm-inbound-number.html', + inbound_number=inbound_number['data']['number'], + form=form + ) + + @main.route("/services//service-settings/set-sms", methods=['GET']) @login_required @user_has_permissions('manage_settings', admin_override=True) diff --git a/app/notify_client/inbound_number_client.py b/app/notify_client/inbound_number_client.py index efa7fdfd4..dfaeedfe5 100644 --- a/app/notify_client/inbound_number_client.py +++ b/app/notify_client/inbound_number_client.py @@ -1,5 +1,6 @@ from app.notify_client import NotifyAdminAPIClient + class InboundNumberClient(NotifyAdminAPIClient): def __init__(self): @@ -10,6 +11,21 @@ class InboundNumberClient(NotifyAdminAPIClient): self.service_id = app.config['ADMIN_CLIENT_USER_NAME'] self.api_key = app.config['ADMIN_CLIENT_SECRET'] - def get_inbound_sms_number_service(self): + def get_all_inbound_sms_number_service(self): endpoint = '/inbound_number' - return self.get(endpoint) \ No newline at end of file + return self.get(endpoint) + + def get_inbound_sms_number_for_service(self, service_id): + return self.get('/inbound_number/{}/number'.format(service_id)) + + def activate_inbound_sms_service(self, service_id, inbound_number_id): + return self.post(url='/inbound_number/{}/service/{}/activate'.format(inbound_number_id, service_id), data={}) + + def reactivate_inbound_sms_service(self, inbound_number_id): + return self.post(url='/inbound_number/{}/reactivate'.format(inbound_number_id), data={}) + + def deactivate_inbound_sms_permission(self, inbound_number_id): + return self.post(url='/inbound_number/{}/off'.format(inbound_number_id), data={}) + + def get_available_inbound_number(self, service_id): + return self.get(url='/inbound_number/{}/available'.format(service_id)) diff --git a/app/templates/views/service-settings.html b/app/templates/views/service-settings.html index 371f37c82..1b829858f 100644 --- a/app/templates/views/service-settings.html +++ b/app/templates/views/service-settings.html @@ -53,9 +53,14 @@ {% if 'sms' in current_service.permissions %} {% call row() %} + {{ text_field('Text message sender') }} - {{ text_field(current_service.sms_sender) }} - {% if current_user.has_permissions([], admin_override=True) or not can_receive_inbound %} + {% if can_receive_inbound %} + {{ text_field(inbound_number) }} + {% else %} + {{ text_field(current_service.sms_sender) }} + {% endif %} + {% if (current_user.has_permissions([], admin_override=True) or not can_receive_inbound) and not can_receive_inbound %} {{ edit_field('Change', url_for('.service_set_sms_sender', service_id=current_service.id, set_inbound_sms=False)) }} {% else %} {{ text_field('') }} @@ -198,9 +203,15 @@
  • + {% if can_receive_inbound %} - {{ 'Stop inbound sms' if can_receive_inbound else 'Allow inbound sms' }} + Stop inbound sms + {% else %} + + Allow inbound sms + + {% endif %}
  • {% endif %} {% if current_service.active %} diff --git a/app/templates/views/service-settings/confirm-inbound-number.html b/app/templates/views/service-settings/confirm-inbound-number.html new file mode 100644 index 000000000..35df91618 --- /dev/null +++ b/app/templates/views/service-settings/confirm-inbound-number.html @@ -0,0 +1,33 @@ +{% extends "withnav_template.html" %} +{% from "components/table.html" import text_field, edit_field %} +{% from "components/page-footer.html" import page_footer %} + +{% block service_page_title %} + Inbound SMS Assigned Number +{% endblock %} + +{% block maincolumn_content %} + +

    Inbound SMS Assigned Nubmer

    + +

    + The following number has been assigned to your inbound sms service. +

    + +

    + {{inbound_number}} +

    + +

    + If you would like to continue and activate the inbound sms service, please click the confirm button. +

    +
    + + {{ page_footer( + 'Confirm', + back_link=url_for('.service_settings', service_id=current_service.id), + back_link_text='Back to settings' + ) }} +
    + +{% endblock %}