def usage(service_id):
    year, current_financial_year = requested_and_current_financial_year(
        request)

    free_sms_allowance = billing_api_client.get_free_sms_fragment_limit_for_year(
        service_id, year)
    units = billing_api_client.get_billable_units(service_id, year)
    yearly_usage = billing_api_client.get_service_usage(service_id, year)

    usage_template = 'views/usage.html'
    if 'letter' in current_service['permissions']:
        usage_template = 'views/usage-with-letters.html'
    return render_template(usage_template,
                           months=list(
                               get_free_paid_breakdown_for_billable_units(
                                   year, free_sms_allowance, units)),
                           selected_year=year,
                           years=get_tuples_of_financial_years(
                               partial(url_for,
                                       '.usage',
                                       service_id=service_id),
                               start=current_financial_year - 1,
                               end=current_financial_year + 1,
                           ),
                           **calculate_usage(yearly_usage, free_sms_allowance))
Beispiel #2
0
def get_dashboard_partials(service_id):
    all_statistics = template_statistics_client.get_template_statistics_for_service(
        service_id, limit_days=7)
    template_statistics = aggregate_template_usage(all_statistics)
    stats = aggregate_notifications_stats(all_statistics)
    column_width, max_notifiction_count = get_column_properties(3)

    dashboard_totals = get_dashboard_totals(stats),
    highest_notification_count = max(
        sum(value[key] for key in {'requested', 'failed', 'delivered'})
        for key, value in dashboard_totals[0].items())
    free_sms_allowance = billing_api_client.get_free_sms_fragment_limit_for_year(
        current_service.id,
        get_current_financial_year(),
    )
    yearly_usage = billing_api_client.get_service_usage(
        service_id,
        get_current_financial_year(),
    )
    return {
        'upcoming':
        render_template('views/dashboard/_upcoming.html', ),
        'inbox':
        render_template(
            'views/dashboard/_inbox.html',
            inbound_sms_summary=(
                service_api_client.get_inbound_sms_summary(service_id)
                if current_service.has_permission('inbound_sms') else None),
        ),
        'totals':
        render_template(
            'views/dashboard/_totals.html',
            service_id=service_id,
            statistics=dashboard_totals[0],
            column_width=column_width,
            smaller_font_size=(highest_notification_count >
                               max_notifiction_count),
        ),
        'template-statistics':
        render_template(
            'views/dashboard/template-statistics.html',
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row['count'] for row in template_statistics] or [0]),
        ),
        'jobs':
        render_template(
            'views/dashboard/_jobs.html',
            jobs=current_service.immediate_jobs,
        ),
        'usage':
        render_template(
            'views/dashboard/_usage.html',
            column_width=column_width,
            **calculate_usage(yearly_usage, free_sms_allowance),
        ),
    }
Beispiel #3
0
def service_settings(service_id):
    letter_branding_organisations = email_branding_client.get_letter_email_branding(
    )
    organisation = organisations_client.get_service_organisation(
        service_id).get('name', None)

    if current_service['email_branding']:
        email_branding = email_branding_client.get_email_branding(
            current_service['email_branding'])['email_branding']
    else:
        email_branding = None

    inbound_number = inbound_number_client.get_inbound_sms_number_for_service(
        service_id)
    disp_inbound_number = inbound_number['data'].get('number', '')
    reply_to_email_addresses = service_api_client.get_reply_to_email_addresses(
        service_id)
    reply_to_email_address_count = len(reply_to_email_addresses)
    default_reply_to_email_address = next(
        (x['email_address']
         for x in reply_to_email_addresses if x['is_default']), "Not set")
    letter_contact_details = service_api_client.get_letter_contacts(service_id)
    letter_contact_details_count = len(letter_contact_details)
    default_letter_contact_block = next(
        (Field(x['contact_block'], html='escape')
         for x in letter_contact_details if x['is_default']), "Not set")
    sms_senders = service_api_client.get_sms_senders(service_id)
    sms_sender_count = len(sms_senders)
    default_sms_sender = next((Field(x['sms_sender'], html='escape')
                               for x in sms_senders if x['is_default']),
                              "None")

    free_sms_fragment_limit = billing_api_client.get_free_sms_fragment_limit_for_year(
        service_id)
    data_retention = service_api_client.get_service_data_retention(service_id)

    return render_template(
        'views/service-settings.html',
        email_branding=email_branding,
        letter_branding=letter_branding_organisations.get(
            current_service.get('dvla_organisation', '001')),
        can_receive_inbound=('inbound_sms' in current_service['permissions']),
        inbound_number=disp_inbound_number,
        default_reply_to_email_address=default_reply_to_email_address,
        reply_to_email_address_count=reply_to_email_address_count,
        default_letter_contact_block=default_letter_contact_block,
        letter_contact_details_count=letter_contact_details_count,
        default_sms_sender=default_sms_sender,
        sms_sender_count=sms_sender_count,
        free_sms_fragment_limit=free_sms_fragment_limit,
        prefix_sms=current_service['prefix_sms'],
        organisation=organisation,
        data_retention=data_retention,
    )
def set_free_sms_allowance(service_id):

    form = FreeSMSAllowance(free_sms_allowance=billing_api_client.get_free_sms_fragment_limit_for_year(service_id))

    if form.validate_on_submit():
        billing_api_client.create_or_update_free_sms_fragment_limit(service_id, form.free_sms_allowance.data)

        return redirect(url_for('.service_settings', service_id=service_id))

    return render_template(
        'views/service-settings/set-free-sms-allowance.html',
        form=form,
    )
def get_dashboard_partials(service_id):
    all_statistics = template_statistics_client.get_template_statistics_for_service(
        service_id, limit_days=7)
    template_statistics = aggregate_template_usage(all_statistics)
    stats = aggregate_notifications_stats(all_statistics)

    dashboard_totals = get_dashboard_totals(stats),
    free_sms_allowance = billing_api_client.get_free_sms_fragment_limit_for_year(
        current_service.id,
        get_current_financial_year(),
    )
    yearly_usage = billing_api_client.get_service_usage(
        service_id,
        get_current_financial_year(),
    )
    return {
        'upcoming':
        render_template('views/dashboard/_upcoming.html', ),
        'inbox':
        render_template('views/dashboard/_inbox.html', ),
        'totals':
        render_template(
            'views/dashboard/_totals.html',
            service_id=service_id,
            statistics=dashboard_totals[0],
        ),
        'template-statistics':
        render_template(
            'views/dashboard/template-statistics.html',
            template_statistics=template_statistics,
            most_used_template_count=max(
                [row['count'] for row in template_statistics] or [0]),
        ),
        'usage':
        render_template(
            'views/dashboard/_usage.html',
            **calculate_usage(yearly_usage, free_sms_allowance),
        ),
    }