Exemple #1
0
def test_get_valid_government_domain_gets_most_specific_first():

    generic = AgreementInfo("gov.uk")
    assert generic.crown_status is None
    assert generic.owner is None
    assert generic.agreement_signed is None
    assert generic.as_human_readable == ('Can’t tell')

    specific = AgreementInfo("dacorum.gov.uk")
    assert specific.crown_status is False
    assert specific.owner == 'Dacorum Borough Council'
    assert specific.agreement_signed is True
    assert specific.as_human_readable == (
        'Yes, on behalf of Dacorum Borough Council')
Exemple #2
0
def test_get_valid_agreement_info_only_org_known():
    agreement_info = AgreementInfo('nhs.net')
    # Some parts of the NHS are Crown, some aren’t
    assert agreement_info.crown_status is None
    assert agreement_info.owner == 'NHS'
    assert agreement_info.agreement_signed is None
    assert agreement_info.as_human_readable == 'Can’t tell (organisation is NHS, crown status unknown)'
Exemple #3
0
def branding_request(service_id):

    form = BrandingOptionsEmail(options=current_service['branding'])

    if form.validate_on_submit():
        zendesk_client.create_ticket(
            subject='Email branding request - {}'.format(
                current_service['name']),
            message=('Organisation: {}\n'
                     'Service: {}\n'
                     '{}\n'
                     '\n---'
                     '\nBranding requested: {}').format(
                         AgreementInfo.from_current_user().
                         as_info_for_branding_request,
                         current_service['name'],
                         url_for('main.service_dashboard',
                                 service_id=current_service['id'],
                                 _external=True),
                         branding_options_dict[form.options.data],
                     ),
            ticket_type=zendesk_client.TYPE_QUESTION,
            user_email=current_user.email_address,
            user_name=current_user.name,
        )

        flash(('Thanks for your branding request. We’ll get back to you '
               'within one working day.'), 'default')
        return redirect(url_for('.service_settings', service_id=service_id))

    return render_template(
        'views/service-settings/branding/email-options.html',
        form=form,
    )
Exemple #4
0
def get_prefilled_message():
    agreement_info = AgreementInfo.from_current_user()
    return {
        'agreement': (agreement_info.as_request_for_agreement()),
        'agreement-with-owner':
        (agreement_info.as_request_for_agreement(with_owner=True)),
    }.get(request.args.get('body'), '')
Exemple #5
0
def test_get_valid_agreement_info_some_known_details():
    agreement_info = AgreementInfo("marinemanagement.org.uk")
    assert agreement_info.crown_status is None
    assert agreement_info.owner == "Marine Management Organisation"
    assert agreement_info.agreement_signed is True
    assert agreement_info.as_human_readable == (
        'Yes, on behalf of Marine Management Organisation')
Exemple #6
0
def test_get_valid_local_agreement_info_some_known_details():
    agreement_info = AgreementInfo("aberdeenshire.gov.uk")
    assert agreement_info.crown_status is False
    assert agreement_info.owner == "Aberdeenshire Council"
    assert agreement_info.agreement_signed is False
    assert agreement_info.as_human_readable == (
        'No (organisation is Aberdeenshire Council, a non-crown body)')
Exemple #7
0
def submit_request_to_go_live(service_id):
    form = RequestToGoLiveForm()

    if form.validate_on_submit():
        try:
            data = dict(
                service_name=current_service['name'],
                service_url=url_for('main.service_dashboard', service_id=current_service['id'], _external=True),
                requested_by="{} ({})".format(current_user.name, current_user.email_address),
                organisation_type=current_service['organisation_type'],
                agreement_signed=AgreementInfo.from_current_user().as_human_readable,
                channel=formatted_list(filter(None, (
                    'email' if form.channel_email.data else None,
                    'text messages' if form.channel_sms.data else None,
                    'letters' if form.channel_letter.data else None,
                )), before_each='', after_each=''),
                start_date=form.start_date.data,
                start_volume=form.start_volume.data,
                peak_volume=form.peak_volume.data,
                features=formatted_list(filter(None, (
                    'one off' if form.method_one_off.data else None,
                    'file upload' if form.method_upload.data else None,
                    'API' if form.method_api.data else None,
                )), before_each='', after_each='')
            )

            service_api_client.request_to_go_live(service_id, data)
        except HTTPError:
            flash('Error processing your request. Please try again later.', 'error')
        else:
            flash('We’ve received your request to go live. We will respond within the next 48 business hours.', 'default')
            return redirect(url_for('.service_settings', service_id=service_id))

    return render_template('views/service-settings/submit-request-to-go-live.html', form=form)
Exemple #8
0
def test_get_valid_agreement_info_known_details(domain_or_email_address):
    agreement_info = AgreementInfo(domain_or_email_address)
    assert agreement_info.crown_status is None
    assert agreement_info.owner == "Ministry of Housing, Communities & Local Government"
    assert agreement_info.agreement_signed is True
    assert agreement_info.as_human_readable == (
        'Yes, on behalf of Ministry of Housing, Communities & Local Government'
    )
def agreement():

    agreement_info = AgreementInfo.from_current_user()

    return render_template(
        'views/{}.html'.format(agreement_info.as_jinja_template),
        owner=agreement_info.owner,
        navigation_links=features_nav(),
    )
Exemple #10
0
def agreement():

    agreement_info = AgreementInfo.from_current_user()

    agreement_info.crown_status_or_404

    return render_template(
        'views/agreement.html',
        owner=agreement_info.owner,
        navigation_links=features_nav(),
    )
Exemple #11
0
def pricing():
    return render_template(
        'views/pricing.html',
        sms_rate=0.0158,
        international_sms_rates=sorted(
            [(cc, country['names'], country['billable_units'])
             for cc, country in INTERNATIONAL_BILLING_RATES.items()],
            key=lambda x: x[0]),
        search_form=SearchTemplatesForm(),
        agreement_info=AgreementInfo.from_current_user(),
    )
Exemple #12
0
def test_validate_government_domain_data():

    for domain in AgreementInfo.domains.keys():

        agreement_info = AgreementInfo(domain)

        assert agreement_info.crown_status in {True, False, None}

        assert (agreement_info.owner is None) or (isinstance(
            agreement_info.owner, str))

        assert agreement_info.agreement_signed in {True, False, None}
Exemple #13
0
def submit_request_to_go_live(service_id):
    form = RequestToGoLiveForm()

    if form.validate_on_submit():
        zendesk_client.create_ticket(
            subject='Request to go live - {}'.format(current_service['name']),
            message=(
                'Service: {}\n'
                '{}\n'
                '\n---'
                '\nOrganisation type: {}'
                '\nAgreement signed: {}'
                '\nChannel: {}\nStart date: {}\nStart volume: {}'
                '\nPeak volume: {}'
                '\nFeatures: {}').format(
                    current_service['name'],
                    url_for('main.service_dashboard',
                            service_id=current_service['id'],
                            _external=True),
                    current_service['organisation_type'],
                    AgreementInfo.from_current_user().as_human_readable,
                    formatted_list(filter(None, (
                        'email' if form.channel_email.data else None,
                        'text messages' if form.channel_sms.data else None,
                        'letters' if form.channel_letter.data else None,
                    )),
                                   before_each='',
                                   after_each=''), form.start_date.data,
                    form.start_volume.data, form.peak_volume.data,
                    formatted_list(filter(None, (
                        'one off' if form.method_one_off.data else None,
                        'file upload' if form.method_upload.data else None,
                        'API' if form.method_api.data else None,
                    )),
                                   before_each='',
                                   after_each='')),
            ticket_type=zendesk_client.TYPE_QUESTION,
            user_email=current_user.email_address,
            user_name=current_user.name)

        flash(
            'Thanks for your request to go live. We’ll get back to you within one working day.',
            'default')
        return redirect(url_for('.service_settings', service_id=service_id))

    return render_template(
        'views/service-settings/submit-request-to-go-live.html', form=form)
def public_agreement(variant):

    if variant not in {'crown', 'non-crown'}:
        abort(404)

    if request.endpoint == 'main.public_download_agreement':
        return send_file(**get_mou(
            organisation_is_crown=(variant == 'crown')
        ))

    agreement_info = AgreementInfo.from_current_user()

    return render_template(
        'views/agreement-public.html',
        owner=agreement_info.owner,
        download_link=url_for('.public_download_agreement', variant=variant),
    )
def submit_request_to_go_live(service_id):
    form = RequestToGoLiveForm()

    if form.validate_on_submit():
        try:
            deskpro_client.create_ticket(
                subject='Request to go live - {}'.format(current_service['name']),
                message=(
                    'On behalf of {} ({})\n'
                    '\n---'
                    '\nOrganisation type: {}'
                    '\nAgreement signed: {}'
                    '\nChannel: {}\nStart date: {}\nStart volume: {}'
                    '\nPeak volume: {}'
                    '\nFeatures: {}'
                ).format(
                    current_service['name'],
                    url_for('main.service_dashboard', service_id=current_service['id'], _external=True),
                    current_service['organisation_type'],
                    AgreementInfo.from_current_user().as_human_readable,
                    formatted_list(filter(None, (
                        'email' if form.channel_email.data else None,
                        'text messages' if form.channel_sms.data else None,
                        'letters' if form.channel_letter.data else None,
                    )), before_each='', after_each=''),
                    form.start_date.data,
                    form.start_volume.data,
                    form.peak_volume.data,
                    formatted_list(filter(None, (
                        'one off' if form.method_one_off.data else None,
                        'file upload' if form.method_upload.data else None,
                        'API' if form.method_api.data else None,
                    )), before_each='', after_each='')
                ),
                user_email=current_user.email_address,
                user_name=current_user.name
            )
        except DeskproError:
            abort(500, "Request to go live submission failed")

        flash('We’ve received your request to go live', 'default')
        return redirect(url_for('.service_settings', service_id=service_id))

    return render_template('views/service-settings/submit-request-to-go-live.html', form=form)
Exemple #16
0
def test_get_domain_info_for_branding_request():

    assert AgreementInfo("gov.uk").as_info_for_branding_request == (
        'Can’t tell (domain is gov.uk)')
    assert AgreementInfo("dacorum.gov.uk").as_info_for_branding_request == (
        'Dacorum Borough Council')
Exemple #17
0
def download_agreement():
    return send_file(
        **get_mou(AgreementInfo.from_current_user().crown_status_or_404))
Exemple #18
0
def test_get_valid_agreement_info_unknown_details(domain_or_email_address):
    government_domain = AgreementInfo(domain_or_email_address)
    assert government_domain.crown_status is None
    assert government_domain.owner is None
    assert government_domain.agreement_signed is None
    assert government_domain.as_human_readable == 'Can’t tell'
Exemple #19
0
def terms():
    return render_template(
        'views/terms-of-use.html',
        navigation_links=features_nav(),
        agreement_info=AgreementInfo.from_current_user(),
    )