Exemplo n.º 1
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)
Exemplo n.º 2
0
 def format_permissions(self):
     added = list(sorted(set(self.value_to) - set(self.value_from)))
     removed = list(sorted(set(self.value_from) - set(self.value_to)))
     if removed and added:
         return 'Removed {} from this service’s permissions, added {}'.format(
             formatted_list(removed),
             formatted_list(added),
         )
     if added:
         return 'Added {} to this service’s permissions'.format(
             formatted_list(added))
     if removed:
         return 'Removed {} from this service’s permissions'.format(
             formatted_list(removed))
 def __init__(
     self,
     template,
     values=None,
     image_url=None,
     page_count=None,
     contact_block=None,
     postage=None,
 ):
     super().__init__(template, values, contact_block=contact_block)
     if not image_url:
         raise TypeError('image_url is required')
     if not page_count:
         raise TypeError('page_count is required')
     if postage not in [None] + list(self.allowed_postage_types):
         raise TypeError('postage must be None, {}'.format(
             formatted_list(
                 self.allowed_postage_types,
                 conjunction='or',
                 before_each='\'',
                 after_each='\'',
             )))
     self.image_url = image_url
     self.page_count = int(page_count)
     self._postage = postage
Exemplo n.º 4
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
    def get_examples(self):
        # we show up to four things. three areas, then either a fourth area if there are exactly four, or "and X more".
        areas_to_show = sorted(area.name for area in self)[:4]

        count_of_areas_not_named = len(self.items) - 3
        # if there's exactly one area not named, there are exactly four - we should just show all four.
        if count_of_areas_not_named > 1:
            areas_to_show = areas_to_show[:3] + [f'{count_of_areas_not_named} more…']

        return formatted_list(areas_to_show, before_each='', after_each='')
Exemplo n.º 7
0
def service_request_to_go_live(service_id):
    form = RequestToGoLiveForm()

    if form.validate_on_submit():

        data = {
            'person_email':
            current_user.email_address,
            'person_name':
            current_user.name,
            'department_id':
            current_app.config.get('DESKPRO_DEPT_ID'),
            'agent_team_id':
            current_app.config.get('DESKPRO_ASSIGNED_AGENT_TEAM_ID'),
            'subject':
            'Request to go live - {}'.format(current_service['name']),
            'message':
            ('On behalf of {} ({})\n\nExpected usage\n---'
             '\nMOU in place: {}'
             '\nChannel: {}\nStart date: {}\nStart volume: {}'
             '\nPeak volume: {}\nUpload or API: {}').format(
                 current_service['name'],
                 url_for('main.service_dashboard',
                         service_id=current_service['id'],
                         _external=True), form.mou.data,
                 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,
                 form.upload_or_api.data)
        }
        headers = {
            "X-DeskPRO-API-Key": current_app.config.get('DESKPRO_API_KEY'),
            'Content-Type': "application/x-www-form-urlencoded"
        }
        resp = requests.post(current_app.config.get('DESKPRO_API_HOST') +
                             '/api/tickets',
                             data=data,
                             headers=headers)
        if resp.status_code != 201:
            current_app.logger.error(
                "Deskpro create ticket request failed with {} '{}'".format(
                    resp.status_code, resp.json()))
            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/request-to-go-live.html',
                           form=form)
Exemplo n.º 8
0
 def __call__(self, form, field):
     non_sms_characters = sorted(
         list(SanitiseSMS.get_non_compatible_characters(field.data)))
     if non_sms_characters:
         raise ValidationError(
             'You cannot use {} in text messages. {} will not show up properly on everyone’s phones.'
             .format(
                 formatted_list(non_sms_characters,
                                conjunction='or',
                                before_each='',
                                after_each=''),
                 ('It' if len(non_sms_characters) == 1 else 'They')))
Exemplo n.º 9
0
def test_formatted_list_returns_markup():
    assert isinstance(formatted_list([0]), Markup)
Exemplo n.º 10
0
def test_formatted_list(items, kwargs, expected_output):
    assert formatted_list(items, **kwargs) == expected_output
Exemplo n.º 11
0
    repo.insert_broadcast_areas(areas_to_add, keep_old_polygons)


# cheeky global variable
keep_old_polygons = sys.argv[1:] == ['--keep-old-polygons']
print('keep_old_polygons: ', keep_old_polygons)  # noqa: T001

repo = BroadcastAreasRepository()

if keep_old_polygons:
    repo.delete_library_data()
else:
    repo.delete_db()
    repo.create_tables()
add_test_areas()
add_countries()
add_wards_local_authorities_and_counties()

most_detailed_polygons = formatted_list(
    sorted(point_counts, reverse=True)[:5],
    before_each='',
    after_each='',
)

print(  # noqa: T001
    '\n'
    'DONE\n'
    f'    Processed {len(point_counts):,} polygons.\n'
    f'    Highest point counts once simplifed: {most_detailed_polygons}\n')