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')
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)'
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, )
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'), '')
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')
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)')
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)
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(), )
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(), )
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(), )
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}
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)
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')
def download_agreement(): return send_file( **get_mou(AgreementInfo.from_current_user().crown_status_or_404))
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'
def terms(): return render_template( 'views/terms-of-use.html', navigation_links=features_nav(), agreement_info=AgreementInfo.from_current_user(), )