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))
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), ), }
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), ), }